⚠️ WARNING: This documentation has been summarized by Claude (an AI language model) and is pending human review. Some information may be incomplete or require verification against official ORCID documentation.
This developer guide provides technical instructions for implementing ORCID Trust Markers and Record Summaries in your applications. Whether you're developing a journal submission system, institutional repository, funding management system, or any other scholarly application, this guide will help you leverage ORCID's infrastructure to enhance research integrity.
ORCID Trust Markers are validated pieces of information in ORCID records that have been added by trusted member organizations. Record Summaries provide an easy way to access and display this validated information in a user-friendly format.
ORCID provides two API levels:
Feature | Public API | Member API |
---|---|---|
Read public data | ✓ | ✓ |
Search registry | ✓ | ✓ |
Collect authenticated iDs | ✓ | ✓ |
Read limited-access data | ✓ | |
Add/update records | ✓ | |
Get record summaries | ✓ |
Base URLs:
https://orcid.org
(API: https://api.orcid.org
and https://pub.orcid.org
)https://sandbox.orcid.org
(API: https://api.sandbox.orcid.org
and https://pub.sandbox.orcid.org
)API Versions:
/v3.0/[ORCID-iD]/[endpoint]
ORCID uses OAuth 2.0 for authentication and authorization:
https://[environment]/oauth/authorize?client_id=[Your client ID]&response_type=code&scope=[requested scopes]&redirect_uri=[Your registered redirect URI]
Available scopes:
/authenticate
: Basic access to get authenticated ORCID iDs/read-public
: Read public data and summaries (Member API)/read-limited
: Read trusted-parties-only data/activities/update
: Update activities sections (works, funding, etc.)/person/update
: Update person sections (other names, keywords, etc.)POST https://[environment]/oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code=[Authorization code from step 1]
&client_id=[Your client ID]
&client_secret=[Your client secret]
&redirect_uri=[Your registered redirect URI]
GET https://api.[environment]/v3.0/[ORCID iD]/[endpoint]
Accept: application/vnd.orcid+xml or application/vnd.orcid+json
Authorization: Bearer [Access token]
Record Summaries provide a concise view of an ORCID record's Trust Markers. There are two methods for accessing them:
This returns the complete record with all public data:
GET https://api.[environment]/v3.0/[ORCID iD]/record
Accept: application/vnd.orcid+xml or application/vnd.orcid+json
Authorization: Bearer [Access token]
For Member API users, the /summary
endpoint specifically returns record summary data:
GET https://api.[environment]/v3.0/[ORCID iD]/summary
Accept: application/vnd.orcid+xml or application/vnd.orcid+json
Authorization: Bearer [Access token]
When reading record data through the API, you'll need to parse the response to identify Trust Markers. Trust Markers are identified by their source - if the source is an organization rather than the individual, it's a Trust Marker.
<activities:activities>
<activities:employment-summary put-code="1234" visibility="public" display-index="0" path="/0000-0001-2345-6789/employment/1234">
<common:created-date>2020-01-01T00:00:00</common:created-date>
<common:source>
<common:source-client-id>
<common:uri>https://orcid.org/client/APP-ABCDEFG</common:uri>
<common:path>APP-ABCDEFG</common:path>
</common:source-client-id>
<common:source-name>University of Example</common:source-name>
</common:source>
<!-- Employment details -->
</activities:employment-summary>
</activities:activities>
The presence of <common:source-client-id>
in the source indicates this is a Trust Marker added by an organization.
{
"employment-summary": [
{
"put-code": 1234,
"visibility": "public",
"source": {
"source-client-id": {
"uri": "https://orcid.org/client/APP-ABCDEFG",
"path": "APP-ABCDEFG"
},
"source-name": "University of Example"
},
"organization": {
"name": "University of Example",
"address": {
"city": "Exampleville",
"country": "US"
}
}
}
]
}
Look for the presence of source-client-id
to identify organizational Trust Markers.
ORCID member organizations can add Trust Markers to ORCID records. This requires:
POST https://api.[environment]/v3.0/[ORCID iD]/employment
Content-Type: application/vnd.orcid+xml or application/vnd.orcid+json
Authorization: Bearer [Access token with /activities/update scope]
XML Payload:
<employment:employment>
<organization>
<name>University of Example</name>
<address>
<city>Exampleville</city>
<country>US</country>
</address>
</organization>
<department-name>Department of Example Studies</department-name>
<role-title>Professor</role-title>
<start-date>
<year>2020</year>
<month>01</month>
<day>01</day>
</start-date>
</employment:employment>
JSON Payload:
{
"organization": {
"name": "University of Example",
"address": {
"city": "Exampleville",
"country": "US"
}
},
"department-name": "Department of Example Studies",
"role-title": "Professor",
"start-date": {
"year": {
"value": "2020"
},
"month": {
"value": "01"
},
"day": {
"value": "01"
}
}
}
Upon successful addition, you'll receive a response with the new put-code
for the item. Store this code to allow for updates later.
Here's an example workflow for integrating ORCID Trust Markers in a manuscript submission system:
// Create authorization URL
const authUrl = 'https://orcid.org/oauth/authorize' +
'?client_id=YOUR_CLIENT_ID' +
'&response_type=code' +
'&scope=/authenticate' +
'&redirect_uri=https://your-journal.com/orcid-callback';
// Redirect user to ORCID for authentication
window.location.href = authUrl;
// Exchange authorization code for access token
async function getToken(authCode) {
const response = await fetch('https://orcid.org/oauth/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({
'grant_type': 'authorization_code',
'code': authCode,
'client_id': 'YOUR_CLIENT_ID',
'client_secret': 'YOUR_CLIENT_SECRET',
'redirect_uri': 'https://your-journal.com/orcid-callback'
})
});
return await response.json();
}
async function getRecordSummary(orcidId, accessToken) {
const response = await fetch(`https://api.orcid.org/v3.0/${orcidId}/record`, {
headers: {
'Accept': 'application/vnd.orcid+json',
'Authorization': `Bearer ${accessToken}`
}
});
return await response.json();
}
function displayTrustMarkers(recordData) {
// Count validated vs. self-asserted works
const works = recordData.activities['works'];
const validatedWorks = works.filter(work => work.source['source-client-id']);
const selfAssertedWorks = works.filter(work => !work.source['source-client-id']);
// Display counts
document.getElementById('validated-works').textContent = validatedWorks.length;
document.getElementById('self-asserted-works').textContent = selfAssertedWorks.length;
// Similar processing for other sections...
}
async function addPublication(orcidId, accessToken, metadata) {
const response = await fetch(`https://api.orcid.org/v3.0/${orcidId}/work`, {
method: 'POST',
headers: {
'Content-Type': 'application/vnd.orcid+json',
'Authorization': `Bearer ${accessToken}`
},
body: JSON.stringify({
// Format work metadata according to ORCID schema
})
});
return await response.json();
}
For institutions wanting to assert affiliations to their researchers' ORCID records:
/activities/update
for affiliations)