Overview
This API provides access to publication and project data from the TUM research information system (Pure). You can retrieve publications and projects associated with specific organizations or persons, with optional filtering by type.
https://fisapi.it.tum.de/
Available Data
Publications and projects count only what the API returns (see the notes on each endpoint); authors and organizations count all synced records.
Pagination
/publications and /projects are paginated: 50 items per page by default, at least 10 and at most 100 (per_page). page is capped at 10000. Invalid or out-of-range page/per_page values don't cause an error: a non-numeric value falls back to the default and other values are clamped; the pagination object in the response shows the values used. A page past the last page returns 404. Results are sorted with a stable tie-breaker, so walking the pages neither skips nor repeats records. /publication-types is not paginated.
Caching
Successful responses carry an ETag. Send it back in If-None-Match and you get 304 Not Modified without a body if nothing changed. Cache-Control is private, max-age=60, stale-while-revalidate=300 for /publications and /projects and private, max-age=3600, stale-while-revalidate=86400 for /publication-types; errors are sent with no-store. The server also caches results: up to 5 minutes for publications and projects (the availableTypes list up to 15 minutes), up to 24 hours for /publication-types, so changes in Pure can take that long to appear after they have been synced.
Rate Limits
Requests are limited per API token in fixed 60-second windows (60 requests per minute unless the operator configured otherwise). Over the limit you get 429 with a Retry-After header giving the seconds until the window resets. Repeated failed authentication from one IP address is limited the same way. The search tools on this page are limited per IP address, and the API Tester to 20 requests per minute per IP address.
Methods and CORS
All endpoints are read-only and accept GET and HEAD; other methods get 405 with an Allow: GET, HEAD header. Browsers can call /publications, /projects and /publication-types from the allowed origins (HTTPS pages on the configured domains and their subdomains, plus http://localhost); the CORS preflight (OPTIONS) is answered with 204 without a token.
Authentication
/publications, /projects, /publication-types and /metrics require authentication using a Bearer token. You must include the token in the Authorization header of every request to them. /health and this documentation page need no token.
Using Your Token
Include the token in the Authorization header:
Authorization: Bearer YOUR_API_TOKEN
Example Request
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
"https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC"
Error Responses
| Status | Response | Description |
|---|---|---|
401 |
{"error": "Missing Authorization header. Use: Authorization: Bearer <token>"} |
No token provided, the header isn't Bearer <token>, or the token is longer than 64 characters |
401 |
{"error": "Invalid API token"} |
Token not recognized |
401 |
{"error": "API token has been revoked"} |
Token was revoked by administrator |
429 |
{"error": "Rate limit exceeded. Try again later."} |
Your token's rate limit is used up, or too many failed authentication attempts came from your IP address. Wait for the number of seconds in Retry-After. |
503 |
{"error": "Authentication service unavailable"} |
The token could not be checked (server-side problem). Retry after the seconds in Retry-After. |
All 401 responses include a WWW-Authenticate: Bearer header.
API Endpoints
Retrieve publications by organization or person TUM ID. When querying by organization, publications from all child organizations in the hierarchy are automatically included.
Note: Only publications that are public in Pure are returned: visibility FREE and either workflow step approved or exclusively external organization affiliations (Pure assigns no workflow to those). Entries in intermediate workflow states (entryInProgress, forApproval, forRevalidation) and non-public entries are excluded.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
tumId |
string | Required | The TUM ID of the organization or person. Supports multiple IDs separated by commas (e.g., TUS1ABC,TUS2DEF). Max 1000 characters. |
by |
string | Required | Filter type: org for organization, person for person |
type |
string | Optional | Filter by publication type, exact match (see available types below). Max 255 characters. |
keywords |
string | Optional | Filter on the publication's keywords. Max 200 characters. Terms are separated by spaces, commas or semicolons. A publication matches if it has any of the terms (machine learning finds "machine" or "learning"; it is not a phrase search). Words of 3 or more letters/digits match whole indexed words only (no substrings or prefixes), and common stopwords such as "the" or "and" are ignored. Other terms such as AI, e-learning or C# match as whole terms, case-insensitively (at most 5 of them). Single characters are ignored. |
year |
integer | Optional | Filter by publication year (4-digit, e.g. 2024). Range: 1900-2100. |
sort |
string | Optional | Sort field: year (publicationDate) or title. Default: year. |
order |
string | Optional | Sort direction: asc or desc. Default: desc. |
page |
integer | Optional | Page number for pagination (default: 1, max: 10000) |
per_page |
integer | Optional | Number of results per page (min: 10, max: 100, default: 50) |
Response
{
"orgTumIds": ["TUS1ABC"], // or "personTumIds" depending on 'by' parameter
// Array of successfully found TUM IDs
"pagination": {
"page": 1,
"per_page": 50,
"total": 150,
"total_pages": 3
},
"count": 50, // Number of publications in current page
"sort": "year", // active sort field
"order": "desc", // active sort direction
"availableTypes": ["Article", "Chapter", "Conference contribution"],
// distinct publication types in the filtered set
// (ignores the active type filter, so consumers can switch)
"filteredByType": "Article", // only present if type filter was used
"filteredByKeywords": "machine learning", // only present if the keywords filter was applied
"filteredByYear": 2024, // only present if year filter was used
"notFoundIds": ["TUS9XYZ"], // only present if some (not all) IDs were not found
"publications": [
{
"uuid": "12345678-1234-1234-1234-123456789abc",
"typeDiscriminator": "JournalArticle",
"title": "Publication Title",
"subTitle": "Optional Subtitle",
"abstract": "This paper presents...",
"keywords": "machine learning; artificial intelligence; healthcare",
"type": "Article",
"publicationStatus": "Published", // Pure's current publication status
"publicationDate": 2024, // year of that status (integer); the year filter matches it
"authors": "Smith, John; Doe, Jane",
"doi": "10.1234/example.2024.001",
"pages": "1-15",
"articleNumber": "e12345",
"numberOfPages": 15,
"volume": "42",
"journalNumber": "3",
"journalTitle": "Journal of Example Research",
"issn": "1234-5678",
"isbn": "978-3-16-148410-0",
"publisher": "Springer Nature",
"peerReview": 1, // 1, 0, or null if Pure doesn't say
"openAccess": "Gold",
"patentNumber": null, // patent-specific (null for non-patents)
"ipc": null, // patent-specific, IPC codes joined with "; "
"patentDate": null, // patent filing/grant date (YYYY-MM-DD)
"priorityDate": null, // patent priority date (YYYY-MM-DD)
"priorityNumber": null, // patent priority application number
"country": null, // patent jurisdiction (e.g., "Germany")
"url": "https://portal.fis.tum.de/en/publications/12345678-1234-1234-1234-123456789abc"
}
]
}
Patent records populate the patent-specific fields (e.g. "patentNumber": "WO 2019/243144 A1", "country": "Germany"); they are null for all other publication types. Fields Pure doesn't provide are null or empty. If only some of the given IDs are unknown, the response is 200 and lists them in notFoundIds; if none is known, it is 404.
Available Publication Types
Retrieve all currently available publication types. This endpoint returns a simple list of all publication type values that can be used with the type parameter in the publications endpoint. It applies the same visibility rule as /publications, so it lists only types that /publications can return.
Parameters
This endpoint takes no parameters and is not paginated. The list is cached on the server for up to 24 hours.
Response
{
"count": 15,
"types": [
"Article",
"Book",
"Conference",
"Contribution to Book/Anthology",
"Patent",
"Thesis",
"..."
]
}
Retrieve projects by organization or person TUM ID. With by=org, a project matches when its managing organization is one of the given organizations or one of their sub-organizations; participating organizations are not considered. With by=person, a project matches when the person is a participant.
Note: Only projects with Pure workflow step validated are returned. Projects in earlier states (entryInProgress, forApproval, approved, forRevalidation) and projects without a workflow step are excluded.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
tumId |
string | Required | The TUM ID of the organization or person. Supports multiple IDs separated by commas (e.g., TUS1ABC,TUS2DEF). Max 1000 characters. |
by |
string | Required | Filter type: org for organization, person for person |
type |
string | Optional | Filter by project type, exact match (e.g., "Research"). Max 255 characters. |
year |
integer | Optional | Filter by project start year (4-digit, e.g. 2024). Range: 1900-2100. |
sort |
string | Optional | Sort field: year (startDate) or title. Default: year. |
order |
string | Optional | Sort direction: asc or desc. Default: desc. |
page |
integer | Optional | Page number for pagination (default: 1, max: 10000) |
per_page |
integer | Optional | Number of results per page (min: 10, max: 100, default: 50) |
Response
{
"orgTumIds": ["TUS1ABC"], // or "personTumIds" depending on 'by' parameter
// Array of successfully found TUM IDs
"pagination": {
"page": 1,
"per_page": 50,
"total": 75,
"total_pages": 2
},
"count": 50, // Number of projects in current page
"sort": "year", // active sort field
"order": "desc", // active sort direction
"filteredByType": "Research", // only present if type filter was used
"filteredByYear": 2024, // only present if year filter was used
"notFoundIds": ["TUS9XYZ"], // only present if some (not all) IDs were not found
"projects": [
{
"uuid": "...",
"title": "Project Title",
"description": "Project description...",
"type": "Research",
"startDate": "2020-01-01",
"endDate": "2023-12-31",
"managingOrgUuid": "...", // UUID of the managing organization
"url": "https://gepris.dfg.de/...", // first external link in Pure (may be empty)
"portalUrl": "https://portal.fis.tum.de/en/projects/..."
}
]
}
The keywords parameter is not supported for projects and is ignored.
Database liveness check for load balancers and monitoring. No authentication, no rate limit.
Response
// 200 OK
{"status": "healthy", "checks": {"database": "up"}}
// 503 Service Unavailable
{"status": "unhealthy", "checks": {"database": "down"}}
Prometheus metrics in text format (text/plain; version=0.0.4): request counters and latency histograms per endpoint, database status, record counts and last sync times. Requires a Bearer token and counts against its rate limit.
Tools
Search for organization TUM IDs by name. Enter part of the organization name to find matching entries.
Test API endpoints interactively. Build queries using the form below or enter a complete URL directly.
Query Builder
Note: The API Tester uses an internal token for demonstration purposes. To test with your own token, use curl or your preferred HTTP client.
Use these type values with the type parameter to filter publications.
| Type Value | Example Usage |
|---|---|
Abstract |
/publications?by=org&tumId=...&type=Abstract |
Anthology |
/publications?by=org&tumId=...&type=Anthology |
Article |
/publications?by=org&tumId=...&type=Article |
Book |
/publications?by=org&tumId=...&type=Book |
Chapter |
/publications?by=org&tumId=...&type=Chapter |
Comment/debate |
/publications?by=org&tumId=...&type=Comment%2Fdebate |
Commissioned report |
/publications?by=org&tumId=...&type=Commissioned+report |
Conference article |
/publications?by=org&tumId=...&type=Conference+article |
Conference contribution |
/publications?by=org&tumId=...&type=Conference+contribution |
Discussion paper |
/publications?by=org&tumId=...&type=Discussion+paper |
Doctoral Thesis |
/publications?by=org&tumId=...&type=Doctoral+Thesis |
Editorial |
/publications?by=org&tumId=...&type=Editorial |
Entry for encyclopedia/dictionary |
/publications?by=org&tumId=...&type=Entry+for+encyclopedia%2Fdictionary |
Featured article |
/publications?by=org&tumId=...&type=Featured+article |
Foreword/postscript |
/publications?by=org&tumId=...&type=Foreword%2Fpostscript |
Letter |
/publications?by=org&tumId=...&type=Letter |
Master's Thesis |
/publications?by=org&tumId=...&type=Master%27s+Thesis |
Meeting Abstract |
/publications?by=org&tumId=...&type=Meeting+Abstract |
Other contribution |
/publications?by=org&tumId=...&type=Other+contribution |
Paper |
/publications?by=org&tumId=...&type=Paper |
Patent |
/publications?by=org&tumId=...&type=Patent |
Poster |
/publications?by=org&tumId=...&type=Poster |
Preprint |
/publications?by=org&tumId=...&type=Preprint |
Review article |
/publications?by=org&tumId=...&type=Review+article |
Scientific review |
/publications?by=org&tumId=...&type=Scientific+review |
Short survey |
/publications?by=org&tumId=...&type=Short+survey |
Software |
/publications?by=org&tumId=...&type=Software |
Working paper |
/publications?by=org&tumId=...&type=Working+paper |
Usage Examples
Get all available publication types
GET https://fisapi.it.tum.de/publication-types
Get all publications by organization
GET https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC
Get all publications by person
GET https://fisapi.it.tum.de/publications?by=person&tumId=go42tum
Get publications from multiple orgs
GET https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC,TUS2DEF
Get publications from multiple authors
GET https://fisapi.it.tum.de/publications?by=person&tumId=go42tum,ab12tum
Get only articles by organization
GET https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&type=Article
Get conference papers by person
GET https://fisapi.it.tum.de/publications?by=person&tumId=go42tum&type=Conference
Filter by keywords
GET https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&keywords=machine%20learning
Combine type and keywords filters
GET https://fisapi.it.tum.de/publications?by=person&tumId=go42tum&type=Article&keywords=AI
Filter publications by year
GET https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&year=2024
Filter projects by start year
GET https://fisapi.it.tum.de/projects?by=org&tumId=TUS1ABC&year=2024
Sort publications by title (A-Z)
GET https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&sort=title&order=asc
Sort projects by year (oldest first)
GET https://fisapi.it.tum.de/projects?by=org&tumId=TUS1ABC&sort=year&order=asc
Get all projects by organization
GET https://fisapi.it.tum.de/projects?by=org&tumId=TUS1ABC
Get all projects by person
GET https://fisapi.it.tum.de/projects?by=person&tumId=go42tum
Get projects from multiple orgs
GET https://fisapi.it.tum.de/projects?by=org&tumId=TUS1ABC,TUS2DEF
Get projects from multiple persons
GET https://fisapi.it.tum.de/projects?by=person&tumId=go42tum,ab12tum
Get second page of publications
GET https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&page=2
Get 25 publications per page
GET https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&per_page=25
Combine pagination with filters
GET https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&type=Article&page=3&per_page=20
JavaScript Example
// API token - replace with your actual token
const API_TOKEN = 'YOUR_API_TOKEN';
// Helper function to make authenticated requests
async function apiFetch(url) {
const response = await fetch(url, {
headers: {
'Authorization': `Bearer ${API_TOKEN}`
}
});
if (!response.ok) {
throw new Error(`API error: ${response.status}`);
}
return response.json();
}
// Fetch all available publication types
async function getPublicationTypes() {
const url = 'https://fisapi.it.tum.de/publication-types';
const data = await apiFetch(url);
console.log(`Found ${data.count} publication types`);
return data.types;
}
// Example usage
getPublicationTypes()
.then(types => {
console.log('Available types:', types);
});
// Fetch publications for one or more organizations
async function getOrgPublications(orgTumIds, options = {}) {
// orgTumIds can be a string or an array
const ids = Array.isArray(orgTumIds) ? orgTumIds.join(',') : orgTumIds;
let url = `https://fisapi.it.tum.de/publications?by=org&tumId=${ids}`;
if (options.type) {
url += `&type=${encodeURIComponent(options.type)}`;
}
if (options.keywords) {
url += `&keywords=${encodeURIComponent(options.keywords)}`;
}
if (options.year) {
url += `&year=${encodeURIComponent(options.year)}`;
}
if (options.sort) {
url += `&sort=${encodeURIComponent(options.sort)}`;
}
if (options.order) {
url += `&order=${encodeURIComponent(options.order)}`;
}
if (options.page) {
url += `&page=${options.page}`;
}
if (options.per_page) {
url += `&per_page=${options.per_page}`;
}
const data = await apiFetch(url);
console.log(`Found ${data.pagination.total} total publications`);
console.log(`Page ${data.pagination.page} of ${data.pagination.total_pages}`);
if (data.notFoundIds && data.notFoundIds.length > 0) {
console.log(`Not found: ${data.notFoundIds.join(', ')}`);
}
return data;
}
// Example usage - single organization with type filter
getOrgPublications('TUS1ABC', { type: 'Article' })
.then(data => {
data.publications.forEach(pub => {
console.log(`${pub.title} (${pub.publicationDate})`);
});
});
// Example usage - filter by keywords with pagination
getOrgPublications('TUS1ABC', { keywords: 'machine learning', page: 1, per_page: 25 })
.then(data => {
console.log(`Showing ${data.count} of ${data.pagination.total} results`);
data.publications.forEach(pub => {
console.log(`${pub.title} - Keywords: ${pub.keywords}`);
});
});
// Example usage - combine type and keywords filters with pagination
getOrgPublications('TUS1ABC', { type: 'Article', keywords: 'AI', page: 2 })
.then(data => {
data.publications.forEach(pub => {
console.log(`${pub.title} (${pub.publicationDate})`);
});
});
cURL Example
# Set your API token (replace with your actual token)
TOKEN="YOUR_API_TOKEN"
# Get all available publication types
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/publication-types"
# Get all publications for an organization
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC"
# Get publications from multiple organizations
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC,TUS2DEF"
# Get only journal articles
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&type=Article"
# Filter by keywords
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&keywords=machine%20learning"
# Combine type and keywords filters
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/publications?by=person&tumId=go42tum&type=Article&keywords=AI"
# Filter publications by year
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&year=2024"
# Filter projects by start year
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/projects?by=org&tumId=TUS1ABC&year=2024"
# Sort publications alphabetically by title
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&sort=title&order=asc"
# Sort projects by year ascending
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/projects?by=org&tumId=TUS1ABC&sort=year&order=asc"
# Get publications for a person
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/publications?by=person&tumId=go42tum"
# Get publications from multiple persons
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/publications?by=person&tumId=go42tum,ab12tum"
# Get all projects for an organization
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/projects?by=org&tumId=TUS1ABC"
# Get projects from multiple organizations
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/projects?by=org&tumId=TUS1ABC,TUS2DEF"
# Get projects for a person
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/projects?by=person&tumId=go42tum"
# Get projects from multiple persons
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/projects?by=person&tumId=go42tum,ab12tum"
# Get second page of publications (50 per page by default)
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&page=2"
# Get 25 publications per page
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&per_page=25"
# Combine pagination with filters
curl -H "Authorization: Bearer $TOKEN" \
"https://fisapi.it.tum.de/publications?by=org&tumId=TUS1ABC&type=Article&page=3&per_page=20"
PHP Example
// API token - replace with your actual token
define('API_TOKEN', 'YOUR_API_TOKEN');
// Helper function to make authenticated API requests
function apiFetch($url) {
$context = stream_context_create([
'http' => [
'header' => 'Authorization: Bearer ' . API_TOKEN
]
]);
$response = file_get_contents($url, false, $context);
return json_decode($response, true);
}
// Fetch all available publication types
function fetchPublicationTypes() {
$url = 'https://fisapi.it.tum.de/publication-types';
$data = apiFetch($url);
return $data['types'];
}
// Example usage
$types = fetchPublicationTypes();
echo "Available publication types:\n";
foreach ($types as $type) {
echo "- $type\n";
}
// Fetch publications using PHP
function fetchPublications($tumIds, $by = 'org', $options = []) {
$baseUrl = 'https://fisapi.it.tum.de/publications';
// Handle both string and array inputs
$ids = is_array($tumIds) ? implode(',', $tumIds) : $tumIds;
$params = [
'tumId' => $ids,
'by' => $by
];
if (!empty($options['type'])) {
$params['type'] = $options['type'];
}
if (!empty($options['keywords'])) {
$params['keywords'] = $options['keywords'];
}
if (!empty($options['year'])) {
$params['year'] = $options['year'];
}
if (!empty($options['sort'])) {
$params['sort'] = $options['sort'];
}
if (!empty($options['order'])) {
$params['order'] = $options['order'];
}
if (!empty($options['page'])) {
$params['page'] = $options['page'];
}
if (!empty($options['per_page'])) {
$params['per_page'] = $options['per_page'];
}
$url = $baseUrl . '?' . http_build_query($params);
return apiFetch($url);
}
// Example usage - single organization with type filter
$data = fetchPublications('TUS1ABC', 'org', ['type' => 'Article']);
echo "Found " . $data['pagination']['total'] . " articles total\n";
echo "Showing page " . $data['pagination']['page'] . " of " . $data['pagination']['total_pages'] . "\n";
foreach ($data['publications'] as $pub) {
echo "- " . $pub['title'] . "\n";
}
// Example usage - filter by keywords with pagination
$data = fetchPublications('TUS1ABC', 'org', [
'keywords' => 'machine learning',
'page' => 1,
'per_page' => 25
]);
echo "Found " . $data['pagination']['total'] . " publications about machine learning\n";
echo "Showing " . $data['count'] . " results on this page\n";
foreach ($data['publications'] as $pub) {
echo "- " . $pub['title'] . " (Keywords: " . $pub['keywords'] . ")\n";
}
// Example usage - combine type and keywords filters with pagination
$data = fetchPublications('TUS1ABC', 'org', [
'type' => 'Article',
'keywords' => 'AI',
'page' => 2
]);
echo "Page 2 - Found " . $data['count'] . " articles about AI\n";
Error Responses
Errors are JSON objects of the form {"error": "<message>"}, sent with Cache-Control: no-store. Some add fields, as noted below. Method and authentication checks (405, 401, 429, 503) run first; the parameter checks run in the order listed.
| Status Code | Error | Description |
|---|---|---|
400 |
tumId parameter too long (max 1000 chars) | The tumId parameter exceeds 1000 characters |
400 |
type parameter too long (max 255 chars) | The type parameter exceeds 255 characters |
400 |
keywords parameter too long (max 200 chars) | The keywords parameter exceeds 200 characters (/publications only) |
400 |
Invalid year parameter (must be a 4-digit year between 1900 and 2100) | The year parameter is not a 4-digit year between 1900 and 2100 |
400 |
Invalid sort parameter (must be "year" or "title") | The sort parameter must be "year" or "title" |
400 |
Invalid order parameter (must be "asc" or "desc") | The order parameter must be "asc" or "desc" |
400 |
Missing required parameter: tumId | The tumId parameter was not provided or is empty |
400 |
Missing or invalid parameter: by (must be "person" or "org") | The by parameter must be "org" or "person" |
401 |
Missing Authorization header. Use: Authorization: Bearer <token> | No valid Authorization: Bearer header was sent (see Authentication) |
401 |
Invalid API token | The provided token is not valid |
401 |
API token has been revoked | The token was revoked by an administrator |
404 |
No persons found with provided tumIds | None of the given person IDs is known. The response adds notFoundIds. |
404 |
No organizations found with provided tumIds | None of the given organization IDs is known. The response adds notFoundIds. |
404 |
Page N out of range; total_pages is M | The requested page is past the last page. The response adds the pagination object. |
405 |
Method not allowed | Only GET and HEAD are accepted (see the Allow header) |
429 |
Rate limit exceeded. Try again later. | Rate limit used up; wait for the seconds in Retry-After |
500 |
Internal server error | An unexpected server-side error occurred |
500 |
Database error | A database query failed |
503 |
Service temporarily unavailable | The database can't be reached; retry after the seconds in Retry-After |
503 |
Authentication service unavailable | The token could not be checked; retry after the seconds in Retry-After |
API Tester and Search Tools
The tools on this page return these additional errors:
| Status Code | Error | Description |
|---|---|---|
403 |
Cross-origin request not allowed | The tools only answer requests made from this page |
429 |
Rate limit exceeded. Try again later. | Per-IP limit of the tool used up |
503 |
API Tester is not available on this server | The API Tester is not set up on this server |
503 |
API Tester is busy, try again in a few seconds | Too many tester requests at once |
502 |
Failed to connect to API | The tester could not reach the API |
Otherwise the API Tester shows the API's own response, including its status code.