API reference
Distribution
Checks, sending releases to review and the stores, takedowns and rights documents.
On this page
Base address https://api.stillmoregroup.com/api/v1. Every answer is JSON; errors have one shape.
| Endpoint | What it does |
|---|---|
GET /releases/{releaseId}/checks | Check a release before sending it |
POST /releases/{releaseId}/submit | Send a release to distribution |
POST /releases/submit | Send many releases to distribution |
POST /releases/{releaseId}/takedown | Ask for a live release to come down |
POST /releases/{releaseId}/documents | Start a document upload |
POST /releases/{releaseId}/documents/complete | Finish a document upload |
Check a release before sending it#
GET /releases/{releaseId}/checks · scope releases:read
Everything submission requires, plus the store rules reviewers check by eye: audio quality, titles (no "feat.", promotional words, emoji or shouting capitals), artist names, codes already used elsewhere, cover licences. ERROR items block a submission (submission rules) or automatic approval (store rules); WARNING items are for a person to judge.
Path parameters#
releaseIdstring- An id.
Headers#
Stillmore-Organization- A sub-label to act for, when the key may (see Sub-labels).
Example request#
curl "https://api.stillmoregroup.com/api/v1/releases/{releaseId}/checks" \
-H "Authorization: Bearer $STILLMORE_API_KEY"Response 200#
data holds the object below.
submittableboolean- Nothing stops a submission.
cleanboolean- No ERROR at all: nothing would hold back an automatic approval.
checksobject[]checks[].stringcode checks[].stringseverity - One of
ERROR,WARNING. checks[].stringpath - The field, e.g. tracks[1].audio.
checks[].stringmessage
{
"data": {
"submittable": false,
"clean": false,
"checks": [
{
"code": "123456",
"severity": "ERROR",
"path": "tracks[0].audio",
"message": "Sent from our catalogue system"
}
]
}
}Errors#
| Code | What it means |
|---|---|
RELEASE_NOT_FOUND | From the workspace rule behind this endpoint; message says what to change. |
Every endpoint can also give the errors every call can give, such as VALIDATION_ERROR, INSUFFICIENT_SCOPE and RATE_LIMITED.
Send a release to distribution#
POST /releases/{releaseId}/submit · scope releases:submit
The release joins Stillmore Group's review queue exactly as one submitted in the workspace does (paid plans are reviewed first). On an account with automatic approval it is approved without a person once its checks are clean, and goes straight to delivery. Follow it with the release.* webhooks or GET /v1/events.
Path parameters#
releaseIdstring- An id.
Body#
notestring- A note for the reviewers. Up to 2000 characters.
Headers#
Idempotency-Key- Any unique value, such as a UUID: a retry with the same key and body gets the first answer again for 24 hours.
Stillmore-Organization- A sub-label to act for, when the key may (see Sub-labels).
Example request#
curl -X POST "https://api.stillmoregroup.com/api/v1/releases/{releaseId}/submit" \
-H "Authorization: Bearer $STILLMORE_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"note": "Sent from our catalogue system"
}'Response 200#
data holds the object below.
idstringlabelIdstringtitlestringversionTitlestring or nulltypestring- One of
SINGLE,EP,ALBUM. statusstring- Where the release is, review and delivery together. One of
DRAFT,LABEL_REVIEW,IN_REVIEW,CHANGES_REQUESTED,REJECTED,APPROVED,SENT_TO_STORES,LIVE,REFUSED_BY_STORES,TAKEDOWN_REQUESTED,TAKEN_DOWN,ARCHIVED. primaryArtistIdsstring[]featuredArtistIdsstring[]
Show 66 more fieldsHide 66 fields
primaryGenrestring or nullsecondaryGenrestring or nulllanguagestring or nullexplicitbooleanreleaseDatestring (date) or nulloriginalReleaseDatestring (date) or nullcopyrightobjectcopyright.objectcLine copyright.objectpLine territoriesobjectterritories.stringmode - One of
WORLDWIDE,CUSTOM. territories.string[]codes storesobjectstores.stringmode - One of
ALL,CUSTOM. stores.string[]codes upcstring or nullartworkobject or null- The cover; null until one is uploaded.
artwork.stringstatus - One of
PENDING_UPLOAD,UPLOADED,VERIFIED,FAILED,DELETED. artwork.string or nullfileName artwork.string or nullmimeType artwork.number or nullsizeBytes artwork.string or nulluploadedAt - ISO 8601 timestamp in UTC.
artwork.number or nullwidth artwork.number or nullheight trackCountinteger- From -9007199254740991 to 9007199254740991.
tracksobject[]- Included when one release is read, created or changed.
tracks[].stringid tracks[].stringreleaseId tracks[].integerposition - From -9007199254740991 to 9007199254740991.
tracks[].stringtitle tracks[].string or nullversionTitle tracks[].string[]primaryArtistIds tracks[].string[]featuredArtistIds tracks[].booleanexplicit tracks[].booleanisCover tracks[].string or nulllanguage tracks[].string or nullisrc tracks[].string or nulllyrics tracks[].objectcredits tracks[].object or nullaudio - The master; null until one is uploaded.
tracks[].string or nullexternalId - Your own id for it, when you set one.
tracks[].map of stringmetadata - Your own keys and values, as you sent them.
tracks[].stringcreatedAt - ISO 8601 timestamp in UTC.
tracks[].stringupdatedAt - ISO 8601 timestamp in UTC.
tracks[].stringrevision - Changes whenever the record does; send it back in If-Match to refuse an update when someone else changed it first.
reviewobject- Included when one release is read, created or changed.
review.string or nullsubmittedAt - ISO 8601 timestamp in UTC.
review.string or nulldecidedAt - ISO 8601 timestamp in UTC.
review.booleanautomatic - The account's automatic approval passed the release without a person.
review.string or nullnote - What review asked for when it sent the release back, or why it rejected it.
review.object[]issues review.object or nulldocumentsRequested deliveryobject- On its way to the stores, codes and store pages; included when one release is read, created or changed.
delivery.stringstatus - One of
NOT_SENT,SENT_TO_STORES,LIVE,REFUSED_BY_STORES,TAKEDOWN_REQUESTED,TAKEN_DOWN. delivery.string or nullsentAt delivery.string or nullliveAt delivery.string or nullrefusedReason delivery.object[]storeLinks delivery.object or nullsmartLink submittedAtstring or null- ISO 8601 timestamp in UTC.
approvedAtstring or null- ISO 8601 timestamp in UTC.
externalIdstring or null- Your own id for it, when you set one.
metadatamap of string- Your own keys and values, as you sent them.
createdAtstring- ISO 8601 timestamp in UTC.
updatedAtstring- ISO 8601 timestamp in UTC.
revisionstring- Changes whenever the record does; send it back in If-Match to refuse an update when someone else changed it first.
{
"data": {
"id": "6731c2a1b3c4d5e6f7a8b9c0",
"labelId": "6731c2a1b3c4d5e6f7a8b9c0",
"title": "Night Signals",
"versionTitle": "Radio Edit",
"type": "SINGLE",
"status": "DRAFT",
"primaryArtistIds": [
"6731c2a1b3c4d5e6f7a8b9c0"
],
"featuredArtistIds": [
"6731c2a1b3c4d5e6f7a8b9c0"
],
"primaryGenre": "Pop",
"secondaryGenre": "Pop",
"language": "en",
"explicit": false,
"releaseDate": "2027-01-15",
"originalReleaseDate": "2026-10-01",
"copyright": {
"cLine": {
"year": 2026,
"holder": "North Records"
},
"pLine": {
"year": 2026,
"holder": "North Records"
}
},
"territories": {
"mode": "WORLDWIDE",
"codes": [
"123456"
]
},
"stores": {
"mode": "ALL",
"codes": [
"123456"
]
},
"upc": "0612345678905",
"artwork": {
"status": "PENDING_UPLOAD",
"fileName": "cover.jpg",
"mimeType": "…",
"sizeBytes": 2483117,
"uploadedAt": "2026-11-01T09:30:00.000Z",
"width": 1,
"height": 1
},
"trackCount": 1200,
"tracks": [
{
"id": "6731c2a1b3c4d5e6f7a8b9c0",
"releaseId": "6731c2a1b3c4d5e6f7a8b9c0",
"position": 1,
"title": "Night Signals",
"versionTitle": "Radio Edit",
"primaryArtistIds": [
"6731c2a1b3c4d5e6f7a8b9c0"
],
"featuredArtistIds": [
"6731c2a1b3c4d5e6f7a8b9c0"
],
"explicit": false,
"isCover": false,
"language": "en",
"isrc": "GBXYZ2600001",
"lyrics": "…",
"credits": {
"songwriters": [],
"composers": [],
"producers": [],
"publishers": [],
"mixers": [],
"masteringEngineers": [],
"remixers": []
},
"audio": {
"status": "PENDING_UPLOAD",
"fileName": "cover.jpg",
"mimeType": "…",
"sizeBytes": 2483117,
"uploadedAt": "2026-11-01T09:30:00.000Z",
"durationSeconds": 214,
"sampleRate": 1,
"bitDepth": 1,
"channels": 1
},
"externalId": "6731c2a1b3c4d5e6f7a8b9c0",
"metadata": {
"catalogueId": "1042"
},
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z",
"revision": "…"
}
],
"review": {
"submittedAt": "2026-11-01T09:30:00.000Z",
"decidedAt": "2026-11-01T09:30:00.000Z",
"automatic": false,
"note": "Sent from our catalogue system",
"issues": [
{
"category": "…",
"message": "Sent from our catalogue system"
}
],
"documentsRequested": {
"note": "Sent from our catalogue system",
"requestedAt": "2026-11-01T09:30:00.000Z",
"fulfilled": false
}
},
"delivery": {
"status": "NOT_SENT",
"sentAt": "2026-11-01T09:30:00.000Z",
"liveAt": "2026-11-01T09:30:00.000Z",
"refusedReason": "Sent from our catalogue system",
"storeLinks": [
{
"store": "Spotify",
"url": "https://example.com/webhooks/stillmore"
}
],
"smartLink": {
"url": "https://example.com/webhooks/stillmore",
"enabled": true
}
},
"submittedAt": "2026-11-01T09:30:00.000Z",
"approvedAt": "2026-11-01T09:30:00.000Z",
"externalId": "6731c2a1b3c4d5e6f7a8b9c0",
"metadata": {
"catalogueId": "1042"
},
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z",
"revision": "…"
}
}Errors#
| Code | What it means |
|---|---|
RELEASE_SUBMISSION_INVALID | The release misses what submission needs; details.issues lists each field (GET …/checks shows the same before submitting). |
INVALID_RELEASE_STATUS | From the workspace rule behind this endpoint; message says what to change. |
PLAN_QUOTA_REACHED | From the workspace rule behind this endpoint; message says what to change. |
SUBMISSION_LIMIT_REACHED | The organization used today's submissions through the API; the limit resets at midnight UTC. |
ORGANIZATION_SUSPENDED | From the workspace rule behind this endpoint; message says what to change. |
Every endpoint can also give the errors every call can give, such as VALIDATION_ERROR, INSUFFICIENT_SCOPE and RATE_LIMITED.
Send many releases to distribution#
POST /releases/submit · scope releases:submit
Up to 50 releases, each submitted on its own; the answer lists every result. The daily submission limit counts each one.
Body#
releaseIdsstring[]Required- Up to 50 releases, each submitted on its own. 1 to 50 items.
notestring- Up to 2000 characters.
Headers#
Idempotency-Key- Any unique value, such as a UUID: a retry with the same key and body gets the first answer again for 24 hours.
Stillmore-Organization- A sub-label to act for, when the key may (see Sub-labels).
Example request#
curl -X POST "https://api.stillmoregroup.com/api/v1/releases/submit" \
-H "Authorization: Bearer $STILLMORE_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"releaseIds": [
"6731c2a1b3c4d5e6f7a8b9c0"
],
"note": "Sent from our catalogue system"
}'Response 200#
data holds the object below.
resultsobject[]results[].stringreleaseId results[].booleanok results[].string or nullstatus - The release's status after the attempt.
results[].object or nullerror
{
"data": {
"results": [
{
"releaseId": "6731c2a1b3c4d5e6f7a8b9c0",
"ok": false,
"status": "…",
"error": {
"code": "123456",
"message": "Sent from our catalogue system",
"details": "…"
}
}
]
}
}Errors#
| Code | What it means |
|---|---|
SUBMISSION_LIMIT_REACHED | The organization used today's submissions through the API; the limit resets at midnight UTC. |
Every endpoint can also give the errors every call can give, such as VALIDATION_ERROR, INSUFFICIENT_SCOPE and RATE_LIMITED.
Ask for a live release to come down#
POST /releases/{releaseId}/takedown · scope releases:submit
Stillmore Group's team takes it down from the stores; the release.taken_down webhook tells you when it's done.
Path parameters#
releaseIdstring- An id.
Body#
reasonstringRequired- Why the release should come down, for Stillmore Group's team. 10 to 2000 characters.
Headers#
Idempotency-Key- Any unique value, such as a UUID: a retry with the same key and body gets the first answer again for 24 hours.
Stillmore-Organization- A sub-label to act for, when the key may (see Sub-labels).
Example request#
curl -X POST "https://api.stillmoregroup.com/api/v1/releases/{releaseId}/takedown" \
-H "Authorization: Bearer $STILLMORE_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"reason": "Sent from our catalogue system"
}'Response 201#
data holds the object below.
idstringreleaseIdstringstatusstringreasonstringcreatedAtstring
{
"data": {
"id": "6731c2a1b3c4d5e6f7a8b9c0",
"releaseId": "6731c2a1b3c4d5e6f7a8b9c0",
"status": "…",
"reason": "Sent from our catalogue system",
"createdAt": "2026-11-01T09:30:00.000Z"
}
}Errors#
| Code | What it means |
|---|---|
TAKEDOWN_NOT_ALLOWED | From the workspace rule behind this endpoint; message says what to change. |
TAKEDOWN_ALREADY_REQUESTED | From the workspace rule behind this endpoint; message says what to change. |
Every endpoint can also give the errors every call can give, such as VALIDATION_ERROR, INSUFFICIENT_SCOPE and RATE_LIMITED.
Start a document upload#
POST /releases/{releaseId}/documents · scope releases:write
When review asks for documents (proof of rights, licences, agreements: review.documentsRequested), upload them here: PDF, Word, JPEG or PNG up to 20 MB.
Path parameters#
releaseIdstring- An id.
Body#
fileNamestringRequired- The file's name, with its extension. 1 to 255 characters.
contentTypestringRequired- image/jpeg or image/png for covers; audio/wav or audio/flac for masters. 3 to 120 characters.
sizeBytesintegerRequired- Exact size in bytes; the PUT must send the same Content-Length.
Headers#
Idempotency-Key- Any unique value, such as a UUID: a retry with the same key and body gets the first answer again for 24 hours.
Stillmore-Organization- A sub-label to act for, when the key may (see Sub-labels).
Example request#
curl -X POST "https://api.stillmoregroup.com/api/v1/releases/{releaseId}/documents" \
-H "Authorization: Bearer $STILLMORE_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"fileName": "cover.jpg",
"contentType": "image/jpeg",
"sizeBytes": 2483117
}'Response 201#
data holds the object below.
uploadIdstringuploadUrlstring- PUT the file's bytes here.
method"PUT"headersmap of string- Send these headers with the PUT, and Content-Length equal to sizeBytes.
expiresAtstring- Upload and complete before this time.
{
"data": {
"uploadId": "6731c2a1b3c4d5e6f7a8b9c0",
"uploadUrl": "https://storage.example.com/upload/cover.jpg?signature=…",
"method": "PUT",
"headers": {
"key": "…"
},
"expiresAt": "2026-11-01T09:30:00.000Z"
}
}Finish a document upload#
POST /releases/{releaseId}/documents/complete · scope releases:write
Path parameters#
releaseIdstring- An id.
Body#
uploadIdstringRequired- An id.
durationSecondsnumber- From 0 to 21600.
Headers#
Idempotency-Key- Any unique value, such as a UUID: a retry with the same key and body gets the first answer again for 24 hours.
Stillmore-Organization- A sub-label to act for, when the key may (see Sub-labels).
Example request#
curl -X POST "https://api.stillmoregroup.com/api/v1/releases/{releaseId}/documents/complete" \
-H "Authorization: Bearer $STILLMORE_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"uploadId": "6731c2a1b3c4d5e6f7a8b9c0"
}'Response 200#
data holds the object below.
idstringlabelIdstringtitlestringversionTitlestring or nulltypestring- One of
SINGLE,EP,ALBUM. statusstring- Where the release is, review and delivery together. One of
DRAFT,LABEL_REVIEW,IN_REVIEW,CHANGES_REQUESTED,REJECTED,APPROVED,SENT_TO_STORES,LIVE,REFUSED_BY_STORES,TAKEDOWN_REQUESTED,TAKEN_DOWN,ARCHIVED. primaryArtistIdsstring[]featuredArtistIdsstring[]
Show 66 more fieldsHide 66 fields
primaryGenrestring or nullsecondaryGenrestring or nulllanguagestring or nullexplicitbooleanreleaseDatestring (date) or nulloriginalReleaseDatestring (date) or nullcopyrightobjectcopyright.objectcLine copyright.objectpLine territoriesobjectterritories.stringmode - One of
WORLDWIDE,CUSTOM. territories.string[]codes storesobjectstores.stringmode - One of
ALL,CUSTOM. stores.string[]codes upcstring or nullartworkobject or null- The cover; null until one is uploaded.
artwork.stringstatus - One of
PENDING_UPLOAD,UPLOADED,VERIFIED,FAILED,DELETED. artwork.string or nullfileName artwork.string or nullmimeType artwork.number or nullsizeBytes artwork.string or nulluploadedAt - ISO 8601 timestamp in UTC.
artwork.number or nullwidth artwork.number or nullheight trackCountinteger- From -9007199254740991 to 9007199254740991.
tracksobject[]- Included when one release is read, created or changed.
tracks[].stringid tracks[].stringreleaseId tracks[].integerposition - From -9007199254740991 to 9007199254740991.
tracks[].stringtitle tracks[].string or nullversionTitle tracks[].string[]primaryArtistIds tracks[].string[]featuredArtistIds tracks[].booleanexplicit tracks[].booleanisCover tracks[].string or nulllanguage tracks[].string or nullisrc tracks[].string or nulllyrics tracks[].objectcredits tracks[].object or nullaudio - The master; null until one is uploaded.
tracks[].string or nullexternalId - Your own id for it, when you set one.
tracks[].map of stringmetadata - Your own keys and values, as you sent them.
tracks[].stringcreatedAt - ISO 8601 timestamp in UTC.
tracks[].stringupdatedAt - ISO 8601 timestamp in UTC.
tracks[].stringrevision - Changes whenever the record does; send it back in If-Match to refuse an update when someone else changed it first.
reviewobject- Included when one release is read, created or changed.
review.string or nullsubmittedAt - ISO 8601 timestamp in UTC.
review.string or nulldecidedAt - ISO 8601 timestamp in UTC.
review.booleanautomatic - The account's automatic approval passed the release without a person.
review.string or nullnote - What review asked for when it sent the release back, or why it rejected it.
review.object[]issues review.object or nulldocumentsRequested deliveryobject- On its way to the stores, codes and store pages; included when one release is read, created or changed.
delivery.stringstatus - One of
NOT_SENT,SENT_TO_STORES,LIVE,REFUSED_BY_STORES,TAKEDOWN_REQUESTED,TAKEN_DOWN. delivery.string or nullsentAt delivery.string or nullliveAt delivery.string or nullrefusedReason delivery.object[]storeLinks delivery.object or nullsmartLink submittedAtstring or null- ISO 8601 timestamp in UTC.
approvedAtstring or null- ISO 8601 timestamp in UTC.
externalIdstring or null- Your own id for it, when you set one.
metadatamap of string- Your own keys and values, as you sent them.
createdAtstring- ISO 8601 timestamp in UTC.
updatedAtstring- ISO 8601 timestamp in UTC.
revisionstring- Changes whenever the record does; send it back in If-Match to refuse an update when someone else changed it first.
{
"data": {
"id": "6731c2a1b3c4d5e6f7a8b9c0",
"labelId": "6731c2a1b3c4d5e6f7a8b9c0",
"title": "Night Signals",
"versionTitle": "Radio Edit",
"type": "SINGLE",
"status": "DRAFT",
"primaryArtistIds": [
"6731c2a1b3c4d5e6f7a8b9c0"
],
"featuredArtistIds": [
"6731c2a1b3c4d5e6f7a8b9c0"
],
"primaryGenre": "Pop",
"secondaryGenre": "Pop",
"language": "en",
"explicit": false,
"releaseDate": "2027-01-15",
"originalReleaseDate": "2026-10-01",
"copyright": {
"cLine": {
"year": 2026,
"holder": "North Records"
},
"pLine": {
"year": 2026,
"holder": "North Records"
}
},
"territories": {
"mode": "WORLDWIDE",
"codes": [
"123456"
]
},
"stores": {
"mode": "ALL",
"codes": [
"123456"
]
},
"upc": "0612345678905",
"artwork": {
"status": "PENDING_UPLOAD",
"fileName": "cover.jpg",
"mimeType": "…",
"sizeBytes": 2483117,
"uploadedAt": "2026-11-01T09:30:00.000Z",
"width": 1,
"height": 1
},
"trackCount": 1200,
"tracks": [
{
"id": "6731c2a1b3c4d5e6f7a8b9c0",
"releaseId": "6731c2a1b3c4d5e6f7a8b9c0",
"position": 1,
"title": "Night Signals",
"versionTitle": "Radio Edit",
"primaryArtistIds": [
"6731c2a1b3c4d5e6f7a8b9c0"
],
"featuredArtistIds": [
"6731c2a1b3c4d5e6f7a8b9c0"
],
"explicit": false,
"isCover": false,
"language": "en",
"isrc": "GBXYZ2600001",
"lyrics": "…",
"credits": {
"songwriters": [],
"composers": [],
"producers": [],
"publishers": [],
"mixers": [],
"masteringEngineers": [],
"remixers": []
},
"audio": {
"status": "PENDING_UPLOAD",
"fileName": "cover.jpg",
"mimeType": "…",
"sizeBytes": 2483117,
"uploadedAt": "2026-11-01T09:30:00.000Z",
"durationSeconds": 214,
"sampleRate": 1,
"bitDepth": 1,
"channels": 1
},
"externalId": "6731c2a1b3c4d5e6f7a8b9c0",
"metadata": {
"catalogueId": "1042"
},
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z",
"revision": "…"
}
],
"review": {
"submittedAt": "2026-11-01T09:30:00.000Z",
"decidedAt": "2026-11-01T09:30:00.000Z",
"automatic": false,
"note": "Sent from our catalogue system",
"issues": [
{
"category": "…",
"message": "Sent from our catalogue system"
}
],
"documentsRequested": {
"note": "Sent from our catalogue system",
"requestedAt": "2026-11-01T09:30:00.000Z",
"fulfilled": false
}
},
"delivery": {
"status": "NOT_SENT",
"sentAt": "2026-11-01T09:30:00.000Z",
"liveAt": "2026-11-01T09:30:00.000Z",
"refusedReason": "Sent from our catalogue system",
"storeLinks": [
{
"store": "Spotify",
"url": "https://example.com/webhooks/stillmore"
}
],
"smartLink": {
"url": "https://example.com/webhooks/stillmore",
"enabled": true
}
},
"submittedAt": "2026-11-01T09:30:00.000Z",
"approvedAt": "2026-11-01T09:30:00.000Z",
"externalId": "6731c2a1b3c4d5e6f7a8b9c0",
"metadata": {
"catalogueId": "1042"
},
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z",
"revision": "…"
}
}Errors#
| Code | What it means |
|---|---|
UPLOAD_NOT_RECEIVED | Complete was called before the file arrived at the upload address. Finish the PUT first. |
Every endpoint can also give the errors every call can give, such as VALIDATION_ERROR, INSUFFICIENT_SCOPE and RATE_LIMITED.