Integrations reference
Native routes for tools and scripts. Start with your first integration for working examples.
Generated from the server’s Integrations tag. Scopes and account permissions still apply. Compatibility aliases are documented in the full reference.
GET/health/liveRead server livenessopen
- Audience
- Integrations · Native API
- Authorization
- No credential needed
- OpenAPI operation ID
get_health_live
Responses
200Successapplication/json
{
"alive": true
}- alivebooleanrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/health/live"GET/health/readyRead server readinessopen
- Audience
- Integrations · Native API
- Authorization
- No credential needed
- OpenAPI operation ID
get_health_ready
Responses
200Successapplication/json
{
"ready": true
}- readybooleanrequired
503Successapplication/json
{
"ready": true
}- readybooleanrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/health/ready"GET/v1/admin/activityRead the owner's bounded server activity summaryadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
get_admin_activity
Responses
200Successapplication/json
{
"health": {
"degraded": true
},
"lastScanFinishedAt": "2026-10-18T19:30:00Z",
"majorIssues": [
{
"code": "string",
"destination": {
"kind": "string",
"target": "string"
},
"kind": "string",
"severity": "string",
"subject": "string"
}
],
"observedAt": "2026-10-18T19:30:00Z",
"scans": [
{
"analyzed": 0,
"current": "string",
"discovered": 0,
"kind": "string",
"libraryId": "id_8h2k4q",
"libraryName": "Fargo",
"phase": "string",
"total": 0
}
],
"scope": {
"serverId": "id_8h2k4q",
"viewerFence": "string"
},
"serverName": "Fargo",
"streams": {
"convertingCount": 0,
"count": 0,
"items": [
{
"bufferingSince": "string",
"channel": {
"name": "Fargo",
"number": "string"
},
"converting": true,
"decision": {
"audio": {},
"subtitles": {},
"video": {}
},
"device": {
"id": "id_8h2k4q",
"name": "Fargo"
},
"durationMs": 1800000,
"id": "id_8h2k4q",
"item": {
"airDate": "string",
"album": "string",
"art": [],
"artist": "string",
"author": "string",
"bookTitle": "Fargo",
"episodeNumber": 0,
"episodeNumbering": "string",
"id": "id_8h2k4q",
"kind": "string",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"title": "Fargo",
"year": 0
},
"kind": "string",
"positionMs": 1800000,
"problem": "string",
"profile": {
"id": "id_8h2k4q",
"name": "Fargo"
},
"programme": {
"endsAt": "2026-10-18T19:30:00Z",
"title": "Fargo"
},
"quality": {
"id": "id_8h2k4q",
"maxAudioBitrateKbps": 0,
"maxHeight": 0,
"maxVideoBitrateKbps": 0,
"mode": "string",
"step": "string"
},
"startedAt": "2026-10-18T19:30:00Z",
"state": "string",
"transcode": {
"cadenceMs": 1800000,
"observedAt": "2026-10-18T19:30:00Z",
"speed": 0
},
"user": {
"id": "id_8h2k4q",
"username": "Fargo"
},
"videoHeight": 0
}
],
"overflow": {
"convertingCount": 0,
"count": 0
}
},
"tasks": {
"count": 0,
"items": [
{
"id": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"libraryName": "Fargo",
"phase": "string",
"processed": 0,
"state": "string",
"total": 0,
"unit": "string"
}
]
},
"update": {
"available": true,
"current": "string",
"latest": "string",
"state": "string"
}
}healthobjectrequired
- degradedbooleanrequired
- lastScanFinishedAtstring
majorIssuesarray of objectrequired
- codestringrequired
destinationobjectrequired
- kindstringrequired
- targetstringrequired
- kindstringrequired
- severitystringrequired
- subjectstringrequired
- observedAtstringrequired
scansarray of objectrequired
- analyzedintegerrequired
- currentstring
- discoveredintegerrequired
- kindstringrequired
- libraryIdstringrequired
- libraryNamestringrequired
- phasestringrequired
- totalinteger
scopeobjectrequired
- serverIdstringrequired
- viewerFencestringrequired
- serverNamestringrequired
streamsobjectrequired
- convertingCountintegerrequired≥ 0
- countintegerrequired≥ 0
itemsarray of objectrequired0–3 items
- bufferingSincestring
channelobject
- namestringrequired
- numberstring
- convertingbooleanrequired
decisionobjectrequired
audioobject
- actionstringrequired
- channelsinteger
- reasonsarray of stringrequired
- tostring
subtitlesobject
- actionstringrequired
- channelsinteger
- reasonsarray of stringrequired
- tostring
videoobject
- actionstringrequired
- channelsinteger
- reasonsarray of stringrequired
- tostring
deviceobjectrequired
- idstringrequired
- namestringrequired
- durationMsinteger
- idstringrequired
itemobject
- airDatestring
- albumstring
artarray of objectrequired
- idstringrequired
- kindstringrequired
- revisionstringrequired
- rolestringrequired
- artiststring
- authorstring
- bookTitlestring
- episodeNumberinteger
- episodeNumberingstring
- idstringrequired
- kindstringrequired
- seasonNumberinteger
- showIdstring
- showTitlestring
- titlestringrequired
- yearinteger
- kindstringrequired
- positionMsintegerrequired
- problemstring
profileobjectrequired
- idstringrequired
- namestringrequired
programmeobject
- endsAtstringrequired
- titlestringrequired
qualityobject
- idstring
- maxAudioBitrateKbpsinteger
- maxHeightinteger
- maxVideoBitrateKbpsinteger
- modestringrequired
- stepstring
- startedAtstringrequired
- statestringrequired
transcodeobject
- cadenceMsintegerrequired
- observedAtstringrequired
- speednumberrequired
userobjectrequired
- idstringrequired
- usernamestring
- videoHeightinteger
overflowobjectrequired
- convertingCountintegerrequired≥ 0
- countintegerrequired≥ 0
tasksobjectrequired
- countintegerrequired≥ 0
itemsarray of objectrequired0–3 items
- idstringrequired
- kindstringrequired
- libraryIdstring
- libraryNamestring
- phasestringrequired
- processedinteger
- statestringrequired
- totalinteger
- unitstring
updateobjectrequired
- availablebooleanrequired
- currentstringrequired
- lateststring
- statestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinvalid_requestinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/admin/activity" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/admin/api-keysList this server's API keyssession
- Audience
- Integrations · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
list_api_keys
Parameters
| Name | In | Type | Description |
|---|---|---|---|
cursor | query | string | |
limit | query | integer | ""1–100 |
Responses
200Successapplication/json
{
"items": [
{
"createdAt": "2026-10-18T19:30:00Z",
"endedReason": "string",
"expiresAt": "2026-10-18T19:30:00Z",
"hint": "string",
"id": "id_8h2k4q",
"kind": "string",
"lastUsedAt": "2026-10-18T19:30:00Z",
"member": {
"accountId": "id_8h2k4q",
"profile": "string",
"profileId": "id_8h2k4q",
"username": "Fargo"
},
"name": "Fargo",
"scopes": [
"string"
],
"state": "string"
}
],
"limit": 0,
"nextCursor": "eyJvIjoyMH0",
"total": 0
}itemsarray of objectrequired
- createdAtstringrequired
- endedReasonstring
- expiresAtstring
- hintstringrequired
- idstringrequired
- kindstringrequired
- lastUsedAtstring
memberobjectrequired
- accountIdstringrequired
- profilestringrequired
- profileIdstringrequired
- usernamestringrequired
- namestringrequired
- scopesarray of stringrequired
- statestringrequired
- limitintegerrequired
- nextCursorstring
- totalintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedsession_requiredinvalid_requestadministration_unavailableinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/admin/api-keys" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN"POST/v1/admin/api-keysCreate an API key; the owner may reveal it latersession
- Audience
- Integrations · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
create_api_key- Max body
- 4 KiB
Request body application/json · required
{
"expiresAt": "2026-10-18T19:30:00Z",
"name": "Fargo",
"operationId": "id_8h2k4q",
"scopes": [
"string"
]
}- expiresAtstring
- namestringrequired
- operationIdstringrequired
- scopesarray of stringrequired
Responses
201Successapplication/json
{
"credential": {
"createdAt": "2026-10-18T19:30:00Z",
"endedReason": "string",
"expiresAt": "2026-10-18T19:30:00Z",
"hint": "string",
"id": "id_8h2k4q",
"kind": "string",
"lastUsedAt": "2026-10-18T19:30:00Z",
"member": {
"accountId": "id_8h2k4q",
"profile": "string",
"profileId": "id_8h2k4q",
"username": "Fargo"
},
"name": "Fargo",
"scopes": [
"string"
],
"state": "string"
},
"secret": "string"
}credentialobjectrequired
- createdAtstringrequired
- endedReasonstring
- expiresAtstring
- hintstringrequired
- idstringrequired
- kindstringrequired
- lastUsedAtstring
memberobjectrequired
- accountIdstringrequired
- profilestringrequired
- profileIdstringrequired
- usernamestringrequired
- namestringrequired
- scopesarray of stringrequired
- statestringrequired
- secretstring
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedsession_requiredinvalid_requestidempotency_key_reusedcredential_limitcredential_unavailableaccess_tokens_offadministration_unavailableinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/admin/api-keys" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expiresAt":"2026-10-18T19:30:00Z","name":"Fargo","operationId":"id_8h2k4q","scopes":["string"]}'DELETE/v1/admin/api-keys/{id}Revoke an API keysession
- Audience
- Integrations · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
revoke_api_key
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"createdAt": "2026-10-18T19:30:00Z",
"endedReason": "string",
"expiresAt": "2026-10-18T19:30:00Z",
"hint": "string",
"id": "id_8h2k4q",
"kind": "string",
"lastUsedAt": "2026-10-18T19:30:00Z",
"member": {
"accountId": "id_8h2k4q",
"profile": "string",
"profileId": "id_8h2k4q",
"username": "Fargo"
},
"name": "Fargo",
"scopes": [
"string"
],
"state": "string"
}- createdAtstringrequired
- endedReasonstring
- expiresAtstring
- hintstringrequired
- idstringrequired
- kindstringrequired
- lastUsedAtstring
memberobjectrequired
- accountIdstringrequired
- profilestringrequired
- profileIdstringrequired
- usernamestringrequired
- namestringrequired
- scopesarray of stringrequired
- statestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedsession_requiredinvalid_requestnot_foundadministration_unavailableinternaldatabase_busywriter_capacity
Example request
curl -X DELETE "http://127.0.0.1:32500/v1/admin/api-keys/{id}" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN"GET/v1/admin/api-keys/{id}/secretReveal this credential to the signed-in ownersession
- Audience
- Integrations · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
reveal_api_key
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"id": "id_8h2k4q",
"secret": "string"
}- idstringrequired
- secretstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestnot_foundcredential_limitinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/admin/api-keys/{id}/secret" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN"GET/v1/admin/console/jobsRead or update the selected projectionadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
get_admin_console_jobs
Parameters
| Name | In | Type | Description |
|---|---|---|---|
cursor | query | string |
Responses
200Successapplication/json
{
"data": {
"items": [
{
"actions": [
"string"
],
"attempt": 0,
"createdAt": "2026-10-18T19:30:00Z",
"domainId": "id_8h2k4q",
"errorCode": "string",
"id": "id_8h2k4q",
"kind": "string",
"lane": "string",
"nextAt": "2026-10-18T19:30:00Z",
"phase": "string",
"predecessor": "string",
"processed": 0,
"resource": "string",
"revision": 0,
"settingsRevision": 0,
"state": "string",
"total": 0,
"trigger": "string",
"updatedAt": "2026-10-18T19:30:00Z"
}
],
"nextCursor": "eyJvIjoyMH0"
},
"scope": {
"serverId": "id_8h2k4q",
"viewerFence": "string"
}
}dataobjectrequired
itemsarray of objectrequired
- actionsarray of stringrequired
- attemptintegerrequired
- createdAtstringrequired
RFC 3339 UTC instant; empty when absent.
- domainIdstring
- errorCodestring
- idstringrequired
- kindstringrequired
- lanestringrequired
- nextAtstringrequired
RFC 3339 UTC instant; empty when absent.
- phasestringrequired
- predecessorstring
- processedinteger
- resourcestringrequired
- revisionintegerrequired
- settingsRevisionintegerrequired
- statestringrequired
- totalinteger
- triggerstringrequired
- updatedAtstringrequired
RFC 3339 UTC instant; empty when absent.
- nextCursorstringrequired
scopeobjectrequired
- serverIdstringrequired
- viewerFencestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/admin/console/jobs" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/admin/console/jobsRead or update the selected projectionadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
post_admin_console_jobs- Max body
- 1 MiB
Request body application/json · required
{
"idempotencyKey": "string",
"kind": "string",
"resource": "string"
}- idempotencyKeystringrequired
- kindstringrequired
- resourcestringrequired
Responses
200Successapplication/json
{
"data": {
"actions": [
"string"
],
"attempt": 0,
"createdAt": "2026-10-18T19:30:00Z",
"domainId": "id_8h2k4q",
"errorCode": "string",
"id": "id_8h2k4q",
"kind": "string",
"lane": "string",
"nextAt": "2026-10-18T19:30:00Z",
"phase": "string",
"predecessor": "string",
"processed": 0,
"resource": "string",
"revision": 0,
"settingsRevision": 0,
"state": "string",
"total": 0,
"trigger": "string",
"updatedAt": "2026-10-18T19:30:00Z"
},
"scope": {
"serverId": "id_8h2k4q",
"viewerFence": "string"
}
}dataobjectrequired
- actionsarray of stringrequired
- attemptintegerrequired
- createdAtstringrequired
RFC 3339 UTC instant; empty when absent.
- domainIdstring
- errorCodestring
- idstringrequired
- kindstringrequired
- lanestringrequired
- nextAtstringrequired
RFC 3339 UTC instant; empty when absent.
- phasestringrequired
- predecessorstring
- processedinteger
- resourcestringrequired
- revisionintegerrequired
- settingsRevisionintegerrequired
- statestringrequired
- totalinteger
- triggerstringrequired
- updatedAtstringrequired
RFC 3339 UTC instant; empty when absent.
scopeobjectrequired
- serverIdstringrequired
- viewerFencestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/admin/console/jobs" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"idempotencyKey":"string","kind":"string","resource":"string"}'POST/v1/admin/console/jobs/{id}/{action}Read or update the selected projectionadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
post_admin_console_jobs_id_action- Max body
- 1 MiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
actionrequired | path | string |
Request body application/json · required
{
"expectedRevision": 0,
"idempotencyKey": "string"
}- expectedRevisionintegerrequired
- idempotencyKeystringrequired
Responses
200Successapplication/json
{
"data": {
"actions": [
"string"
],
"attempt": 0,
"createdAt": "2026-10-18T19:30:00Z",
"domainId": "id_8h2k4q",
"errorCode": "string",
"id": "id_8h2k4q",
"kind": "string",
"lane": "string",
"nextAt": "2026-10-18T19:30:00Z",
"phase": "string",
"predecessor": "string",
"processed": 0,
"resource": "string",
"revision": 0,
"settingsRevision": 0,
"state": "string",
"total": 0,
"trigger": "string",
"updatedAt": "2026-10-18T19:30:00Z"
},
"scope": {
"serverId": "id_8h2k4q",
"viewerFence": "string"
}
}dataobjectrequired
- actionsarray of stringrequired
- attemptintegerrequired
- createdAtstringrequired
RFC 3339 UTC instant; empty when absent.
- domainIdstring
- errorCodestring
- idstringrequired
- kindstringrequired
- lanestringrequired
- nextAtstringrequired
RFC 3339 UTC instant; empty when absent.
- phasestringrequired
- predecessorstring
- processedinteger
- resourcestringrequired
- revisionintegerrequired
- settingsRevisionintegerrequired
- statestringrequired
- totalinteger
- triggerstringrequired
- updatedAtstringrequired
RFC 3339 UTC instant; empty when absent.
scopeobjectrequired
- serverIdstringrequired
- viewerFencestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/admin/console/jobs/{id}/{action}" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":0,"idempotencyKey":"string"}'DELETE/v1/admin/ingestion/jobs/{id}Remove server ingestion jobslibrary
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the library scope, or a signed-in session
- OpenAPI operation ID
delete_admin_ingestion_jobs_id
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X DELETE "http://127.0.0.1:32500/v1/admin/ingestion/jobs/{id}" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/admin/ingestion/jobs/{id}Read server ingestion jobslibrary
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the library scope, or a signed-in session
- OpenAPI operation ID
get_admin_ingestion_jobs_id
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"analyzed": 0,
"error": "string",
"id": "id_8h2k4q",
"jobs": [
"string"
],
"phase": "string",
"processed": 0,
"scanMode": "string",
"sourceId": "id_8h2k4q",
"status": "string",
"warnings": 0
}- analyzedintegerrequired
- errorstring
- idstringrequired
- jobsarray of string
- phasestring
- processedintegerrequired
- scanModestring
- sourceIdstring
- statusstringrequired
- warningsintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/admin/ingestion/jobs/{id}" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/admin/ingestion/jobs/{id}/{action}Run server ingestion jobslibrary
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the library scope, or a signed-in session
- OpenAPI operation ID
post_admin_ingestion_jobs_id_action
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
actionrequired | path | string |
Responses
202Successapplication/json
{
"analyzed": 0,
"error": "string",
"id": "id_8h2k4q",
"jobs": [
"string"
],
"phase": "string",
"processed": 0,
"scanMode": "string",
"sourceId": "id_8h2k4q",
"status": "string",
"warnings": 0
}- analyzedintegerrequired
- errorstring
- idstringrequired
- jobsarray of string
- phasestring
- processedintegerrequired
- scanModestring
- sourceIdstring
- statusstringrequired
- warningsintegerrequired
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/admin/ingestion/jobs/{id}/{action}" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/admin/jobsRead server jobslibrary
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the library scope, or a signed-in session
- OpenAPI operation ID
get_admin_jobs
Parameters
| Name | In | Type | Description |
|---|---|---|---|
libraryId | query | string | |
status | query | string | |
cursor | query | string | |
limit | query | integer1–40 |
Responses
200Successapplication/json
{
"items": [
{
"actions": [
"string"
],
"analyzed": 0,
"createdAt": "2026-10-18T19:30:00Z",
"error": "string",
"errorCode": "string",
"finishedAt": "2026-10-18T19:30:00Z",
"id": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"libraryKind": "string",
"libraryName": "Fargo",
"pauseReason": "string",
"phase": "string",
"processed": 0,
"sourceId": "id_8h2k4q",
"status": "string",
"updatedAt": "2026-10-18T19:30:00Z",
"warnings": 0
}
],
"nextCursor": "eyJvIjoyMH0",
"revision": 0,
"scope": {
"serverId": "id_8h2k4q",
"viewerFence": "string"
}
}itemsarray of objectrequired
- actionsarray of stringrequired
- analyzedintegerrequired
- createdAtstringrequired
- errorstring
- errorCodestring
- finishedAtstring | any | nullrequired
- idstringrequired
- libraryIdstringrequired
- libraryKindstringrequired
- libraryNamestringrequired
- pauseReasonstringrequired
- phasestringrequired
- processedintegerrequired
- sourceIdstringrequired
- statusstringrequired
- updatedAtstring | any | nullrequired
- warningsintegerrequired
- nextCursorstringrequired
- revisionintegerrequired
scopeobjectrequired
- serverIdstringrequired
- viewerFencestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/admin/jobs" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/admin/librariesRead server librarylibrary
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the library scope, or a signed-in session
- OpenAPI operation ID
get_admin_libraries
Parameters
| Name | In | Type | Description |
|---|---|---|---|
cursor | query | string | |
limit | query | integer1–40 |
Responses
200Successapplication/json
{
"items": [
{
"actions": [
"string"
],
"attention": {
"atLeast": true,
"files": 0
},
"audience": {
"accounts": 0,
"everyone": true
},
"filesSkipped": 0,
"id": "id_8h2k4q",
"kind": "string",
"lastScan": {
"actions": [
"string"
],
"analyzed": 0,
"createdAt": "2026-10-18T19:30:00Z",
"error": "string",
"errorCode": "string",
"finishedAt": "2026-10-18T19:30:00Z",
"id": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"libraryKind": "string",
"libraryName": "Fargo",
"pauseReason": "string",
"phase": "string",
"processed": 0,
"sourceId": "id_8h2k4q",
"status": "string",
"updatedAt": "2026-10-18T19:30:00Z",
"warnings": 0
},
"name": "Fargo",
"position": 0,
"revision": 0,
"source": {
"availability": "string",
"basis": "string",
"message": "string",
"observedAt": "2026-10-18T19:30:00Z",
"path": "string"
},
"summary": {
"counts": [
{}
],
"coverUrls": [
"https://example.com/…"
],
"empty": true,
"emptyKnown": true,
"firstScan": true,
"latestArtwork": "string",
"publicationCounts": [
{}
]
}
}
],
"nextCursor": "eyJvIjoyMH0",
"revision": 0,
"scope": {
"serverId": "id_8h2k4q",
"viewerFence": "string"
}
}itemsarray of objectrequired
- actionsarray of stringrequired
attentionobject
- atLeastboolean
- filesintegerrequired
audienceobject
- accountsintegerrequired
- everyonebooleanrequired
- filesSkippedintegerrequired
- idstringrequired
- kindstringrequired
lastScanobject | any | nullrequired
- actionsarray of stringrequired
- analyzedintegerrequired
- createdAtstringrequired
- errorstring
- errorCodestring
- finishedAtstring | any | nullrequired
- idstringrequired
- libraryIdstringrequired
- libraryKindstringrequired
- libraryNamestringrequired
- pauseReasonstringrequired
- phasestringrequired
- processedintegerrequired
- sourceIdstringrequired
- statusstringrequired
- updatedAtstring | any | nullrequired
- warningsintegerrequired
- namestringrequired
- positionintegerrequired
- revisionintegerrequired
sourceobjectrequired
- availabilitystringrequired
- basisstringrequired
- messagestring
- observedAtstring
- pathstringrequired
summaryobject
countsarray of objectrequired
- atLeastbooleanrequired
- countintegerrequired
- kindstringrequired
- coverUrlsarray of stringrequired
- emptybooleanrequired
- emptyKnownbooleanrequired
- firstScanbooleanrequired
- latestArtworkstringrequired
publicationCountsarray of object
- atLeastbooleanrequired
- countintegerrequired
- kindstringrequired
- nextCursorstringrequired
- revisionintegerrequired
scopeobjectrequired
- serverIdstringrequired
- viewerFencestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/admin/libraries" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/admin/notifications/broadcastRun server notifications broadcastadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
post_admin_notifications_broadcast- Max body
- 64 KiB
Request body application/json · required
{
"actions": [
{
"arguments": {
"key": "string"
},
"command": "string",
"kind": "string",
"label": "string",
"target": {
"entityId": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"view": "string"
}
}
],
"audience": "string",
"body": "string",
"dedupeKey": "string",
"expiresInDays": 0,
"operationId": "id_8h2k4q",
"severity": "string",
"title": "Fargo"
}actionsarray of objectrequired
- argumentsobject
- commandstring
- kindstringrequired
- labelstringrequired
targetobject
- entityIdstring
- libraryIdstring
- viewstringrequired
- audiencestringrequired
- bodystringrequired
- dedupeKeystringrequired
- expiresInDaysintegerrequired
- operationIdstringrequired
- severitystringrequired
- titlestringrequired
Responses
200Successapplication/json
{
"data": {
"audience": "string",
"created": 0,
"dedupeKey": "string",
"delivered": 0,
"ids": [
"string"
],
"revision": 0,
"updated": 0
},
"scope": {
"serverId": "id_8h2k4q",
"viewerFence": "string"
}
}dataobjectrequired
- audiencestringrequired
- createdintegerrequired
- dedupeKeystringrequired
- deliveredintegerrequired
- idsarray of stringrequired
- revisionintegerrequired
- updatedintegerrequired
scopeobjectrequired
- serverIdstringrequired
- viewerFencestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/admin/notifications/broadcast" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"actions": [
{
"arguments": {
"key": "string"
},
"command": "string",
"kind": "string",
"label": "string",
"target": {
"entityId": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"view": "string"
}
}
],
"audience": "string",
"body": "string",
"dedupeKey": "string",
"expiresInDays": 0,
"operationId": "id_8h2k4q",
"severity": "string",
"title": "Fargo"
}'GET/v1/admin/sessionsActive playback sessions: who, what, how it's delivered and from whereadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
list_admin_sessions
Parameters
| Name | In | Type | Description |
|---|---|---|---|
limit | query | integer | ""0–200 | |
cursor | query | string |
Responses
200Successapplication/json
{
"items": [
{
"address": "string",
"app": "string",
"bandwidthKbps": 0,
"bitrateKbps": 0,
"bufferingSince": "string",
"channel": {
"name": "Fargo",
"number": "string"
},
"currentBitrateKbps": 0,
"decision": {
"audio": {
"action": "string",
"channels": 0,
"reasons": [],
"to": "string"
},
"subtitles": {
"action": "string",
"channels": 0,
"reasons": [],
"to": "string"
},
"video": {
"action": "string",
"channels": 0,
"reasons": [],
"to": "string"
}
},
"delivery": {
"audioBitrateBps": 0,
"audioChannels": 0,
"hardware": {
"backend": "string",
"execution": {},
"stages": []
},
"streams": [
{}
],
"videoBitrateBps": 0,
"videoHeight": 0
},
"device": {
"id": "id_8h2k4q",
"name": "Fargo"
},
"durationMs": 1800000,
"engine": "string",
"id": "id_8h2k4q",
"item": {
"airDate": "string",
"album": "string",
"art": [
{}
],
"artist": "string",
"author": "string",
"bookTitle": "Fargo",
"episodeNumber": 0,
"episodeNumbering": "string",
"id": "id_8h2k4q",
"kind": "string",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"title": "Fargo",
"year": 0
},
"kind": "string",
"live": true,
"location": "string",
"media": {
"audio": {
"atmos": true,
"bitDepth": 0,
"channels": 0,
"codec": "string",
"commentary": true,
"default": true,
"dtsx": true,
"id": "id_8h2k4q",
"language": "en",
"layout": "string",
"objectAudio": "string",
"profile": "string",
"sampleRate": 0,
"title": "Fargo",
"variant": "string",
"visualImpaired": true
},
"subtitles": {
"format": "2026-10-18T19:30:00Z",
"id": "id_8h2k4q",
"language": "en"
},
"video": {
"bitDepth": 0,
"bitrateKbps": 0,
"chromaSubsampling": "string",
"codec": "string",
"dolbyVisionBaseLayer": true,
"dolbyVisionCmVersion": "string",
"dolbyVisionCompatibility": 0,
"dolbyVisionEnhancementType": "string",
"dolbyVisionProfile": 0,
"dolbyVisionRpu": true,
"fps": 0,
"frameRateDenominator": 0,
"frameRateMode": "string",
"frameRateNumerator": 0,
"hdr": "string",
"hdr10Plus": true,
"height": 0,
"id": "id_8h2k4q",
"interlaced": true,
"level": 0,
"masterDisplay": "string",
"maxCll": "string",
"profile": "string",
"width": 0
},
"videoHardware": true
},
"platform": "string",
"positionMs": 1800000,
"problem": "string",
"profile": {
"id": "id_8h2k4q",
"name": "Fargo"
},
"programme": {
"endsAt": "2026-10-18T19:30:00Z",
"title": "Fargo"
},
"protocol": "string",
"quality": {
"id": "id_8h2k4q",
"maxAudioBitrateKbps": 0,
"maxHeight": 0,
"maxVideoBitrateKbps": 0,
"mode": "string",
"step": "string"
},
"rateWindowMs": 1800000,
"startedAt": "2026-10-18T19:30:00Z",
"state": "string",
"transcode": {
"cadenceMs": 1800000,
"observedAt": "2026-10-18T19:30:00Z",
"speed": 0
},
"user": {
"id": "id_8h2k4q",
"name": "Fargo"
},
"videoHeight": 0
}
],
"observedAt": "2026-10-18T19:30:00Z",
"page": {
"limit": 0,
"nextCursor": "eyJvIjoyMH0",
"revision": "r12",
"start": 0,
"total": 0
},
"scope": {
"serverId": "id_8h2k4q",
"viewerFence": "string"
},
"totals": {
"atHome": 0,
"away": 0,
"bandwidthKbps": 0,
"converting": 0,
"paused": 0,
"people": 0,
"streams": 1800000
}
}itemsarray of objectrequired
- addressstring
- appstring
- bandwidthKbpsinteger
- bitrateKbpsinteger
- bufferingSincestring
channelobject
- namestringrequired
- numberstring
- currentBitrateKbpsnumber | any | nullrequired
decisionobjectrequired
audioobject
- actionstringrequired
- channelsinteger
- reasonsarray of stringrequired
- tostring
subtitlesobject
- actionstringrequired
- channelsinteger
- reasonsarray of stringrequired
- tostring
videoobject
- actionstringrequired
- channelsinteger
- reasonsarray of stringrequired
- tostring
deliveryobject
- audioBitrateBpsinteger
- audioChannelsinteger
hardwareobject
- backendstringrequired
executionobject
- fallbackCountintegerrequired
lastLaunchobjectrequired
decoderobjectrequired
- executionstringrequired
- namestringrequired
encoderobjectrequired
- executionstringrequired
- namestringrequired
- generationintegerrequired
- renderNodestring
- sequenceintegerrequired
- startedAtstringrequired
- launchCountintegerrequired
- softwareLaunchCountintegerrequired
- unknownLaunchCountintegerrequired
stagesarray of objectrequired
- executionstringrequired
- operationstringrequired
streamsarray of objectrequired
- actionstringrequired
- inputCodecstringrequired
- kindstringrequired
- outputCodecstringrequired
- videoBitrateBpsinteger
- videoHeightinteger
deviceobjectrequired
- idstringrequired
- namestringrequired
- durationMsinteger
- enginestring
- idstringrequired
itemobject
- airDatestring
- albumstring
artarray of objectrequired
- idstringrequired
- kindstringrequired
- revisionstringrequired
- rolestringrequired
- artiststring
- authorstring
- bookTitlestring
- episodeNumberinteger
- episodeNumberingstring
- idstringrequired
- kindstringrequired
- seasonNumberinteger
- showIdstring
- showTitlestring
- titlestringrequired
- yearinteger
- kindstringrequired
- livebooleanrequired
- locationstringrequired
mediaobject
audioobject
- atmosbooleanrequired
- bitDepthinteger
- channelsinteger
- codecstringrequired
- commentarybooleanrequired
- defaultbooleanrequired
- dtsxbooleanrequired
- idstringrequired
- languagestring
- layoutstring
- objectAudiostring
- profilestring
- sampleRateinteger
- titlestring
- variantstring
- visualImpairedbooleanrequired
subtitlesobject
- formatstringrequired
- idstringrequired
- languagestring
videoobject
- bitDepthinteger
- bitrateKbpsinteger
- chromaSubsamplingstring
- codecstringrequired
- dolbyVisionBaseLayerbooleanrequired
- dolbyVisionCmVersionstring
- dolbyVisionCompatibilityinteger
- dolbyVisionEnhancementTypestring
- dolbyVisionProfileinteger
- dolbyVisionRpubooleanrequired
- fpsnumber
- frameRateDenominatorinteger
- frameRateModestring
- frameRateNumeratorinteger
- hdrstring
- hdr10Plusbooleanrequired
- heightinteger
- idstringrequired
- interlacedboolean
- levelinteger
- masterDisplaystring
- maxCllstring
- profilestring
- widthinteger
- videoHardwareboolean
- platformstring
- positionMsintegerrequired
- problemstring
profileobjectrequired
- idstringrequired
- namestringrequired
programmeobject
- endsAtstringrequired
- titlestringrequired
- protocolstringrequired
qualityobject
- idstring
- maxAudioBitrateKbpsinteger
- maxHeightinteger
- maxVideoBitrateKbpsinteger
- modestringrequired
- stepstring
- rateWindowMsintegerrequired
- startedAtstringrequired
- statestringrequired
transcodeobject
- cadenceMsintegerrequired
- observedAtstringrequired
- speednumberrequired
userobjectrequired
- idstringrequired
- namestringrequired
- videoHeightinteger
- observedAtstringrequired
pageobjectrequired
- limitintegerrequired
- nextCursorstring
- revisionstringrequired
- startintegerrequired
- totalintegerrequired
scopeobjectrequired
- serverIdstringrequired
- viewerFencestringrequired
totalsobjectrequired
- atHomeintegerrequired
- awayintegerrequired
- bandwidthKbpsintegerrequired
- convertingintegerrequired
- pausedintegerrequired
- peopleintegerrequired
- streamsintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittedtimeoutdatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/admin/sessions" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/admin/sessions/{id}:terminateEnd a viewer's playback, showing them an optional message; idempotentadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
terminate_admin_session- Max body
- 4 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/json
{
"message": "string"
}- messagestring
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundtimeoutdatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/admin/sessions/{id}:terminate" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message":"string"}'GET/v1/admin/sessions/{id}/controlsRead the transport controls and current revision of any administrable sessionadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
get_admin_session_controls
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"actions": [
"string"
],
"durationMs": 1800000,
"generation": 0,
"positionMs": 1800000,
"revision": "r12",
"sessionId": "id_8h2k4q",
"state": "string"
}- actionsarray of stringrequired
- durationMsinteger
- generationintegerrequired
- positionMsintegerrequired
- revisionstringrequired
- sessionIdstringrequired
- statestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittednot_foundinvalid_requestrevision_requiredrevision_mismatchsession_endedinternaltimeoutdatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/admin/sessions/{id}/controls" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/admin/sessions/{id}/controlsPause, resume or seek any administrable session using its current revisionadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
control_admin_session- Max body
- 4 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/json · required
{
"action": "string",
"expectedRevision": "r12",
"positionMs": 1800000
}- actionstringrequired
- expectedRevisionstringrequired
- positionMsinteger
Responses
200Successapplication/json
{
"actions": [
"string"
],
"durationMs": 1800000,
"generation": 0,
"positionMs": 1800000,
"revision": "r12",
"sessionId": "id_8h2k4q",
"state": "string"
}- actionsarray of stringrequired
- durationMsinteger
- generationintegerrequired
- positionMsintegerrequired
- revisionstringrequired
- sessionIdstringrequired
- statestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittednot_foundinvalid_requestrevision_requiredrevision_mismatchsession_endedinternaltimeoutdatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/admin/sessions/{id}/controls" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"action":"string","expectedRevision":"r12","positionMs":1800000}'GET/v1/admin/webhooksList webhooks and the events they can be sentadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
list_webhooks
Responses
200Successapplication/json
{
"events": [
"string"
],
"items": [
{
"createdAt": "2026-10-18T19:30:00Z",
"dropped": 0,
"enabled": true,
"events": [
"string"
],
"failing": 0,
"id": "id_8h2k4q",
"name": "Fargo",
"requiresOwnerReview": true,
"revision": 0,
"secretHint": "string",
"updatedAt": "2026-10-18T19:30:00Z",
"url": "https://example.com/…",
"waiting": 0
}
],
"maximum": 0
}- eventsarray of stringrequired
itemsarray of objectrequired
- createdAtstringrequired
- droppedintegerrequired
- enabledbooleanrequired
- eventsarray of stringrequired
- failingintegerrequired
- idstringrequired
- namestringrequired
- requiresOwnerReviewboolean
- revisionintegerrequired
- secretHintstringrequired
- updatedAtstringrequired
- urlstringrequired
- waitingintegerrequired
- maximumintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopeinvalid_requestadministration_unavailableinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/admin/webhooks" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/admin/webhooksAdd a webhook; its signing secret is shown onceadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
create_webhook- Max body
- 8 KiB
Request body application/json · required
{
"enabled": true,
"events": [
"string"
],
"name": "Fargo",
"operationId": "id_8h2k4q",
"secret": "string",
"url": "https://example.com/…"
}- enabledboolean
- eventsarray of stringrequired
- namestringrequired
- operationIdstring
- secretstring
- urlstringrequired
Responses
201Successapplication/json
{
"secret": "string",
"webhook": {
"createdAt": "2026-10-18T19:30:00Z",
"dropped": 0,
"enabled": true,
"events": [
"string"
],
"failing": 0,
"id": "id_8h2k4q",
"name": "Fargo",
"requiresOwnerReview": true,
"revision": 0,
"secretHint": "string",
"updatedAt": "2026-10-18T19:30:00Z",
"url": "https://example.com/…",
"waiting": 0
}
}- secretstring
webhookobjectrequired
- createdAtstringrequired
- droppedintegerrequired
- enabledbooleanrequired
- eventsarray of stringrequired
- failingintegerrequired
- idstringrequired
- namestringrequired
- requiresOwnerReviewboolean
- revisionintegerrequired
- secretHintstringrequired
- updatedAtstringrequired
- urlstringrequired
- waitingintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codeswebhook_limitbody_too_largeidempotency_key_reusednot_foundunauthorizednot_permittedinsufficient_scopeinvalid_requestadministration_unavailableinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/admin/webhooks" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"enabled":true,"events":["string"],"name":"Fargo","operationId":"id_8h2k4q","secret":"string","url":"https://example.com/…"}'DELETE/v1/admin/webhooks/{id}Remove a webhook with its queue and its logadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
delete_webhook
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesnot_foundunauthorizednot_permittedinsufficient_scopeinvalid_requestadministration_unavailableinternaldatabase_busywriter_capacity
Example request
curl -X DELETE "http://127.0.0.1:32500/v1/admin/webhooks/{id}" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/admin/webhooks/{id}Read one webhookadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
get_webhook
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"createdAt": "2026-10-18T19:30:00Z",
"dropped": 0,
"enabled": true,
"events": [
"string"
],
"failing": 0,
"id": "id_8h2k4q",
"name": "Fargo",
"requiresOwnerReview": true,
"revision": 0,
"secretHint": "string",
"updatedAt": "2026-10-18T19:30:00Z",
"url": "https://example.com/…",
"waiting": 0
}- createdAtstringrequired
- droppedintegerrequired
- enabledbooleanrequired
- eventsarray of stringrequired
- failingintegerrequired
- idstringrequired
- namestringrequired
- requiresOwnerReviewboolean
- revisionintegerrequired
- secretHintstringrequired
- updatedAtstringrequired
- urlstringrequired
- waitingintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesnot_foundunauthorizednot_permittedinsufficient_scopeinvalid_requestadministration_unavailableinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/admin/webhooks/{id}" \
-H "Authorization: Bearer $PORTICO_API_KEY"PATCH/v1/admin/webhooks/{id}Change a webhook, turn it on or off, or replace its secret; fenced by its revisionadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
update_webhook- Max body
- 8 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/json · required
{
"enabled": true,
"events": [
"string"
],
"expectedRevision": 0,
"name": "Fargo",
"rotateSecret": true,
"secret": "string",
"url": "https://example.com/…"
}- enabledboolean
- eventsarray of string
- expectedRevisionintegerrequired
- namestring
- rotateSecretboolean
- secretstring
- urlstring
Responses
200Successapplication/json
{
"secret": "string",
"webhook": {
"createdAt": "2026-10-18T19:30:00Z",
"dropped": 0,
"enabled": true,
"events": [
"string"
],
"failing": 0,
"id": "id_8h2k4q",
"name": "Fargo",
"requiresOwnerReview": true,
"revision": 0,
"secretHint": "string",
"updatedAt": "2026-10-18T19:30:00Z",
"url": "https://example.com/…",
"waiting": 0
}
}- secretstring
webhookobjectrequired
- createdAtstringrequired
- droppedintegerrequired
- enabledbooleanrequired
- eventsarray of stringrequired
- failingintegerrequired
- idstringrequired
- namestringrequired
- requiresOwnerReviewboolean
- revisionintegerrequired
- secretHintstringrequired
- updatedAtstringrequired
- urlstringrequired
- waitingintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesbody_too_largerevision_mismatchnot_foundunauthorizednot_permittedinsufficient_scopeinvalid_requestadministration_unavailableinternalrevision_requireddatabase_busywriter_capacity
Example request
curl -X PATCH "http://127.0.0.1:32500/v1/admin/webhooks/{id}" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"enabled":true,"events":["string"],"expectedRevision":0,"name":"Fargo","rotateSecret":true,"secret":"string","url":"https://example.com/…"}'GET/v1/admin/webhooks/{id}/deliveriesRead a webhook's delivery log, newest firstadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
list_webhook_deliveries
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
cursor | query | string | |
limit | query | integer | ""1–100 |
Responses
200Successapplication/json
{
"items": [
{
"attempts": 0,
"createdAt": "2026-10-18T19:30:00Z",
"durationMs": 1800000,
"error": "string",
"event": "string",
"finishedAt": "2026-10-18T19:30:00Z",
"id": "id_8h2k4q",
"nextAttemptAt": "2026-10-18T19:30:00Z",
"state": "string",
"status": 0
}
],
"limit": 0,
"nextCursor": "eyJvIjoyMH0"
}itemsarray of objectrequired
- attemptsintegerrequired
- createdAtstringrequired
- durationMsintegerrequired
- errorstring
- eventstringrequired
- finishedAtstring
- idstringrequired
- nextAttemptAtstring
- statestringrequired
- statusintegerrequired
- limitintegerrequired
- nextCursorstring
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesnot_foundunauthorizednot_permittedinsufficient_scopeinvalid_requestadministration_unavailableinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/admin/webhooks/{id}/deliveries" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/admin/webhooks/{id}/testSend a test event to a webhook; the result appears in its delivery logadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
test_webhook
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
202Successapplication/json
{
"attempts": 0,
"createdAt": "2026-10-18T19:30:00Z",
"durationMs": 1800000,
"error": "string",
"event": "string",
"finishedAt": "2026-10-18T19:30:00Z",
"id": "id_8h2k4q",
"nextAttemptAt": "2026-10-18T19:30:00Z",
"state": "string",
"status": 0
}- attemptsintegerrequired
- createdAtstringrequired
- durationMsintegerrequired
- errorstring
- eventstringrequired
- finishedAtstring
- idstringrequired
- nextAttemptAtstring
- statestringrequired
- statusintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codeswebhook_limitnot_foundunauthorizednot_permittedinsufficient_scopeinvalid_requestadministration_unavailableinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/admin/webhooks/{id}/test" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/albums/{id}/songsRead album songsread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_albums_id_songs
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
cursor | query | string | |
limit | query | integer |
Responses
200Successapplication/json
{
"nextCursor": "eyJvIjoyMH0",
"songs": [
{
"addedAt": "2026-10-18T19:30:00Z",
"audioFacts": {
"atmos": true,
"bitDepth": 0,
"channels": 0,
"codec": "string",
"layout": "string",
"lossless": true,
"sampleRate": 0
},
"available": true,
"backdropUrl": "https://example.com/…",
"bookFile": {
"bookId": "id_8h2k4q",
"bookTitle": "Fargo",
"discNumber": 0,
"localMetadata": {
"authors": [],
"description": "string",
"edition": "string",
"identifiers": [],
"language": "en",
"narrators": [],
"publishedYear": 0,
"publisher": "string",
"series": [],
"sources": {}
},
"localMetadataIssue": "string",
"localPolicy": {
"localMode": "string",
"revision": 0
},
"partNumber": 0,
"sourceBoundary": "string"
},
"durationMs": 1800000,
"durationState": "unrepresentable",
"episode": {
"airDate": "string",
"localIdentityStatus": "string",
"number": 0,
"numbering": "string",
"orderingBasis": "string",
"providerMatchStatus": "string",
"seasonId": "id_8h2k4q",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"sourceBoundary": "string"
},
"fileInfoOpening": "string",
"id": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"missing": true,
"overview": "string",
"posterUrl": "https://example.com/…",
"progressMs": 1800000,
"song": {
"albumArtist": "string",
"albumId": "id_8h2k4q",
"albumTitle": "Fargo",
"artist": "string",
"discNumber": 0,
"localMetadataIssue": "string",
"providerArtist": "string",
"providerMatchStatus": "string",
"providerObservedAt": "2026-10-18T19:30:00Z",
"providerRecordingId": "id_8h2k4q",
"providerReleaseGroupId": "id_8h2k4q",
"providerReleaseId": "id_8h2k4q",
"providerReleaseStatus": "string",
"providerSourceUrl": "https://example.com/…",
"providerTitle": "Fargo",
"providerTrackId": "id_8h2k4q",
"trackNumber": 0
},
"sources": [
{
"audioCodec": "string",
"container": "string",
"durationMs": 1800000,
"height": 0,
"id": "id_8h2k4q",
"videoCodec": "string",
"width": 0
}
],
"stillUrl": "https://example.com/…",
"title": "Fargo",
"watched": true,
"year": 0
}
]
}- nextCursorstringrequired
songsarray of objectrequired
- addedAtstring | any | nullrequired
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- availablebooleanrequired
- backdropUrlstring
bookFileobject
- bookIdstringrequired
- bookTitlestringrequired
- discNumberinteger
localMetadataobject
- authorsarray of stringrequired
- descriptionstring
- editionstring
identifiersarray of objectrequired
- schemestringrequired
- valuestringrequired
- languagestring
- narratorsarray of stringrequired
- publishedYearinteger
- publisherstring
seriesarray of objectrequired
- namestringrequired
- positionstring
- sourcesobjectrequired
- localMetadataIssuestring
localPolicyobject
- localModestringrequired
- revisionintegerrequired
- partNumberinteger
- sourceBoundarystringrequired
- durationMsinteger≥ 0
- durationStatestringone of "unrepresentable"
episodeobject
- airDatestring
- localIdentityStatusstringrequired
- numberintegerrequired
- numberingstringrequired
- orderingBasisstringrequired
- providerMatchStatusstringrequired
- seasonIdstring
- seasonNumberinteger
- showIdstringrequired
- showTitlestringrequired
- sourceBoundarystringrequired
- fileInfoOpeningstring
- idstringrequired
- kindstringrequired
- libraryIdstringrequired
- missingbooleanrequired
- overviewstring
- posterUrlstring
- progressMsintegerrequired≥ 0
songobject
- albumArtiststringrequired
- albumIdstringrequired
- albumTitlestringrequired
- artiststringrequired
- discNumberinteger
- localMetadataIssuestring
- providerArtiststring
- providerMatchStatusstringrequired
- providerObservedAtstring
- providerRecordingIdstring
- providerReleaseGroupIdstring
- providerReleaseIdstring
- providerReleaseStatusstringrequired
- providerSourceUrlstring
- providerTitlestring
- providerTrackIdstring
- trackNumberinteger
sourcesarray of object
- audioCodecstringrequired
- containerstringrequired
- durationMsintegerrequired≥ 0
- heightintegerrequired
- idstringrequired
- videoCodecstringrequired
- widthintegerrequired
- stillUrlstring
- titlestringrequired
- watchedboolean
- yearinteger
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/albums/{id}/songs" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/artists/{id}/albumsRead artist albumread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_artists_id_albums
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
cursor | query | string | |
limit | query | integer |
Responses
200Successapplication/json
{
"albums": [
{
"albumArtist": "string",
"albumArtistId": "id_8h2k4q",
"homeActions": {
"collection": true,
"delete": true,
"details": true,
"download": true,
"editMetadata": true,
"favorite": true,
"myList": true,
"notInterested": true,
"play": true,
"played": true,
"playlist": true,
"queue": true,
"rating": true,
"refreshMetadata": true,
"removeFromContinue": true,
"selection": {
"collection": true,
"delete": true,
"download": true,
"edit": true,
"favorite": true,
"myList": true,
"play": true,
"playlist": true,
"queue": true,
"refresh": true,
"watched": true
},
"state": {
"containerRevision": 0,
"favorite": true,
"personalRevision": 0,
"rating": 0,
"watched": true,
"watchlisted": true
},
"watched": true
},
"id": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"posterUrl": "https://example.com/…",
"providerMatchStatus": "string",
"providerObservedAt": "2026-10-18T19:30:00Z",
"providerReleaseCountry": "string",
"providerReleaseDate": "string",
"providerReleaseGroupId": "id_8h2k4q",
"providerReleaseId": "id_8h2k4q",
"role": "album",
"title": "Fargo",
"year": 0
}
],
"nextCursor": "eyJvIjoyMH0"
}albumsarray of objectrequired
- albumArtiststringrequired
- albumArtistIdstringrequired
homeActionsobject
- collectionbooleanrequired
- deletebooleanrequired
- detailsbooleanrequired
- downloadbooleanrequired
- editMetadatabooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- notInterestedboolean
- playbooleanrequired
- playedbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- ratingbooleanrequired
- refreshMetadatabooleanrequired
- removeFromContinueboolean
selectionobjectrequired
- collectionbooleanrequired
- deletebooleanrequired
- downloadbooleanrequired
- editbooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- playbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- refreshbooleanrequired
- watchedbooleanrequired
stateobjectrequired
- containerRevisionintegerrequired
- favoritebooleanrequired
- personalRevisionintegerrequired
- ratingnumber | any | nullrequired
- watchedbooleanrequired
- watchlistedbooleanrequired
- watchedbooleanrequired
- idstringrequired
- libraryIdstringrequired
- posterUrlstring
- providerMatchStatusstringrequired
- providerObservedAtstring
- providerReleaseCountrystring
- providerReleaseDatestring
- providerReleaseGroupIdstring
- providerReleaseIdstring
- rolestringone of "album", "ep", "single", "compilation", "appearance"
- titlestringrequired
- yearinteger
- nextCursorstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/artists/{id}/albums" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/books/{id}/chaptersRead book chaptersread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_books_id_chapters
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
cursor | query | string | |
limit | query | integer |
Responses
200Successapplication/json
{
"chapters": [
{
"endMs": 1800000,
"id": "id_8h2k4q",
"index": 0,
"itemId": "id_8h2k4q",
"startMs": 1800000,
"title": "Fargo"
}
],
"nextCursor": "eyJvIjoyMH0"
}chaptersarray of objectrequired
- endMsintegerrequired≥ 0
- idstringrequired
- indexintegerrequired
- itemIdstringrequired
- startMsintegerrequired≥ 0
- titlestringrequired
- nextCursorstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/books/{id}/chapters" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/capabilitiesRead this viewer's feature states and published limitsread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_capabilities
Responses
200Successapplication/json
{
"api": {
"level": 0,
"major": 0
},
"features": {
"key": "string"
},
"limits": {
"key": 0
}
}apiobjectrequired
- levelintegerrequired
- majorintegerrequired
- featuresobjectrequired
- limitsobjectrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizedinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/capabilities" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/eventsRead the authorized event ring by long-poll or server-sent streamread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_events
Parameters
| Name | In | Type | Description |
|---|---|---|---|
after | query | string | |
waitMs | query | string |
Responses
200Successapplication/json
{
"events": [
{
"at": "2026-10-18T19:30:00Z",
"id": "id_8h2k4q",
"type": "capacity.changed",
"variant": "capacity"
}
],
"more": true,
"nextAfter": "string"
}eventsarray of objectrequired
- atstringrequired
- idstringrequiredlength 1–128
- type"capacity.changed"required
- variant"capacity"required
- morebooleanrequired
- nextAfterstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizedinvalid_requestinvalid_cursorevent_wait_limitevent_stream_existsstream_unavailableinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/events" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/integrations/app-passwordsList named integration app passwordssession
- Audience
- Integrations · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
list_integration_app_passwords
Parameters
| Name | In | Type | Description |
|---|---|---|---|
cursor | query | string |
Responses
200Successapplication/json
{
"items": [
{
"accountId": "id_8h2k4q",
"id": "id_8h2k4q",
"name": "Fargo",
"profileId": "id_8h2k4q",
"scopes": [
"string"
],
"state": "string",
"username": "Fargo"
}
],
"nextCursor": "eyJvIjoyMH0"
}itemsarray of objectrequired
- accountIdstringrequired
- idstringrequired
- namestringrequired
- profileIdstringrequired
- scopesarray of stringrequired
- statestringrequired
- usernamestringrequired
- nextCursorstring
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestnot_foundcredential_limitinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/integrations/app-passwords" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN"POST/v1/integrations/app-passwordsCreate an integration app password for one account and profilesession
- Audience
- Integrations · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
create_integration_app_password- Max body
- 4 KiB
Request body application/json · required
{
"accountId": "id_8h2k4q",
"expiresAt": "2026-10-18T19:30:00Z",
"name": "Fargo",
"operationId": "id_8h2k4q",
"profileId": "id_8h2k4q",
"scopes": [
"string"
]
}- accountIdstringrequired
- expiresAtstring
- namestringrequired
- operationIdstringrequired
- profileIdstringrequired
- scopesarray of stringrequired
Responses
201Successapplication/json
{
"appPassword": {
"accountId": "id_8h2k4q",
"id": "id_8h2k4q",
"name": "Fargo",
"profileId": "id_8h2k4q",
"scopes": [
"string"
],
"state": "string",
"username": "Fargo"
},
"secret": "string"
}appPasswordobjectrequired
- accountIdstringrequired
- idstringrequired
- namestringrequired
- profileIdstringrequired
- scopesarray of stringrequired
- statestringrequired
- usernamestringrequired
- secretstring
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestnot_foundcredential_limitinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/integrations/app-passwords" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"accountId":"id_8h2k4q","expiresAt":"2026-10-18T19:30:00Z","name":"Fargo","operationId":"id_8h2k4q","profileId":"id_8h2k4q","scopes":["string"]}'DELETE/v1/integrations/app-passwords/{id}Revoke an app password and every token issued from itsession
- Audience
- Integrations · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
revoke_integration_app_password
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"accountId": "id_8h2k4q",
"id": "id_8h2k4q",
"name": "Fargo",
"profileId": "id_8h2k4q",
"scopes": [
"string"
],
"state": "string",
"username": "Fargo"
}- accountIdstringrequired
- idstringrequired
- namestringrequired
- profileIdstringrequired
- scopesarray of stringrequired
- statestringrequired
- usernamestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestnot_foundcredential_limitinternaldatabase_busywriter_capacity
Example request
curl -X DELETE "http://127.0.0.1:32500/v1/integrations/app-passwords/{id}" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN"GET/v1/integrations/app-passwords/{id}/secretReveal this credential to the signed-in ownersession
- Audience
- Integrations · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
reveal_integration_app_password
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"id": "id_8h2k4q",
"secret": "string"
}- idstringrequired
- secretstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestnot_foundcredential_limitinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/integrations/app-passwords/{id}/secret" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN"POST/v1/integrations/authenticateExchange a dedicated app password for a scoped integration tokensession
- Audience
- Integrations · Native API
- Authorization
- No credential needed
- OpenAPI operation ID
exchange_integration_app_password- Max body
- 4 KiB
Request body application/json · required
{
"name": "Fargo",
"password": "string",
"username": "Fargo"
}- namestringrequired
- passwordstringrequired
- usernamestringrequired
Responses
201Successapplication/json
{
"accountId": "id_8h2k4q",
"token": "string",
"userId": "id_8h2k4q",
"username": "Fargo"
}- accountIdstringrequired
- tokenstringrequired
- userIdstringrequired
- usernamestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestnot_foundcredential_limitinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/integrations/authenticate" \
-H "Content-Type: application/json" \
-d '{"name":"Fargo","password":"string","username":"Fargo"}'GET/v1/integrations/compatibilityRead integration compatibility capabilitiesadmin
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
get_integration_compatibility
Responses
200Successapplication/json
{
"enabled": true,
"players": true,
"profiles": [
"string"
]
}- enabledbooleanrequired
- playersbooleanrequired
- profilesarray of stringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestnot_foundcredential_limitinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/integrations/compatibility" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/integrations/itemsRead bounded native catalog facts with exact visible totalsread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
integration_items
Parameters
| Name | In | Type | Description |
|---|---|---|---|
ids | query | string | |
libraryId | query | string | |
libraryKind | query | string | |
kind | query | string | |
parentId | query | string | |
provider | query | string | |
providerId | query | string | |
year | query | string | |
search | query | string | |
sort | query | string | |
order | query | string | |
addedAfter | query | string | |
addedBefore | query | string | |
includeFiles | query | string | |
hasPaths | query | string | |
cursor | query | string | |
limit | query | integer | ""1–100 |
Responses
200Successapplication/json
{
"items": [
{
"addedAt": "2026-10-18T19:30:00Z",
"available": true,
"durationSeconds": 0,
"episode": {
"airDate": "string",
"localIdentityStatus": "string",
"number": 0,
"numbering": "string",
"orderingBasis": "string",
"providerMatchStatus": "string",
"seasonId": "id_8h2k4q",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"sourceBoundary": "string"
},
"height": 0,
"id": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"mediaSources": [
{
"audioCodec": "string",
"available": true,
"bitRate": 0,
"container": "string",
"durationSeconds": 0,
"edition": "string",
"id": "id_8h2k4q",
"partIndex": 0,
"path": "string",
"size": 0,
"video": {}
}
],
"mediaSourcesNextCursor": "eyJvIjoyMH0",
"paths": [
"string"
],
"providerIds": {
"key": "string"
},
"season": {
"number": 0,
"showId": "id_8h2k4q"
},
"title": "Fargo",
"width": 0,
"year": 0
}
],
"nextCursor": "eyJvIjoyMH0",
"total": 0
}itemsarray of objectrequired
- addedAtstring
- availablebooleanrequired
- durationSecondsnumber
episodeobject
- airDatestring
- localIdentityStatusstringrequired
- numberintegerrequired
- numberingstringrequired
- orderingBasisstringrequired
- providerMatchStatusstringrequired
- seasonIdstring
- seasonNumberinteger
- showIdstringrequired
- showTitlestringrequired
- sourceBoundarystringrequired
- heightinteger
- idstringrequired
- kindstringrequired
- libraryIdstringrequired
mediaSourcesarray of objectrequired
- audioCodecstring
- availablebooleanrequired
- bitRateinteger
- containerstringrequired
- durationSecondsnumberrequired
- editionstring
- idstringrequired
- partIndexintegerrequired
- pathstring
- sizeintegerrequired
videoobject
- bitDepthinteger
- bitRateinteger
- codecstringrequired
- dynamicRangestring
- frameRatenumber
- hdr10Plusboolean
- heightintegerrequired
- widthintegerrequired
- mediaSourcesNextCursorstring
- pathsarray of stringrequired
- providerIdsobjectrequired
seasonobject
- numberintegerrequired
- showIdstringrequired
- titlestringrequired
- widthinteger
- yearinteger
- nextCursorstring
- totalintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestinvalid_cursorcursor_expiredstale_continuationnot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/integrations/items" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/integrations/items/{id}/media-infoRead paged stored media facts without delivery negotiationread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
integration_media_info
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
cursor | query | string | |
limit | query | integer | ""1–100 |
Responses
200Successapplication/json
{
"mediaSources": [
{
"audioCodec": "string",
"available": true,
"bitRate": 0,
"container": "string",
"durationSeconds": 0,
"edition": "string",
"id": "id_8h2k4q",
"partIndex": 0,
"path": "string",
"size": 0,
"video": {
"bitDepth": 0,
"bitRate": 0,
"codec": "string",
"dynamicRange": "string",
"frameRate": 0,
"hdr10Plus": true,
"height": 0,
"width": 0
}
}
],
"nextCursor": "eyJvIjoyMH0",
"total": 0
}mediaSourcesarray of objectrequired
- audioCodecstring
- availablebooleanrequired
- bitRateinteger
- containerstringrequired
- durationSecondsnumberrequired
- editionstring
- idstringrequired
- partIndexintegerrequired
- pathstring
- sizeintegerrequired
videoobject
- bitDepthinteger
- bitRateinteger
- codecstringrequired
- dynamicRangestring
- frameRatenumber
- hdr10Plusboolean
- heightintegerrequired
- widthintegerrequired
- nextCursorstring
- totalintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestinvalid_cursorcursor_expiredstale_continuationnot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/integrations/items/{id}/media-info" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/integrations/items/{id}/subtitles/refreshReread exact subtitle sidecars using stored media evidencelibrary
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the library scope, or a signed-in session
- OpenAPI operation ID
validate_integration_subtitles- Max body
- 4 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/json · required
{}object
Responses
200Successapplication/json
{
"sources": 0
}- sourcesintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittednot_foundinvalid_requestinternalsubtitle_unavailablesubtitle_not_foundsubtitle_renderer_platform_unsupportedsubtitle_renderer_configurationsubtitle_conflictsubtitle_operation_conflictsubtitle_capacitysubtitle_unsupportedsubtitle_invalid_inputsubtitle_provider_not_configuredsubtitle_provider_key_rejectedsubtitle_provider_sign_in_failedsubtitle_provider_sign_in_requiredsubtitle_provider_quotasubtitle_provider_busydatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/integrations/items/{id}/subtitles/refresh" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'GET/v1/integrations/keysRead keys within the caller's integration grantread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
list_integration_keys
Responses
200Successapplication/json
{
"items": [
{
"id": "id_8h2k4q",
"name": "Fargo",
"secret": "string"
}
]
}itemsarray of objectrequired
- idstringrequired
- namestringrequired
- secretstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestnot_foundcredential_limitinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/integrations/keys" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/integrations/keysCreate a key within this app password grantread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
mint_integration_key- Max body
- 4 KiB
Request body application/json · required
{
"name": "Fargo"
}- namestringrequired
Responses
201Successapplication/json
{
"credential": {
"createdAt": "2026-10-18T19:30:00Z",
"endedReason": "string",
"expiresAt": "2026-10-18T19:30:00Z",
"hint": "string",
"id": "id_8h2k4q",
"kind": "string",
"lastUsedAt": "2026-10-18T19:30:00Z",
"member": {
"accountId": "id_8h2k4q",
"profile": "string",
"profileId": "id_8h2k4q",
"username": "Fargo"
},
"name": "Fargo",
"scopes": [
"string"
],
"state": "string"
},
"secret": "string"
}credentialobjectrequired
- createdAtstringrequired
- endedReasonstring
- expiresAtstring
- hintstringrequired
- idstringrequired
- kindstringrequired
- lastUsedAtstring
memberobjectrequired
- accountIdstringrequired
- profilestringrequired
- profileIdstringrequired
- usernamestringrequired
- namestringrequired
- scopesarray of stringrequired
- statestringrequired
- secretstring
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestnot_foundcredential_limitinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/integrations/keys" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Fargo"}'GET/v1/integrations/librariesRead authorized native libraries and owner-authorized source pathsread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
integration_libraries
Parameters
| Name | In | Type | Description |
|---|---|---|---|
cursor | query | string | |
limit | query | integer | ""1–100 |
Responses
200Successapplication/json
{
"items": [
{
"id": "id_8h2k4q",
"kind": "string",
"name": "Fargo",
"paths": [
"string"
]
}
],
"nextCursor": "eyJvIjoyMH0"
}itemsarray of objectrequired
- idstringrequired
- kindstringrequired
- namestringrequired
- pathsarray of stringrequired
- nextCursorstring
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestinvalid_cursorcursor_expiredstale_continuationnot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/integrations/libraries" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/integrations/refreshQueue a refresh of one library, or of every enabled librarylibrary
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the library scope, or a signed-in session
- OpenAPI operation ID
refresh_integrations- Max body
- 1 MiB
Request body application/json
{
"libraryId": "id_8h2k4q"
}- libraryIdstring
Responses
202Successapplication/json
{
"deferred": true,
"jobs": [
{
"analyzed": 0,
"error": "string",
"id": "id_8h2k4q",
"jobs": [
"string"
],
"phase": "string",
"processed": 0,
"scanMode": "string",
"sourceId": "id_8h2k4q",
"status": "string",
"warnings": 0
}
],
"paths": [
{
"folder": "string",
"libraryId": "id_8h2k4q",
"path": "string",
"scanScope": "string",
"sourceId": "id_8h2k4q",
"status": "string"
}
]
}- deferredboolean
jobsarray of objectrequired
- analyzedintegerrequired
- errorstring
- idstringrequired
- jobsarray of string
- phasestring
- processedintegerrequired
- scanModestring
- sourceIdstring
- statusstringrequired
- warningsintegerrequired
pathsarray of objectrequired
- folderstring
- libraryIdstring
- pathstringrequired
- scanScopestring
- sourceIdstring
- statusstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestbody_too_largenot_foundadministration_unavailableinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/integrations/refresh" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"libraryId":"id_8h2k4q"}'GET/v1/integrations/sessionsRead native dashboard sessions or own-account controlsread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
integration_sessions
Parameters
| Name | In | Type | Description |
|---|---|---|---|
cursor | query | string | |
limit | query | integer | ""1–100 |
Responses
200Successapplication/json
{
"items": [
{
"actions": [
"string"
],
"app": "string",
"device": {
"id": "id_8h2k4q",
"name": "Fargo"
},
"durationMs": 1800000,
"id": "id_8h2k4q",
"item": {
"episode": {
"airDate": "string",
"localIdentityStatus": "string",
"number": 0,
"numbering": "string",
"orderingBasis": "string",
"providerMatchStatus": "string",
"seasonId": "id_8h2k4q",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"sourceBoundary": "string"
},
"id": "id_8h2k4q",
"kind": "string",
"title": "Fargo"
},
"kind": "string",
"location": "string",
"platform": "string",
"positionMs": 1800000,
"profile": {
"id": "id_8h2k4q",
"name": "Fargo"
},
"revision": "r12",
"startedAt": "2026-10-18T19:30:00Z",
"state": "string",
"user": {
"id": "id_8h2k4q",
"name": "Fargo"
}
}
],
"nextCursor": "eyJvIjoyMH0"
}itemsarray of objectrequired
- actionsarray of stringrequired
- appstring
deviceobjectrequired
- idstringrequired
- namestringrequired
- durationMsinteger
- idstringrequired
itemobject
episodeobject
- airDatestring
- localIdentityStatusstringrequired
- numberintegerrequired
- numberingstringrequired
- orderingBasisstringrequired
- providerMatchStatusstringrequired
- seasonIdstring
- seasonNumberinteger
- showIdstringrequired
- showTitlestringrequired
- sourceBoundarystringrequired
- idstringrequired
- kindstring
- titlestringrequired
- kindstringrequired
- locationstring
- platformstring
- positionMsintegerrequired
profileobject
- idstringrequired
- namestringrequired
- revisionstring
- startedAtstring
- statestringrequired
userobject
- idstringrequired
- namestringrequired
- nextCursorstring
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestinvalid_cursorcursor_expiredstale_continuationnot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/integrations/sessions" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/integrations/shows/{id}/episodesRead bounded native episodes across all seasons, or resolve one real seasonread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
integration_show_episodes
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
season | query | string | |
seasonId | query | string | |
year | query | string | |
search | query | string | |
provider | query | string | |
providerId | query | string | |
includeFiles | query | string | |
sort | query | string | |
order | query | string | |
addedAfter | query | string | |
addedBefore | query | string | |
cursor | query | string | |
limit | query | integer | ""1–100 |
Responses
200Successapplication/json
{
"items": [
{
"addedAt": "2026-10-18T19:30:00Z",
"available": true,
"durationSeconds": 0,
"episode": {
"airDate": "string",
"localIdentityStatus": "string",
"number": 0,
"numbering": "string",
"orderingBasis": "string",
"providerMatchStatus": "string",
"seasonId": "id_8h2k4q",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"sourceBoundary": "string"
},
"height": 0,
"id": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"mediaSources": [
{
"audioCodec": "string",
"available": true,
"bitRate": 0,
"container": "string",
"durationSeconds": 0,
"edition": "string",
"id": "id_8h2k4q",
"partIndex": 0,
"path": "string",
"size": 0,
"video": {}
}
],
"mediaSourcesNextCursor": "eyJvIjoyMH0",
"paths": [
"string"
],
"providerIds": {
"key": "string"
},
"season": {
"number": 0,
"showId": "id_8h2k4q"
},
"title": "Fargo",
"width": 0,
"year": 0
}
],
"nextCursor": "eyJvIjoyMH0",
"total": 0
}itemsarray of objectrequired
- addedAtstring
- availablebooleanrequired
- durationSecondsnumber
episodeobject
- airDatestring
- localIdentityStatusstringrequired
- numberintegerrequired
- numberingstringrequired
- orderingBasisstringrequired
- providerMatchStatusstringrequired
- seasonIdstring
- seasonNumberinteger
- showIdstringrequired
- showTitlestringrequired
- sourceBoundarystringrequired
- heightinteger
- idstringrequired
- kindstringrequired
- libraryIdstringrequired
mediaSourcesarray of objectrequired
- audioCodecstring
- availablebooleanrequired
- bitRateinteger
- containerstringrequired
- durationSecondsnumberrequired
- editionstring
- idstringrequired
- partIndexintegerrequired
- pathstring
- sizeintegerrequired
videoobject
- bitDepthinteger
- bitRateinteger
- codecstringrequired
- dynamicRangestring
- frameRatenumber
- hdr10Plusboolean
- heightintegerrequired
- widthintegerrequired
- mediaSourcesNextCursorstring
- pathsarray of stringrequired
- providerIdsobjectrequired
seasonobject
- numberintegerrequired
- showIdstringrequired
- titlestringrequired
- widthinteger
- yearinteger
- nextCursorstring
- totalintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestinvalid_cursorcursor_expiredstale_continuationnot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/integrations/shows/{id}/episodes" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/integrations/shows/{id}/seasonsRead a bounded native season hierarchyread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
integration_show_seasons
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
includeFiles | query | string | |
hasPaths | query | string | |
cursor | query | string | |
limit | query | integer | ""1–100 |
Responses
200Successapplication/json
{
"items": [
{
"addedAt": "2026-10-18T19:30:00Z",
"available": true,
"durationSeconds": 0,
"episode": {
"airDate": "string",
"localIdentityStatus": "string",
"number": 0,
"numbering": "string",
"orderingBasis": "string",
"providerMatchStatus": "string",
"seasonId": "id_8h2k4q",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"sourceBoundary": "string"
},
"height": 0,
"id": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"mediaSources": [
{
"audioCodec": "string",
"available": true,
"bitRate": 0,
"container": "string",
"durationSeconds": 0,
"edition": "string",
"id": "id_8h2k4q",
"partIndex": 0,
"path": "string",
"size": 0,
"video": {}
}
],
"mediaSourcesNextCursor": "eyJvIjoyMH0",
"paths": [
"string"
],
"providerIds": {
"key": "string"
},
"season": {
"number": 0,
"showId": "id_8h2k4q"
},
"title": "Fargo",
"width": 0,
"year": 0
}
],
"nextCursor": "eyJvIjoyMH0",
"total": 0
}itemsarray of objectrequired
- addedAtstring
- availablebooleanrequired
- durationSecondsnumber
episodeobject
- airDatestring
- localIdentityStatusstringrequired
- numberintegerrequired
- numberingstringrequired
- orderingBasisstringrequired
- providerMatchStatusstringrequired
- seasonIdstring
- seasonNumberinteger
- showIdstringrequired
- showTitlestringrequired
- sourceBoundarystringrequired
- heightinteger
- idstringrequired
- kindstringrequired
- libraryIdstringrequired
mediaSourcesarray of objectrequired
- audioCodecstring
- availablebooleanrequired
- bitRateinteger
- containerstringrequired
- durationSecondsnumberrequired
- editionstring
- idstringrequired
- partIndexintegerrequired
- pathstring
- sizeintegerrequired
videoobject
- bitDepthinteger
- bitRateinteger
- codecstringrequired
- dynamicRangestring
- frameRatenumber
- hdr10Plusboolean
- heightintegerrequired
- widthintegerrequired
- mediaSourcesNextCursorstring
- pathsarray of stringrequired
- providerIdsobjectrequired
seasonobject
- numberintegerrequired
- showIdstringrequired
- titlestringrequired
- widthinteger
- yearinteger
- nextCursorstring
- totalintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestinvalid_cursorcursor_expiredstale_continuationnot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/integrations/shows/{id}/seasons" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/integrations/usersRead permitted native user and profile identitiesread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
integration_users
Parameters
| Name | In | Type | Description |
|---|---|---|---|
cursor | query | string | |
limit | query | integer | ""1–100 |
Responses
200Successapplication/json
{
"items": [
{
"accountId": "id_8h2k4q",
"disabled": true,
"profileId": "id_8h2k4q",
"profileName": "Fargo",
"role": "string",
"username": "Fargo"
}
],
"nextCursor": "eyJvIjoyMH0"
}itemsarray of objectrequired
- accountIdstringrequired
- disabledbooleanrequired
- profileIdstringrequired
- profileNamestringrequired
- rolestringrequired
- usernamestringrequired
- nextCursorstring
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinsufficient_scopesession_requiredinvalid_requestinvalid_cursorcursor_expiredstale_continuationnot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/integrations/users" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/itemsRead or update the selected projectionread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_items
Parameters
| Name | In | Type | Description |
|---|---|---|---|
libraryId | query | string | |
cursor | query | string | |
limit | query | integer |
Responses
200Successapplication/json
{
"items": [
{
"addedAt": "2026-10-18T19:30:00Z",
"audioFacts": {
"atmos": true,
"bitDepth": 0,
"channels": 0,
"codec": "string",
"layout": "string",
"lossless": true,
"sampleRate": 0
},
"available": true,
"backdropUrl": "https://example.com/…",
"bookFile": {
"bookId": "id_8h2k4q",
"bookTitle": "Fargo",
"discNumber": 0,
"localMetadata": {
"authors": [],
"description": "string",
"edition": "string",
"identifiers": [],
"language": "en",
"narrators": [],
"publishedYear": 0,
"publisher": "string",
"series": [],
"sources": {}
},
"localMetadataIssue": "string",
"localPolicy": {
"localMode": "string",
"revision": 0
},
"partNumber": 0,
"sourceBoundary": "string"
},
"durationMs": 1800000,
"durationState": "unrepresentable",
"episode": {
"airDate": "string",
"localIdentityStatus": "string",
"number": 0,
"numbering": "string",
"orderingBasis": "string",
"providerMatchStatus": "string",
"seasonId": "id_8h2k4q",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"sourceBoundary": "string"
},
"fileInfoOpening": "string",
"id": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"missing": true,
"overview": "string",
"posterUrl": "https://example.com/…",
"progressMs": 1800000,
"song": {
"albumArtist": "string",
"albumId": "id_8h2k4q",
"albumTitle": "Fargo",
"artist": "string",
"discNumber": 0,
"localMetadataIssue": "string",
"providerArtist": "string",
"providerMatchStatus": "string",
"providerObservedAt": "2026-10-18T19:30:00Z",
"providerRecordingId": "id_8h2k4q",
"providerReleaseGroupId": "id_8h2k4q",
"providerReleaseId": "id_8h2k4q",
"providerReleaseStatus": "string",
"providerSourceUrl": "https://example.com/…",
"providerTitle": "Fargo",
"providerTrackId": "id_8h2k4q",
"trackNumber": 0
},
"sources": [
{
"audioCodec": "string",
"container": "string",
"durationMs": 1800000,
"height": 0,
"id": "id_8h2k4q",
"videoCodec": "string",
"width": 0
}
],
"stillUrl": "https://example.com/…",
"title": "Fargo",
"watched": true,
"year": 0
}
],
"nextCursor": "eyJvIjoyMH0"
}itemsarray of objectrequired
- addedAtstring | any | nullrequired
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- availablebooleanrequired
- backdropUrlstring
bookFileobject
- bookIdstringrequired
- bookTitlestringrequired
- discNumberinteger
localMetadataobject
- authorsarray of stringrequired
- descriptionstring
- editionstring
identifiersarray of objectrequired
- schemestringrequired
- valuestringrequired
- languagestring
- narratorsarray of stringrequired
- publishedYearinteger
- publisherstring
seriesarray of objectrequired
- namestringrequired
- positionstring
- sourcesobjectrequired
- localMetadataIssuestring
localPolicyobject
- localModestringrequired
- revisionintegerrequired
- partNumberinteger
- sourceBoundarystringrequired
- durationMsinteger≥ 0
- durationStatestringone of "unrepresentable"
episodeobject
- airDatestring
- localIdentityStatusstringrequired
- numberintegerrequired
- numberingstringrequired
- orderingBasisstringrequired
- providerMatchStatusstringrequired
- seasonIdstring
- seasonNumberinteger
- showIdstringrequired
- showTitlestringrequired
- sourceBoundarystringrequired
- fileInfoOpeningstring
- idstringrequired
- kindstringrequired
- libraryIdstringrequired
- missingbooleanrequired
- overviewstring
- posterUrlstring
- progressMsintegerrequired≥ 0
songobject
- albumArtiststringrequired
- albumIdstringrequired
- albumTitlestringrequired
- artiststringrequired
- discNumberinteger
- localMetadataIssuestring
- providerArtiststring
- providerMatchStatusstringrequired
- providerObservedAtstring
- providerRecordingIdstring
- providerReleaseGroupIdstring
- providerReleaseIdstring
- providerReleaseStatusstringrequired
- providerSourceUrlstring
- providerTitlestring
- providerTrackIdstring
- trackNumberinteger
sourcesarray of object
- audioCodecstringrequired
- containerstringrequired
- durationMsintegerrequired≥ 0
- heightintegerrequired
- idstringrequired
- videoCodecstringrequired
- widthintegerrequired
- stillUrlstring
- titlestringrequired
- watchedboolean
- yearinteger
- nextCursorstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/items" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/items/{id}Read or update the selected projectionread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_items_id
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"addedAt": "2026-10-18T19:30:00Z",
"audioFacts": {
"atmos": true,
"bitDepth": 0,
"channels": 0,
"codec": "string",
"layout": "string",
"lossless": true,
"sampleRate": 0
},
"available": true,
"backdropUrl": "https://example.com/…",
"bookFile": {
"bookId": "id_8h2k4q",
"bookTitle": "Fargo",
"discNumber": 0,
"localMetadata": {
"authors": [
"string"
],
"description": "string",
"edition": "string",
"identifiers": [
{
"scheme": "string",
"value": "string"
}
],
"language": "en",
"narrators": [
"string"
],
"publishedYear": 0,
"publisher": "string",
"series": [
{
"name": "Fargo",
"position": "string"
}
],
"sources": {
"key": "string"
}
},
"localMetadataIssue": "string",
"localPolicy": {
"localMode": "string",
"revision": 0
},
"partNumber": 0,
"sourceBoundary": "string"
},
"durationMs": 1800000,
"durationState": "unrepresentable",
"episode": {
"airDate": "string",
"localIdentityStatus": "string",
"number": 0,
"numbering": "string",
"orderingBasis": "string",
"providerMatchStatus": "string",
"seasonId": "id_8h2k4q",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"sourceBoundary": "string"
},
"fileInfoOpening": "string",
"id": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"missing": true,
"overview": "string",
"posterUrl": "https://example.com/…",
"progressMs": 1800000,
"song": {
"albumArtist": "string",
"albumId": "id_8h2k4q",
"albumTitle": "Fargo",
"artist": "string",
"discNumber": 0,
"localMetadataIssue": "string",
"providerArtist": "string",
"providerMatchStatus": "string",
"providerObservedAt": "2026-10-18T19:30:00Z",
"providerRecordingId": "id_8h2k4q",
"providerReleaseGroupId": "id_8h2k4q",
"providerReleaseId": "id_8h2k4q",
"providerReleaseStatus": "string",
"providerSourceUrl": "https://example.com/…",
"providerTitle": "Fargo",
"providerTrackId": "id_8h2k4q",
"trackNumber": 0
},
"sources": [
{
"audioCodec": "string",
"container": "string",
"durationMs": 1800000,
"height": 0,
"id": "id_8h2k4q",
"videoCodec": "string",
"width": 0
}
],
"stillUrl": "https://example.com/…",
"title": "Fargo",
"variant": "item",
"watched": true,
"year": 0
}- addedAtstring | any | nullrequired
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- availablebooleanrequired
- backdropUrlstring
bookFileobject
- bookIdstringrequired
- bookTitlestringrequired
- discNumberinteger
localMetadataobject
- authorsarray of stringrequired
- descriptionstring
- editionstring
identifiersarray of objectrequired
- schemestringrequired
- valuestringrequired
- languagestring
- narratorsarray of stringrequired
- publishedYearinteger
- publisherstring
seriesarray of objectrequired
- namestringrequired
- positionstring
- sourcesobjectrequired
- localMetadataIssuestring
localPolicyobject
- localModestringrequired
- revisionintegerrequired
- partNumberinteger
- sourceBoundarystringrequired
- durationMsinteger≥ 0
- durationStatestringone of "unrepresentable"
episodeobject
- airDatestring
- localIdentityStatusstringrequired
- numberintegerrequired
- numberingstringrequired
- orderingBasisstringrequired
- providerMatchStatusstringrequired
- seasonIdstring
- seasonNumberinteger
- showIdstringrequired
- showTitlestringrequired
- sourceBoundarystringrequired
- fileInfoOpeningstring
- idstringrequired
- kindstringrequired
- libraryIdstringrequired
- missingbooleanrequired
- overviewstring
- posterUrlstring
- progressMsintegerrequired≥ 0
songobject
- albumArtiststringrequired
- albumIdstringrequired
- albumTitlestringrequired
- artiststringrequired
- discNumberinteger
- localMetadataIssuestring
- providerArtiststring
- providerMatchStatusstringrequired
- providerObservedAtstring
- providerRecordingIdstring
- providerReleaseGroupIdstring
- providerReleaseIdstring
- providerReleaseStatusstringrequired
- providerSourceUrlstring
- providerTitlestring
- providerTrackIdstring
- trackNumberinteger
sourcesarray of object
- audioCodecstringrequired
- containerstringrequired
- durationMsintegerrequired≥ 0
- heightintegerrequired
- idstringrequired
- videoCodecstringrequired
- widthintegerrequired
- stillUrlstring
- titlestringrequired
- variant"item"required
- watchedboolean
- yearinteger
202Successapplication/json
{
"detail": {
"revision": {
"catalog": 0,
"viewer": 0
},
"scope": {
"itemId": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"serverId": "id_8h2k4q",
"viewerFence": "string"
}
},
"kind": "file-info-preparing",
"queryId": "id_8h2k4q",
"retryAfterMs": 1800000,
"state": "preparing",
"variant": "preparing"
}detailobject
revisionobjectrequired
- catalogintegerrequired
- viewerintegerrequired
scopeobjectrequired
- itemIdstringrequired
- libraryIdstringrequired
- serverIdstringrequired
- viewerFencestringrequired
- kind"file-info-preparing"required
- queryIdstringrequiredlength 1–512pattern ^[A-Za-z0-9_.-]+$
- retryAfterMsintegerrequired≥ 1
- state"preparing"required
- variant"preparing"required
304Successapplication/json
{
"addedAt": "2026-10-18T19:30:00Z",
"audioFacts": {
"atmos": true,
"bitDepth": 0,
"channels": 0,
"codec": "string",
"layout": "string",
"lossless": true,
"sampleRate": 0
},
"available": true,
"backdropUrl": "https://example.com/…",
"bookFile": {
"bookId": "id_8h2k4q",
"bookTitle": "Fargo",
"discNumber": 0,
"localMetadata": {
"authors": [
"string"
],
"description": "string",
"edition": "string",
"identifiers": [
{
"scheme": "string",
"value": "string"
}
],
"language": "en",
"narrators": [
"string"
],
"publishedYear": 0,
"publisher": "string",
"series": [
{
"name": "Fargo",
"position": "string"
}
],
"sources": {
"key": "string"
}
},
"localMetadataIssue": "string",
"localPolicy": {
"localMode": "string",
"revision": 0
},
"partNumber": 0,
"sourceBoundary": "string"
},
"durationMs": 1800000,
"durationState": "unrepresentable",
"episode": {
"airDate": "string",
"localIdentityStatus": "string",
"number": 0,
"numbering": "string",
"orderingBasis": "string",
"providerMatchStatus": "string",
"seasonId": "id_8h2k4q",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"sourceBoundary": "string"
},
"fileInfoOpening": "string",
"id": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"missing": true,
"overview": "string",
"posterUrl": "https://example.com/…",
"progressMs": 1800000,
"song": {
"albumArtist": "string",
"albumId": "id_8h2k4q",
"albumTitle": "Fargo",
"artist": "string",
"discNumber": 0,
"localMetadataIssue": "string",
"providerArtist": "string",
"providerMatchStatus": "string",
"providerObservedAt": "2026-10-18T19:30:00Z",
"providerRecordingId": "id_8h2k4q",
"providerReleaseGroupId": "id_8h2k4q",
"providerReleaseId": "id_8h2k4q",
"providerReleaseStatus": "string",
"providerSourceUrl": "https://example.com/…",
"providerTitle": "Fargo",
"providerTrackId": "id_8h2k4q",
"trackNumber": 0
},
"sources": [
{
"audioCodec": "string",
"container": "string",
"durationMs": 1800000,
"height": 0,
"id": "id_8h2k4q",
"videoCodec": "string",
"width": 0
}
],
"stillUrl": "https://example.com/…",
"title": "Fargo",
"variant": "item",
"watched": true,
"year": 0
}- addedAtstring | any | nullrequired
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- availablebooleanrequired
- backdropUrlstring
bookFileobject
- bookIdstringrequired
- bookTitlestringrequired
- discNumberinteger
localMetadataobject
- authorsarray of stringrequired
- descriptionstring
- editionstring
identifiersarray of objectrequired
- schemestringrequired
- valuestringrequired
- languagestring
- narratorsarray of stringrequired
- publishedYearinteger
- publisherstring
seriesarray of objectrequired
- namestringrequired
- positionstring
- sourcesobjectrequired
- localMetadataIssuestring
localPolicyobject
- localModestringrequired
- revisionintegerrequired
- partNumberinteger
- sourceBoundarystringrequired
- durationMsinteger≥ 0
- durationStatestringone of "unrepresentable"
episodeobject
- airDatestring
- localIdentityStatusstringrequired
- numberintegerrequired
- numberingstringrequired
- orderingBasisstringrequired
- providerMatchStatusstringrequired
- seasonIdstring
- seasonNumberinteger
- showIdstringrequired
- showTitlestringrequired
- sourceBoundarystringrequired
- fileInfoOpeningstring
- idstringrequired
- kindstringrequired
- libraryIdstringrequired
- missingbooleanrequired
- overviewstring
- posterUrlstring
- progressMsintegerrequired≥ 0
songobject
- albumArtiststringrequired
- albumIdstringrequired
- albumTitlestringrequired
- artiststringrequired
- discNumberinteger
- localMetadataIssuestring
- providerArtiststring
- providerMatchStatusstringrequired
- providerObservedAtstring
- providerRecordingIdstring
- providerReleaseGroupIdstring
- providerReleaseIdstring
- providerReleaseStatusstringrequired
- providerSourceUrlstring
- providerTitlestring
- providerTrackIdstring
- trackNumberinteger
sourcesarray of object
- audioCodecstringrequired
- containerstringrequired
- durationMsintegerrequired≥ 0
- heightintegerrequired
- idstringrequired
- videoCodecstringrequired
- widthintegerrequired
- stillUrlstring
- titlestringrequired
- variant"item"required
- watchedboolean
- yearinteger
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternalstale_continuationmetadata_unavailabledatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/items/{id}" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/items/{id}/art/{kind}Read title artread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_items_id_art_kind
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
kindrequired | path | string | |
ld | query | string | |
r | query | string | |
sd | query | string | |
size | query | string | |
v | query | string | |
w | query | string |
Responses
200Successapplication/octet-stream
"string"string (binary)
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/items/{id}/art/{kind}" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/items/{id}/detailRead or update the selected projectionread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_items_id_detail
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
related | query | string |
Responses
200Successapplication/json
{
"actions": [
{
"enabled": true,
"id": "id_8h2k4q",
"labelKey": "string",
"max": 0,
"min": 0,
"playback": {
"itemId": "id_8h2k4q",
"startMs": 1800000
},
"step": 0
}
],
"collections": [
{
"id": "id_8h2k4q",
"memberCount": 0,
"name": "Fargo",
"position": 0,
"posterUrls": [
"https://example.com/…"
],
"yearFrom": 0,
"yearTo": 0
}
],
"episodeDetails": {
"contentRating": "string",
"next": {
"id": "id_8h2k4q",
"number": 0,
"title": "Fargo"
},
"previous": {
"id": "id_8h2k4q",
"number": 0,
"title": "Fargo"
}
},
"extras": [
{
"items": [
{
"absoluteNumber": 0,
"activeBeginYear": 0,
"activeEndYear": 0,
"addedAt": "2026-10-18T19:30:00Z",
"airDate": "string",
"album": {},
"albumCount": 0,
"albumType": "string",
"artist": {},
"artistType": "string",
"artworkPaths": [],
"audioFacts": {},
"author": "string",
"available": true,
"backdropUrl": "https://example.com/…",
"badges": [],
"bookProgress": {},
"contentRating": "string",
"count": 0,
"country": "string",
"dateBased": true,
"discNumber": 0,
"displayTitle": "Fargo",
"durationMs": 1800000,
"edition": "string",
"episodeNumber": 0,
"favorite": true,
"genres": [],
"hidden": true,
"homeActions": {},
"homeTitleContext": {},
"id": "id_8h2k4q",
"kind": "string",
"label": "string",
"language": "en",
"lastChanged": "string",
"latestEpisode": {},
"libraryId": "id_8h2k4q",
"media": {},
"missing": true,
"narrators": [],
"navigation": {},
"new": true,
"origin": "string",
"overview": "string",
"overviewSource": "string",
"overviewSourceUrl": "https://example.com/…",
"pageCount": 0,
"pinned": true,
"playback": {},
"plays": 0,
"posterUrl": "https://example.com/…",
"progressMs": 1800000,
"publicationType": "book",
"publishedYear": 0,
"publisher": "string",
"radioSeed": {},
"rating": 0,
"readingMark": {},
"releaseDate": "string",
"removed": true,
"resolution": "string",
"role": "string",
"seasonCount": 0,
"seasonNumber": 0,
"series": [],
"show": {},
"sortLetter": "string",
"special": true,
"stillUrl": "https://example.com/…",
"subtitle": "Fargo",
"title": "Fargo",
"totalAtLeast": 0,
"trackNumber": 0,
"unwatchedCount": 0,
"userRating": 0,
"watched": true,
"watchedCount": 0,
"watchlisted": true,
"year": 0,
"yearMax": 0,
"yearMin": 0
}
],
"label": "string",
"type": "string"
}
],
"facts": {
"contentRating": "string",
"country": "string",
"edition": "string",
"network": "string",
"originalLanguage": "en",
"originalTitle": "Fargo",
"releaseDate": "string",
"studio": "string",
"tagline": "string"
},
"fileInfoOpening": "string",
"item": {
"addedAt": "2026-10-18T19:30:00Z",
"audioFacts": {
"atmos": true,
"bitDepth": 0,
"channels": 0,
"codec": "string",
"layout": "string",
"lossless": true,
"sampleRate": 0
},
"available": true,
"backdropUrl": "https://example.com/…",
"bookFile": {
"bookId": "id_8h2k4q",
"bookTitle": "Fargo",
"discNumber": 0,
"localMetadata": {
"authors": [
"string"
],
"description": "string",
"edition": "string",
"identifiers": [
{}
],
"language": "en",
"narrators": [
"string"
],
"publishedYear": 0,
"publisher": "string",
"series": [
{}
],
"sources": {
"key": "string"
}
},
"localMetadataIssue": "string",
"localPolicy": {
"localMode": "string",
"revision": 0
},
"partNumber": 0,
"sourceBoundary": "string"
},
"durationMs": 1800000,
"durationState": "unrepresentable",
"episode": {
"airDate": "string",
"localIdentityStatus": "string",
"number": 0,
"numbering": "string",
"orderingBasis": "string",
"providerMatchStatus": "string",
"seasonId": "id_8h2k4q",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"sourceBoundary": "string"
},
"fileInfoOpening": "string",
"id": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"missing": true,
"overview": "string",
"posterUrl": "https://example.com/…",
"progressMs": 1800000,
"song": {
"albumArtist": "string",
"albumId": "id_8h2k4q",
"albumTitle": "Fargo",
"artist": "string",
"discNumber": 0,
"localMetadataIssue": "string",
"providerArtist": "string",
"providerMatchStatus": "string",
"providerObservedAt": "2026-10-18T19:30:00Z",
"providerRecordingId": "id_8h2k4q",
"providerReleaseGroupId": "id_8h2k4q",
"providerReleaseId": "id_8h2k4q",
"providerReleaseStatus": "string",
"providerSourceUrl": "https://example.com/…",
"providerTitle": "Fargo",
"providerTrackId": "id_8h2k4q",
"trackNumber": 0
},
"sources": [
{
"audioCodec": "string",
"container": "string",
"durationMs": 1800000,
"height": 0,
"id": "id_8h2k4q",
"videoCodec": "string",
"width": 0
}
],
"stillUrl": "https://example.com/…",
"title": "Fargo",
"watched": true,
"year": 0
},
"languages": {
"audio": [
"string"
],
"subtitles": [
"Fargo"
]
},
"markers": [
{
"automaticSafe": true,
"endMs": 1800000,
"id": "id_8h2k4q",
"kind": "string",
"startMs": 1800000
}
],
"metadata": {
"attributions": [
"string"
],
"creditTotals": {
"cast": 0,
"crew": 0
},
"credits": [
{
"department": "string",
"id": "id_8h2k4q",
"name": "Fargo",
"personId": "id_8h2k4q",
"portraitUrl": "https://example.com/…",
"provider": "string",
"role": "string"
}
],
"genres": [
{
"id": "id_8h2k4q",
"name": "Fargo",
"provider": "string"
}
],
"ratings": [
{
"max": 0,
"observedAt": "2026-10-18T19:30:00Z",
"provider": "string",
"sourceUrl": "https://example.com/…",
"value": 0,
"votes": 0
}
],
"sources": [
{
"observedAt": "2026-10-18T19:30:00Z",
"provider": "string",
"sourceUrl": "https://example.com/…"
}
],
"status": "string"
},
"missingSince": "string",
"personal": {
"conflicts": [
{
"baseRevision": 0,
"baseValue": null,
"choices": [
{}
],
"field": "string",
"id": "id_8h2k4q"
}
],
"continueDismissed": true,
"favorite": true,
"lastPlayedAt": "2026-10-18T19:30:00Z",
"notInterested": true,
"progressMs": 1800000,
"rating": 0,
"revision": 0,
"status": "string",
"watched": true,
"watchlisted": true
},
"related": {
"libraryId": "id_8h2k4q",
"libraryName": "Fargo",
"rows": [
{
"entries": [
{}
],
"evidenceId": "id_8h2k4q",
"hasMore": true,
"heading": "string",
"headingText": {
"code": "string",
"fallback": "string",
"params": {}
},
"id": "id_8h2k4q",
"nextCursor": "eyJvIjoyMH0",
"provider": "string",
"relation": "string"
}
],
"version": 0
},
"revision": {
"catalog": 0,
"viewer": 0
},
"scope": {
"itemId": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"serverId": "id_8h2k4q",
"viewerFence": "string"
},
"variant": "detail"
}actionsarray of objectrequired
- enabledbooleanrequired
- idstringrequired
- labelKeystringrequired
- maxnumber
- minnumber
playbackobject
- itemIdstringrequired
- startMsinteger≥ 0
- stepnumber
collectionsarray of objectrequired
- idstringrequired
- memberCountintegerrequired
- namestringrequired
- positionintegerrequired
- posterUrlsarray of stringrequired
- yearFrominteger
- yearTointeger
episodeDetailsobject
- contentRatingstring
nextobject
- idstringrequired
- numberintegerrequired
- titlestringrequired
previousobject
- idstringrequired
- numberintegerrequired
- titlestringrequired
extrasarray of object
itemsarray of objectrequired
- absoluteNumberinteger
- activeBeginYearinteger
- activeEndYearinteger
- addedAtstring | any | null
- airDatestring
albumobject
- idstringrequired
- namestringrequired
- albumCountinteger
- albumTypestring
artistobject
- idstringrequired
- namestringrequired
- artistTypestring
- artworkPathsarray of string
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- authorstring
- availableboolean
- backdropUrlstring
badgesarray of object0–2 items
- bitDepthintegerrequired≥ 17
- codecstringrequiredpattern ^[A-Za-z0-9_.+-]{1,64}$
- sampleRateintegerrequired≥ 1
- variant"lossless"required
bookProgressobject
- bookIdstringrequired
chapterobject
- endMsintegerrequired
- indexintegerrequired
- startMsintegerrequired
- titlestringrequired
- durationMsinteger
- itemIdstringrequired
- partPositionMsintegerrequired
- positionMsinteger
- remainingMsinteger
- contentRatingstring
- countinteger
- countrystring
- dateBasedboolean
- discNumberinteger
- displayTitlestring
- durationMsinteger≥ 0
- editionstring
- episodeNumberinteger
- favoriteboolean
- genresarray of string
- hiddenboolean | any | null
homeActionsobject
- collectionbooleanrequired
- deletebooleanrequired
- detailsbooleanrequired
- downloadbooleanrequired
- editMetadatabooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- notInterestedboolean
- playbooleanrequired
- playedbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- ratingbooleanrequired
- refreshMetadatabooleanrequired
- removeFromContinueboolean
selectionobjectrequired
- collectionbooleanrequired
- deletebooleanrequired
- downloadbooleanrequired
- editbooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- playbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- refreshbooleanrequired
- watchedbooleanrequired
stateobjectrequired
- containerRevisionintegerrequired
- favoritebooleanrequired
- personalRevisionintegerrequired
- ratingnumber | any | nullrequired
- watchedbooleanrequired
- watchlistedbooleanrequired
- watchedbooleanrequired
homeTitleContextobject
- genresarray of stringrequired
- kindstringrequired
- seasonCountinteger
- yearinteger
- idstringrequired
- kindstringrequired
- labelstring
- languagestring
- lastChangedstring
latestEpisodeobject
- airDatestringrequired
- countintegerrequired
- episodeNumberintegerrequired
- seasonNumberinteger
- titlestring
- libraryIdstring
mediaobject
- absoluteNumberinteger
- activeBeginYearinteger
- activeEndYearinteger
- addedAtstring | any | nullrequired
- airDatestring
albumobject
- idstringrequired
- namestringrequired
- albumCountinteger
- albumTypestring
artistobject
- idstringrequired
- namestringrequired
- artistTypestring
- artworkPathsarray of string
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- authorstring
- availableboolean
- backdropUrlstring
badgesarray of object0–2 items
- bitDepthintegerrequired≥ 17
- codecstringrequiredpattern ^[A-Za-z0-9_.+-]{1,64}$
- sampleRateintegerrequired≥ 1
- variant"lossless"required
bookProgressobject
- bookIdstringrequired
chapterobject
- endMsintegerrequired
- indexintegerrequired
- startMsintegerrequired
- titlestringrequired
- durationMsinteger
- itemIdstringrequired
- partPositionMsintegerrequired
- positionMsinteger
- remainingMsinteger
- contentRatingstring
- countinteger
- countrystring
- dateBasedboolean
- discNumberinteger
- displayTitlestring
- durationMsinteger≥ 0
- editionstring
- episodeNumberinteger
- favoriteboolean
- genresarray of string
homeActionsobject
- collectionbooleanrequired
- deletebooleanrequired
- detailsbooleanrequired
- downloadbooleanrequired
- editMetadatabooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- notInterestedboolean
- playbooleanrequired
- playedbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- ratingbooleanrequired
- refreshMetadatabooleanrequired
- removeFromContinueboolean
selectionobjectrequired
- collectionbooleanrequired
- deletebooleanrequired
- downloadbooleanrequired
- editbooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- playbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- refreshbooleanrequired
- watchedbooleanrequired
stateobjectrequired
- containerRevisionintegerrequired
- favoritebooleanrequired
- personalRevisionintegerrequired
- ratingnumber | any | nullrequired
- watchedbooleanrequired
- watchlistedbooleanrequired
- watchedbooleanrequired
homeTitleContextobject
- genresarray of stringrequired
- kindstringrequired
- seasonCountinteger
- yearinteger
- idstringrequired
- kindstringrequired
- labelstring
- languagestring
- lastChangedstring
latestEpisodeobject
- airDatestringrequired
- countintegerrequired
- episodeNumberintegerrequired
- seasonNumberinteger
- titlestring
- libraryIdstring
- missingbooleanrequired
- narratorsarray of string
navigationobject
browseobject
- pivotstringrequiredlength 1–256
- queryobject
sortarray of objectrequired0–1 items
- directionstringrequiredone of "asc", "desc"
- fieldstringrequired
- categorystring
- channelIdstring
- entityIdstring
- provenancestring
- sourceIdstring
- viewstringrequired
- newboolean
- originstring
- overviewstring
- overviewSourcestring
- overviewSourceUrlstring
- pageCountinteger
- pinnedboolean
playbackobject
- itemIdstringrequired
- startMsinteger≥ 0
- playsinteger
- posterUrlstring
- progressMsinteger≥ 0
- publicationTypestringone of "book", "magazine", "newspaper"
- publishedYearinteger
- publisherstring
radioSeedobject
- idstringrequired
- kindstringrequired
- ratingnumber
readingMarkobject
- itemIdstringrequired
- readbooleanrequired
- revisionintegerrequired
- releaseDatestring
- removedboolean
- resolutionstring
- rolestring
- seasonCountinteger
- seasonNumberinteger
seriesarray of object
- namestringrequired
- positionstring
showobject
- idstringrequired
- namestringrequired
- sortLetterstring
- specialboolean
- stillUrlstring
- subtitlestring
- titlestringrequired
- totalAtLeastinteger
- trackNumberinteger
- unwatchedCountinteger
- userRatinginteger | any | null
- watchedboolean
- watchedCountinteger
- watchlistedboolean
- yearinteger
- yearMaxinteger
- yearMininteger
- missingboolean
- narratorsarray of string
navigationobject
browseobject
- pivotstringrequiredlength 1–256
- queryobject
sortarray of objectrequired0–1 items
- directionstringrequiredone of "asc", "desc"
- fieldstringrequired
- categorystring
- channelIdstring
- entityIdstring
- provenancestring
- sourceIdstring
- viewstringrequired
- newboolean
- originstring
- overviewstring
- overviewSourcestring
- overviewSourceUrlstring
- pageCountinteger
- pinnedboolean
playbackobject
- itemIdstringrequired
- startMsinteger≥ 0
- playsinteger
- posterUrlstring
- progressMsinteger≥ 0
- publicationTypestringone of "book", "magazine", "newspaper"
- publishedYearinteger
- publisherstring
radioSeedobject
- idstringrequired
- kindstringrequired
- ratingnumber
readingMarkobject
- itemIdstringrequired
- readbooleanrequired
- revisionintegerrequired
- releaseDatestring
- removedboolean
- resolutionstring
- rolestring
- seasonCountinteger
- seasonNumberinteger
seriesarray of object
- namestringrequired
- positionstring
showobject
- idstringrequired
- namestringrequired
- sortLetterstring
- specialboolean
- stillUrlstring
- subtitlestring
- titlestring
- totalAtLeastinteger
- trackNumberinteger
- unwatchedCountinteger
- userRatinginteger | any | null
- watchedboolean
- watchedCountinteger
- watchlistedboolean
- yearinteger
- yearMaxinteger
- yearMininteger
- labelstringrequired
- typestringrequired
factsobject
- contentRatingstring
- countrystring
- editionstring
- networkstring
- originalLanguagestring
- originalTitlestring
- releaseDatestring
- studiostring
- taglinestring
- fileInfoOpeningstring
itemobjectrequired
- addedAtstring | any | nullrequired
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- availablebooleanrequired
- backdropUrlstring
bookFileobject
- bookIdstringrequired
- bookTitlestringrequired
- discNumberinteger
localMetadataobject
- authorsarray of stringrequired
- descriptionstring
- editionstring
identifiersarray of objectrequired
- schemestringrequired
- valuestringrequired
- languagestring
- narratorsarray of stringrequired
- publishedYearinteger
- publisherstring
seriesarray of objectrequired
- namestringrequired
- positionstring
- sourcesobjectrequired
- localMetadataIssuestring
localPolicyobject
- localModestringrequired
- revisionintegerrequired
- partNumberinteger
- sourceBoundarystringrequired
- durationMsinteger≥ 0
- durationStatestringone of "unrepresentable"
episodeobject
- airDatestring
- localIdentityStatusstringrequired
- numberintegerrequired
- numberingstringrequired
- orderingBasisstringrequired
- providerMatchStatusstringrequired
- seasonIdstring
- seasonNumberinteger
- showIdstringrequired
- showTitlestringrequired
- sourceBoundarystringrequired
- fileInfoOpeningstring
- idstringrequired
- kindstringrequired
- libraryIdstringrequired
- missingbooleanrequired
- overviewstring
- posterUrlstring
- progressMsintegerrequired≥ 0
songobject
- albumArtiststringrequired
- albumIdstringrequired
- albumTitlestringrequired
- artiststringrequired
- discNumberinteger
- localMetadataIssuestring
- providerArtiststring
- providerMatchStatusstringrequired
- providerObservedAtstring
- providerRecordingIdstring
- providerReleaseGroupIdstring
- providerReleaseIdstring
- providerReleaseStatusstringrequired
- providerSourceUrlstring
- providerTitlestring
- providerTrackIdstring
- trackNumberinteger
sourcesarray of object
- audioCodecstringrequired
- containerstringrequired
- durationMsintegerrequired≥ 0
- heightintegerrequired
- idstringrequired
- videoCodecstringrequired
- widthintegerrequired
- stillUrlstring
- titlestringrequired
- watchedboolean
- yearinteger
languagesobjectrequired
- audioarray of stringrequired
- subtitlesarray of stringrequired
markersarray of objectrequired
- automaticSafebooleanrequired
- endMsintegerrequired≥ 0
- idstringrequired
- kindstringrequired
- startMsintegerrequired≥ 0
metadataobjectrequired
- attributionsarray of string
creditTotalsobjectrequired
- castintegerrequired
- crewintegerrequired
creditsarray of objectrequired
- departmentstringrequired
- idstringrequired
- namestringrequired
- personIdstring
- portraitUrlstring
- providerstringrequired
- rolestringrequired
genresarray of objectrequired
- idstringrequired
- namestringrequired
- providerstringrequired
ratingsarray of objectrequired
- maxnumberrequired
- observedAtstringrequired
- providerstringrequired
- sourceUrlstringrequired
- valuenumberrequired
- votesintegerrequired
sourcesarray of objectrequired
- observedAtstringrequired
- providerstringrequired
- sourceUrlstringrequired
- statusstringrequired
- missingSincestring
personalobjectrequired
conflictsarray of objectrequired
- baseRevisionintegerrequired
- baseValueanyrequired
choicesarray of objectrequired
- authoredAtstringrequired
- deviceIdstringrequired
- operationIdstringrequired
- valueanyrequired
- fieldstringrequired
- idstringrequired
- continueDismissedboolean
- favoritebooleanrequired
- lastPlayedAtstringrequired
- notInterestedboolean
- progressMsintegerrequired≥ 0
- ratinginteger | any | nullrequired
- revisionintegerrequired
- statusstringrequired
- watchedbooleanrequired
- watchlistedbooleanrequired
relatedobject
- libraryIdstringrequired
- libraryNamestringrequired
rowsarray of objectrequired
entriesarray of objectrequired
- absoluteNumberinteger
- activeBeginYearinteger
- activeEndYearinteger
- addedAtstring | any | null
- airDatestring
albumobject
- idstringrequired
- namestringrequired
- albumCountinteger
- albumTypestring
artistobject
- idstringrequired
- namestringrequired
- artistTypestring
- artworkPathsarray of string
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- authorstring
- availableboolean
- backdropUrlstring
badgesarray of object0–2 items
- bitDepthintegerrequired≥ 17
- codecstringrequiredpattern ^[A-Za-z0-9_.+-]{1,64}$
- sampleRateintegerrequired≥ 1
- variant"lossless"required
bookProgressobject
- bookIdstringrequired
chapterobject
- endMsintegerrequired
- indexintegerrequired
- startMsintegerrequired
- titlestringrequired
- durationMsinteger
- itemIdstringrequired
- partPositionMsintegerrequired
- positionMsinteger
- remainingMsinteger
- contentRatingstring
- countinteger
- countrystring
- dateBasedboolean
- discNumberinteger
- displayTitlestring
- durationMsinteger≥ 0
- editionstring
- episodeNumberinteger
- favoriteboolean
- genresarray of string
- hiddenboolean | any | null
homeActionsobject
- collectionbooleanrequired
- deletebooleanrequired
- detailsbooleanrequired
- downloadbooleanrequired
- editMetadatabooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- notInterestedboolean
- playbooleanrequired
- playedbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- ratingbooleanrequired
- refreshMetadatabooleanrequired
- removeFromContinueboolean
selectionobjectrequired
- collectionbooleanrequired
- deletebooleanrequired
- downloadbooleanrequired
- editbooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- playbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- refreshbooleanrequired
- watchedbooleanrequired
stateobjectrequired
- containerRevisionintegerrequired
- favoritebooleanrequired
- personalRevisionintegerrequired
- ratingnumber | any | nullrequired
- watchedbooleanrequired
- watchlistedbooleanrequired
- watchedbooleanrequired
homeTitleContextobject
- genresarray of stringrequired
- kindstringrequired
- seasonCountinteger
- yearinteger
- idstringrequired
- kindstringrequired
- labelstring
- languagestring
- lastChangedstring
latestEpisodeobject
- airDatestringrequired
- countintegerrequired
- episodeNumberintegerrequired
- seasonNumberinteger
- titlestring
- libraryIdstring
mediaobject
- absoluteNumberinteger
- activeBeginYearinteger
- activeEndYearinteger
- addedAtstring | any | nullrequired
- airDatestring
albumobject
- idstringrequired
- namestringrequired
- albumCountinteger
- albumTypestring
artistobject
- idstringrequired
- namestringrequired
- artistTypestring
- artworkPathsarray of string
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- authorstring
- availableboolean
- backdropUrlstring
badgesarray of object0–2 items
- bitDepthintegerrequired≥ 17
- codecstringrequiredpattern ^[A-Za-z0-9_.+-]{1,64}$
- sampleRateintegerrequired≥ 1
- variant"lossless"required
bookProgressobject
- bookIdstringrequired
chapterobject
- endMsintegerrequired
- indexintegerrequired
- startMsintegerrequired
- titlestringrequired
- durationMsinteger
- itemIdstringrequired
- partPositionMsintegerrequired
- positionMsinteger
- remainingMsinteger
- contentRatingstring
- countinteger
- countrystring
- dateBasedboolean
- discNumberinteger
- displayTitlestring
- durationMsinteger≥ 0
- editionstring
- episodeNumberinteger
- favoriteboolean
- genresarray of string
homeActionsobject
- collectionbooleanrequired
- deletebooleanrequired
- detailsbooleanrequired
- downloadbooleanrequired
- editMetadatabooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- notInterestedboolean
- playbooleanrequired
- playedbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- ratingbooleanrequired
- refreshMetadatabooleanrequired
- removeFromContinueboolean
selectionobjectrequired
- collectionbooleanrequired
- deletebooleanrequired
- downloadbooleanrequired
- editbooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- playbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- refreshbooleanrequired
- watchedbooleanrequired
stateobjectrequired
- containerRevisionintegerrequired
- favoritebooleanrequired
- personalRevisionintegerrequired
- ratingnumber | any | nullrequired
- watchedbooleanrequired
- watchlistedbooleanrequired
- watchedbooleanrequired
homeTitleContextobject
- genresarray of stringrequired
- kindstringrequired
- seasonCountinteger
- yearinteger
- idstringrequired
- kindstringrequired
- labelstring
- languagestring
- lastChangedstring
latestEpisodeobject
- airDatestringrequired
- countintegerrequired
- episodeNumberintegerrequired
- seasonNumberinteger
- titlestring
- libraryIdstring
- missingbooleanrequired
- narratorsarray of string
navigationobject
browseobject
- pivotstringrequiredlength 1–256
- queryobject
- sortarray of objectrequired0–1 items
- categorystring
- channelIdstring
- entityIdstring
- provenancestring
- sourceIdstring
- viewstringrequired
- newboolean
- originstring
- overviewstring
- overviewSourcestring
- overviewSourceUrlstring
- pageCountinteger
- pinnedboolean
playbackobject
- itemIdstringrequired
- startMsinteger≥ 0
- playsinteger
- posterUrlstring
- progressMsinteger≥ 0
- publicationTypestringone of "book", "magazine", "newspaper"
- publishedYearinteger
- publisherstring
radioSeedobject
- idstringrequired
- kindstringrequired
- ratingnumber
readingMarkobject
- itemIdstringrequired
- readbooleanrequired
- revisionintegerrequired
- releaseDatestring
- removedboolean
- resolutionstring
- rolestring
- seasonCountinteger
- seasonNumberinteger
seriesarray of object
- namestringrequired
- positionstring
showobject
- idstringrequired
- namestringrequired
- sortLetterstring
- specialboolean
- stillUrlstring
- subtitlestring
- titlestringrequired
- totalAtLeastinteger
- trackNumberinteger
- unwatchedCountinteger
- userRatinginteger | any | null
- watchedboolean
- watchedCountinteger
- watchlistedboolean
- yearinteger
- yearMaxinteger
- yearMininteger
- missingboolean
- narratorsarray of string
navigationobject
browseobject
- pivotstringrequiredlength 1–256
- queryobject
sortarray of objectrequired0–1 items
- directionstringrequiredone of "asc", "desc"
- fieldstringrequired
- categorystring
- channelIdstring
- entityIdstring
- provenancestring
- sourceIdstring
- viewstringrequired
- newboolean
- originstring
- overviewstring
- overviewSourcestring
- overviewSourceUrlstring
- pageCountinteger
- pinnedboolean
playbackobject
- itemIdstringrequired
- startMsinteger≥ 0
- playsinteger
- posterUrlstring
- progressMsinteger≥ 0
- publicationTypestringone of "book", "magazine", "newspaper"
- publishedYearinteger
- publisherstring
radioSeedobject
- idstringrequired
- kindstringrequired
- ratingnumber
readingMarkobject
- itemIdstringrequired
- readbooleanrequired
- revisionintegerrequired
- releaseDatestring
- removedboolean
- resolutionstring
- rolestring
- seasonCountinteger
- seasonNumberinteger
seriesarray of object
- namestringrequired
- positionstring
showobject
- idstringrequired
- namestringrequired
- sortLetterstring
- specialboolean
- stillUrlstring
- subtitlestring
- titlestring
- totalAtLeastinteger
- trackNumberinteger
- unwatchedCountinteger
- userRatinginteger | any | null
- watchedboolean
- watchedCountinteger
- watchlistedboolean
- yearinteger
- yearMaxinteger
- yearMininteger
- evidenceIdstringrequired
- hasMoreboolean
- headingstringrequired
headingTextobjectrequired
- codestringrequired
- fallbackstringrequired
- paramsobject
- idstringrequired
- nextCursorstring
- providerstringrequired
- relationstringrequired
- versionintegerrequired
revisionobjectrequired
- catalogintegerrequired
- viewerintegerrequired
scopeobjectrequired
- itemIdstringrequired
- libraryIdstringrequired
- serverIdstringrequired
- viewerFencestringrequired
- variant"detail"required
202Successapplication/json
{
"detail": {
"revision": {
"catalog": 0,
"viewer": 0
},
"scope": {
"itemId": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"serverId": "id_8h2k4q",
"viewerFence": "string"
}
},
"kind": "file-info-preparing",
"queryId": "id_8h2k4q",
"retryAfterMs": 1800000,
"state": "preparing",
"variant": "preparing"
}detailobject
revisionobjectrequired
- catalogintegerrequired
- viewerintegerrequired
scopeobjectrequired
- itemIdstringrequired
- libraryIdstringrequired
- serverIdstringrequired
- viewerFencestringrequired
- kind"file-info-preparing"required
- queryIdstringrequiredlength 1–512pattern ^[A-Za-z0-9_.-]+$
- retryAfterMsintegerrequired≥ 1
- state"preparing"required
- variant"preparing"required
304Successapplication/json
{
"actions": [
{
"enabled": true,
"id": "id_8h2k4q",
"labelKey": "string",
"max": 0,
"min": 0,
"playback": {
"itemId": "id_8h2k4q",
"startMs": 1800000
},
"step": 0
}
],
"collections": [
{
"id": "id_8h2k4q",
"memberCount": 0,
"name": "Fargo",
"position": 0,
"posterUrls": [
"https://example.com/…"
],
"yearFrom": 0,
"yearTo": 0
}
],
"episodeDetails": {
"contentRating": "string",
"next": {
"id": "id_8h2k4q",
"number": 0,
"title": "Fargo"
},
"previous": {
"id": "id_8h2k4q",
"number": 0,
"title": "Fargo"
}
},
"extras": [
{
"items": [
{
"absoluteNumber": 0,
"activeBeginYear": 0,
"activeEndYear": 0,
"addedAt": "2026-10-18T19:30:00Z",
"airDate": "string",
"album": {},
"albumCount": 0,
"albumType": "string",
"artist": {},
"artistType": "string",
"artworkPaths": [],
"audioFacts": {},
"author": "string",
"available": true,
"backdropUrl": "https://example.com/…",
"badges": [],
"bookProgress": {},
"contentRating": "string",
"count": 0,
"country": "string",
"dateBased": true,
"discNumber": 0,
"displayTitle": "Fargo",
"durationMs": 1800000,
"edition": "string",
"episodeNumber": 0,
"favorite": true,
"genres": [],
"hidden": true,
"homeActions": {},
"homeTitleContext": {},
"id": "id_8h2k4q",
"kind": "string",
"label": "string",
"language": "en",
"lastChanged": "string",
"latestEpisode": {},
"libraryId": "id_8h2k4q",
"media": {},
"missing": true,
"narrators": [],
"navigation": {},
"new": true,
"origin": "string",
"overview": "string",
"overviewSource": "string",
"overviewSourceUrl": "https://example.com/…",
"pageCount": 0,
"pinned": true,
"playback": {},
"plays": 0,
"posterUrl": "https://example.com/…",
"progressMs": 1800000,
"publicationType": "book",
"publishedYear": 0,
"publisher": "string",
"radioSeed": {},
"rating": 0,
"readingMark": {},
"releaseDate": "string",
"removed": true,
"resolution": "string",
"role": "string",
"seasonCount": 0,
"seasonNumber": 0,
"series": [],
"show": {},
"sortLetter": "string",
"special": true,
"stillUrl": "https://example.com/…",
"subtitle": "Fargo",
"title": "Fargo",
"totalAtLeast": 0,
"trackNumber": 0,
"unwatchedCount": 0,
"userRating": 0,
"watched": true,
"watchedCount": 0,
"watchlisted": true,
"year": 0,
"yearMax": 0,
"yearMin": 0
}
],
"label": "string",
"type": "string"
}
],
"facts": {
"contentRating": "string",
"country": "string",
"edition": "string",
"network": "string",
"originalLanguage": "en",
"originalTitle": "Fargo",
"releaseDate": "string",
"studio": "string",
"tagline": "string"
},
"fileInfoOpening": "string",
"item": {
"addedAt": "2026-10-18T19:30:00Z",
"audioFacts": {
"atmos": true,
"bitDepth": 0,
"channels": 0,
"codec": "string",
"layout": "string",
"lossless": true,
"sampleRate": 0
},
"available": true,
"backdropUrl": "https://example.com/…",
"bookFile": {
"bookId": "id_8h2k4q",
"bookTitle": "Fargo",
"discNumber": 0,
"localMetadata": {
"authors": [
"string"
],
"description": "string",
"edition": "string",
"identifiers": [
{}
],
"language": "en",
"narrators": [
"string"
],
"publishedYear": 0,
"publisher": "string",
"series": [
{}
],
"sources": {
"key": "string"
}
},
"localMetadataIssue": "string",
"localPolicy": {
"localMode": "string",
"revision": 0
},
"partNumber": 0,
"sourceBoundary": "string"
},
"durationMs": 1800000,
"durationState": "unrepresentable",
"episode": {
"airDate": "string",
"localIdentityStatus": "string",
"number": 0,
"numbering": "string",
"orderingBasis": "string",
"providerMatchStatus": "string",
"seasonId": "id_8h2k4q",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"sourceBoundary": "string"
},
"fileInfoOpening": "string",
"id": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"missing": true,
"overview": "string",
"posterUrl": "https://example.com/…",
"progressMs": 1800000,
"song": {
"albumArtist": "string",
"albumId": "id_8h2k4q",
"albumTitle": "Fargo",
"artist": "string",
"discNumber": 0,
"localMetadataIssue": "string",
"providerArtist": "string",
"providerMatchStatus": "string",
"providerObservedAt": "2026-10-18T19:30:00Z",
"providerRecordingId": "id_8h2k4q",
"providerReleaseGroupId": "id_8h2k4q",
"providerReleaseId": "id_8h2k4q",
"providerReleaseStatus": "string",
"providerSourceUrl": "https://example.com/…",
"providerTitle": "Fargo",
"providerTrackId": "id_8h2k4q",
"trackNumber": 0
},
"sources": [
{
"audioCodec": "string",
"container": "string",
"durationMs": 1800000,
"height": 0,
"id": "id_8h2k4q",
"videoCodec": "string",
"width": 0
}
],
"stillUrl": "https://example.com/…",
"title": "Fargo",
"watched": true,
"year": 0
},
"languages": {
"audio": [
"string"
],
"subtitles": [
"Fargo"
]
},
"markers": [
{
"automaticSafe": true,
"endMs": 1800000,
"id": "id_8h2k4q",
"kind": "string",
"startMs": 1800000
}
],
"metadata": {
"attributions": [
"string"
],
"creditTotals": {
"cast": 0,
"crew": 0
},
"credits": [
{
"department": "string",
"id": "id_8h2k4q",
"name": "Fargo",
"personId": "id_8h2k4q",
"portraitUrl": "https://example.com/…",
"provider": "string",
"role": "string"
}
],
"genres": [
{
"id": "id_8h2k4q",
"name": "Fargo",
"provider": "string"
}
],
"ratings": [
{
"max": 0,
"observedAt": "2026-10-18T19:30:00Z",
"provider": "string",
"sourceUrl": "https://example.com/…",
"value": 0,
"votes": 0
}
],
"sources": [
{
"observedAt": "2026-10-18T19:30:00Z",
"provider": "string",
"sourceUrl": "https://example.com/…"
}
],
"status": "string"
},
"missingSince": "string",
"personal": {
"conflicts": [
{
"baseRevision": 0,
"baseValue": null,
"choices": [
{}
],
"field": "string",
"id": "id_8h2k4q"
}
],
"continueDismissed": true,
"favorite": true,
"lastPlayedAt": "2026-10-18T19:30:00Z",
"notInterested": true,
"progressMs": 1800000,
"rating": 0,
"revision": 0,
"status": "string",
"watched": true,
"watchlisted": true
},
"related": {
"libraryId": "id_8h2k4q",
"libraryName": "Fargo",
"rows": [
{
"entries": [
{}
],
"evidenceId": "id_8h2k4q",
"hasMore": true,
"heading": "string",
"headingText": {
"code": "string",
"fallback": "string",
"params": {}
},
"id": "id_8h2k4q",
"nextCursor": "eyJvIjoyMH0",
"provider": "string",
"relation": "string"
}
],
"version": 0
},
"revision": {
"catalog": 0,
"viewer": 0
},
"scope": {
"itemId": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"serverId": "id_8h2k4q",
"viewerFence": "string"
},
"variant": "detail"
}actionsarray of objectrequired
- enabledbooleanrequired
- idstringrequired
- labelKeystringrequired
- maxnumber
- minnumber
playbackobject
- itemIdstringrequired
- startMsinteger≥ 0
- stepnumber
collectionsarray of objectrequired
- idstringrequired
- memberCountintegerrequired
- namestringrequired
- positionintegerrequired
- posterUrlsarray of stringrequired
- yearFrominteger
- yearTointeger
episodeDetailsobject
- contentRatingstring
nextobject
- idstringrequired
- numberintegerrequired
- titlestringrequired
previousobject
- idstringrequired
- numberintegerrequired
- titlestringrequired
extrasarray of object
itemsarray of objectrequired
- absoluteNumberinteger
- activeBeginYearinteger
- activeEndYearinteger
- addedAtstring | any | null
- airDatestring
albumobject
- idstringrequired
- namestringrequired
- albumCountinteger
- albumTypestring
artistobject
- idstringrequired
- namestringrequired
- artistTypestring
- artworkPathsarray of string
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- authorstring
- availableboolean
- backdropUrlstring
badgesarray of object0–2 items
- bitDepthintegerrequired≥ 17
- codecstringrequiredpattern ^[A-Za-z0-9_.+-]{1,64}$
- sampleRateintegerrequired≥ 1
- variant"lossless"required
bookProgressobject
- bookIdstringrequired
chapterobject
- endMsintegerrequired
- indexintegerrequired
- startMsintegerrequired
- titlestringrequired
- durationMsinteger
- itemIdstringrequired
- partPositionMsintegerrequired
- positionMsinteger
- remainingMsinteger
- contentRatingstring
- countinteger
- countrystring
- dateBasedboolean
- discNumberinteger
- displayTitlestring
- durationMsinteger≥ 0
- editionstring
- episodeNumberinteger
- favoriteboolean
- genresarray of string
- hiddenboolean | any | null
homeActionsobject
- collectionbooleanrequired
- deletebooleanrequired
- detailsbooleanrequired
- downloadbooleanrequired
- editMetadatabooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- notInterestedboolean
- playbooleanrequired
- playedbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- ratingbooleanrequired
- refreshMetadatabooleanrequired
- removeFromContinueboolean
selectionobjectrequired
- collectionbooleanrequired
- deletebooleanrequired
- downloadbooleanrequired
- editbooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- playbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- refreshbooleanrequired
- watchedbooleanrequired
stateobjectrequired
- containerRevisionintegerrequired
- favoritebooleanrequired
- personalRevisionintegerrequired
- ratingnumber | any | nullrequired
- watchedbooleanrequired
- watchlistedbooleanrequired
- watchedbooleanrequired
homeTitleContextobject
- genresarray of stringrequired
- kindstringrequired
- seasonCountinteger
- yearinteger
- idstringrequired
- kindstringrequired
- labelstring
- languagestring
- lastChangedstring
latestEpisodeobject
- airDatestringrequired
- countintegerrequired
- episodeNumberintegerrequired
- seasonNumberinteger
- titlestring
- libraryIdstring
mediaobject
- absoluteNumberinteger
- activeBeginYearinteger
- activeEndYearinteger
- addedAtstring | any | nullrequired
- airDatestring
albumobject
- idstringrequired
- namestringrequired
- albumCountinteger
- albumTypestring
artistobject
- idstringrequired
- namestringrequired
- artistTypestring
- artworkPathsarray of string
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- authorstring
- availableboolean
- backdropUrlstring
badgesarray of object0–2 items
- bitDepthintegerrequired≥ 17
- codecstringrequiredpattern ^[A-Za-z0-9_.+-]{1,64}$
- sampleRateintegerrequired≥ 1
- variant"lossless"required
bookProgressobject
- bookIdstringrequired
chapterobject
- endMsintegerrequired
- indexintegerrequired
- startMsintegerrequired
- titlestringrequired
- durationMsinteger
- itemIdstringrequired
- partPositionMsintegerrequired
- positionMsinteger
- remainingMsinteger
- contentRatingstring
- countinteger
- countrystring
- dateBasedboolean
- discNumberinteger
- displayTitlestring
- durationMsinteger≥ 0
- editionstring
- episodeNumberinteger
- favoriteboolean
- genresarray of string
homeActionsobject
- collectionbooleanrequired
- deletebooleanrequired
- detailsbooleanrequired
- downloadbooleanrequired
- editMetadatabooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- notInterestedboolean
- playbooleanrequired
- playedbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- ratingbooleanrequired
- refreshMetadatabooleanrequired
- removeFromContinueboolean
selectionobjectrequired
- collectionbooleanrequired
- deletebooleanrequired
- downloadbooleanrequired
- editbooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- playbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- refreshbooleanrequired
- watchedbooleanrequired
stateobjectrequired
- containerRevisionintegerrequired
- favoritebooleanrequired
- personalRevisionintegerrequired
- ratingnumber | any | nullrequired
- watchedbooleanrequired
- watchlistedbooleanrequired
- watchedbooleanrequired
homeTitleContextobject
- genresarray of stringrequired
- kindstringrequired
- seasonCountinteger
- yearinteger
- idstringrequired
- kindstringrequired
- labelstring
- languagestring
- lastChangedstring
latestEpisodeobject
- airDatestringrequired
- countintegerrequired
- episodeNumberintegerrequired
- seasonNumberinteger
- titlestring
- libraryIdstring
- missingbooleanrequired
- narratorsarray of string
navigationobject
browseobject
- pivotstringrequiredlength 1–256
- queryobject
sortarray of objectrequired0–1 items
- directionstringrequiredone of "asc", "desc"
- fieldstringrequired
- categorystring
- channelIdstring
- entityIdstring
- provenancestring
- sourceIdstring
- viewstringrequired
- newboolean
- originstring
- overviewstring
- overviewSourcestring
- overviewSourceUrlstring
- pageCountinteger
- pinnedboolean
playbackobject
- itemIdstringrequired
- startMsinteger≥ 0
- playsinteger
- posterUrlstring
- progressMsinteger≥ 0
- publicationTypestringone of "book", "magazine", "newspaper"
- publishedYearinteger
- publisherstring
radioSeedobject
- idstringrequired
- kindstringrequired
- ratingnumber
readingMarkobject
- itemIdstringrequired
- readbooleanrequired
- revisionintegerrequired
- releaseDatestring
- removedboolean
- resolutionstring
- rolestring
- seasonCountinteger
- seasonNumberinteger
seriesarray of object
- namestringrequired
- positionstring
showobject
- idstringrequired
- namestringrequired
- sortLetterstring
- specialboolean
- stillUrlstring
- subtitlestring
- titlestringrequired
- totalAtLeastinteger
- trackNumberinteger
- unwatchedCountinteger
- userRatinginteger | any | null
- watchedboolean
- watchedCountinteger
- watchlistedboolean
- yearinteger
- yearMaxinteger
- yearMininteger
- missingboolean
- narratorsarray of string
navigationobject
browseobject
- pivotstringrequiredlength 1–256
- queryobject
sortarray of objectrequired0–1 items
- directionstringrequiredone of "asc", "desc"
- fieldstringrequired
- categorystring
- channelIdstring
- entityIdstring
- provenancestring
- sourceIdstring
- viewstringrequired
- newboolean
- originstring
- overviewstring
- overviewSourcestring
- overviewSourceUrlstring
- pageCountinteger
- pinnedboolean
playbackobject
- itemIdstringrequired
- startMsinteger≥ 0
- playsinteger
- posterUrlstring
- progressMsinteger≥ 0
- publicationTypestringone of "book", "magazine", "newspaper"
- publishedYearinteger
- publisherstring
radioSeedobject
- idstringrequired
- kindstringrequired
- ratingnumber
readingMarkobject
- itemIdstringrequired
- readbooleanrequired
- revisionintegerrequired
- releaseDatestring
- removedboolean
- resolutionstring
- rolestring
- seasonCountinteger
- seasonNumberinteger
seriesarray of object
- namestringrequired
- positionstring
showobject
- idstringrequired
- namestringrequired
- sortLetterstring
- specialboolean
- stillUrlstring
- subtitlestring
- titlestring
- totalAtLeastinteger
- trackNumberinteger
- unwatchedCountinteger
- userRatinginteger | any | null
- watchedboolean
- watchedCountinteger
- watchlistedboolean
- yearinteger
- yearMaxinteger
- yearMininteger
- labelstringrequired
- typestringrequired
factsobject
- contentRatingstring
- countrystring
- editionstring
- networkstring
- originalLanguagestring
- originalTitlestring
- releaseDatestring
- studiostring
- taglinestring
- fileInfoOpeningstring
itemobjectrequired
- addedAtstring | any | nullrequired
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- availablebooleanrequired
- backdropUrlstring
bookFileobject
- bookIdstringrequired
- bookTitlestringrequired
- discNumberinteger
localMetadataobject
- authorsarray of stringrequired
- descriptionstring
- editionstring
identifiersarray of objectrequired
- schemestringrequired
- valuestringrequired
- languagestring
- narratorsarray of stringrequired
- publishedYearinteger
- publisherstring
seriesarray of objectrequired
- namestringrequired
- positionstring
- sourcesobjectrequired
- localMetadataIssuestring
localPolicyobject
- localModestringrequired
- revisionintegerrequired
- partNumberinteger
- sourceBoundarystringrequired
- durationMsinteger≥ 0
- durationStatestringone of "unrepresentable"
episodeobject
- airDatestring
- localIdentityStatusstringrequired
- numberintegerrequired
- numberingstringrequired
- orderingBasisstringrequired
- providerMatchStatusstringrequired
- seasonIdstring
- seasonNumberinteger
- showIdstringrequired
- showTitlestringrequired
- sourceBoundarystringrequired
- fileInfoOpeningstring
- idstringrequired
- kindstringrequired
- libraryIdstringrequired
- missingbooleanrequired
- overviewstring
- posterUrlstring
- progressMsintegerrequired≥ 0
songobject
- albumArtiststringrequired
- albumIdstringrequired
- albumTitlestringrequired
- artiststringrequired
- discNumberinteger
- localMetadataIssuestring
- providerArtiststring
- providerMatchStatusstringrequired
- providerObservedAtstring
- providerRecordingIdstring
- providerReleaseGroupIdstring
- providerReleaseIdstring
- providerReleaseStatusstringrequired
- providerSourceUrlstring
- providerTitlestring
- providerTrackIdstring
- trackNumberinteger
sourcesarray of object
- audioCodecstringrequired
- containerstringrequired
- durationMsintegerrequired≥ 0
- heightintegerrequired
- idstringrequired
- videoCodecstringrequired
- widthintegerrequired
- stillUrlstring
- titlestringrequired
- watchedboolean
- yearinteger
languagesobjectrequired
- audioarray of stringrequired
- subtitlesarray of stringrequired
markersarray of objectrequired
- automaticSafebooleanrequired
- endMsintegerrequired≥ 0
- idstringrequired
- kindstringrequired
- startMsintegerrequired≥ 0
metadataobjectrequired
- attributionsarray of string
creditTotalsobjectrequired
- castintegerrequired
- crewintegerrequired
creditsarray of objectrequired
- departmentstringrequired
- idstringrequired
- namestringrequired
- personIdstring
- portraitUrlstring
- providerstringrequired
- rolestringrequired
genresarray of objectrequired
- idstringrequired
- namestringrequired
- providerstringrequired
ratingsarray of objectrequired
- maxnumberrequired
- observedAtstringrequired
- providerstringrequired
- sourceUrlstringrequired
- valuenumberrequired
- votesintegerrequired
sourcesarray of objectrequired
- observedAtstringrequired
- providerstringrequired
- sourceUrlstringrequired
- statusstringrequired
- missingSincestring
personalobjectrequired
conflictsarray of objectrequired
- baseRevisionintegerrequired
- baseValueanyrequired
choicesarray of objectrequired
- authoredAtstringrequired
- deviceIdstringrequired
- operationIdstringrequired
- valueanyrequired
- fieldstringrequired
- idstringrequired
- continueDismissedboolean
- favoritebooleanrequired
- lastPlayedAtstringrequired
- notInterestedboolean
- progressMsintegerrequired≥ 0
- ratinginteger | any | nullrequired
- revisionintegerrequired
- statusstringrequired
- watchedbooleanrequired
- watchlistedbooleanrequired
relatedobject
- libraryIdstringrequired
- libraryNamestringrequired
rowsarray of objectrequired
entriesarray of objectrequired
- absoluteNumberinteger
- activeBeginYearinteger
- activeEndYearinteger
- addedAtstring | any | null
- airDatestring
albumobject
- idstringrequired
- namestringrequired
- albumCountinteger
- albumTypestring
artistobject
- idstringrequired
- namestringrequired
- artistTypestring
- artworkPathsarray of string
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- authorstring
- availableboolean
- backdropUrlstring
badgesarray of object0–2 items
- bitDepthintegerrequired≥ 17
- codecstringrequiredpattern ^[A-Za-z0-9_.+-]{1,64}$
- sampleRateintegerrequired≥ 1
- variant"lossless"required
bookProgressobject
- bookIdstringrequired
chapterobject
- endMsintegerrequired
- indexintegerrequired
- startMsintegerrequired
- titlestringrequired
- durationMsinteger
- itemIdstringrequired
- partPositionMsintegerrequired
- positionMsinteger
- remainingMsinteger
- contentRatingstring
- countinteger
- countrystring
- dateBasedboolean
- discNumberinteger
- displayTitlestring
- durationMsinteger≥ 0
- editionstring
- episodeNumberinteger
- favoriteboolean
- genresarray of string
- hiddenboolean | any | null
homeActionsobject
- collectionbooleanrequired
- deletebooleanrequired
- detailsbooleanrequired
- downloadbooleanrequired
- editMetadatabooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- notInterestedboolean
- playbooleanrequired
- playedbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- ratingbooleanrequired
- refreshMetadatabooleanrequired
- removeFromContinueboolean
selectionobjectrequired
- collectionbooleanrequired
- deletebooleanrequired
- downloadbooleanrequired
- editbooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- playbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- refreshbooleanrequired
- watchedbooleanrequired
stateobjectrequired
- containerRevisionintegerrequired
- favoritebooleanrequired
- personalRevisionintegerrequired
- ratingnumber | any | nullrequired
- watchedbooleanrequired
- watchlistedbooleanrequired
- watchedbooleanrequired
homeTitleContextobject
- genresarray of stringrequired
- kindstringrequired
- seasonCountinteger
- yearinteger
- idstringrequired
- kindstringrequired
- labelstring
- languagestring
- lastChangedstring
latestEpisodeobject
- airDatestringrequired
- countintegerrequired
- episodeNumberintegerrequired
- seasonNumberinteger
- titlestring
- libraryIdstring
mediaobject
- absoluteNumberinteger
- activeBeginYearinteger
- activeEndYearinteger
- addedAtstring | any | nullrequired
- airDatestring
albumobject
- idstringrequired
- namestringrequired
- albumCountinteger
- albumTypestring
artistobject
- idstringrequired
- namestringrequired
- artistTypestring
- artworkPathsarray of string
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- authorstring
- availableboolean
- backdropUrlstring
badgesarray of object0–2 items
- bitDepthintegerrequired≥ 17
- codecstringrequiredpattern ^[A-Za-z0-9_.+-]{1,64}$
- sampleRateintegerrequired≥ 1
- variant"lossless"required
bookProgressobject
- bookIdstringrequired
chapterobject
- endMsintegerrequired
- indexintegerrequired
- startMsintegerrequired
- titlestringrequired
- durationMsinteger
- itemIdstringrequired
- partPositionMsintegerrequired
- positionMsinteger
- remainingMsinteger
- contentRatingstring
- countinteger
- countrystring
- dateBasedboolean
- discNumberinteger
- displayTitlestring
- durationMsinteger≥ 0
- editionstring
- episodeNumberinteger
- favoriteboolean
- genresarray of string
homeActionsobject
- collectionbooleanrequired
- deletebooleanrequired
- detailsbooleanrequired
- downloadbooleanrequired
- editMetadatabooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- notInterestedboolean
- playbooleanrequired
- playedbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- ratingbooleanrequired
- refreshMetadatabooleanrequired
- removeFromContinueboolean
selectionobjectrequired
- collectionbooleanrequired
- deletebooleanrequired
- downloadbooleanrequired
- editbooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- playbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- refreshbooleanrequired
- watchedbooleanrequired
stateobjectrequired
- containerRevisionintegerrequired
- favoritebooleanrequired
- personalRevisionintegerrequired
- ratingnumber | any | nullrequired
- watchedbooleanrequired
- watchlistedbooleanrequired
- watchedbooleanrequired
homeTitleContextobject
- genresarray of stringrequired
- kindstringrequired
- seasonCountinteger
- yearinteger
- idstringrequired
- kindstringrequired
- labelstring
- languagestring
- lastChangedstring
latestEpisodeobject
- airDatestringrequired
- countintegerrequired
- episodeNumberintegerrequired
- seasonNumberinteger
- titlestring
- libraryIdstring
- missingbooleanrequired
- narratorsarray of string
navigationobject
browseobject
- pivotstringrequiredlength 1–256
- queryobject
- sortarray of objectrequired0–1 items
- categorystring
- channelIdstring
- entityIdstring
- provenancestring
- sourceIdstring
- viewstringrequired
- newboolean
- originstring
- overviewstring
- overviewSourcestring
- overviewSourceUrlstring
- pageCountinteger
- pinnedboolean
playbackobject
- itemIdstringrequired
- startMsinteger≥ 0
- playsinteger
- posterUrlstring
- progressMsinteger≥ 0
- publicationTypestringone of "book", "magazine", "newspaper"
- publishedYearinteger
- publisherstring
radioSeedobject
- idstringrequired
- kindstringrequired
- ratingnumber
readingMarkobject
- itemIdstringrequired
- readbooleanrequired
- revisionintegerrequired
- releaseDatestring
- removedboolean
- resolutionstring
- rolestring
- seasonCountinteger
- seasonNumberinteger
seriesarray of object
- namestringrequired
- positionstring
showobject
- idstringrequired
- namestringrequired
- sortLetterstring
- specialboolean
- stillUrlstring
- subtitlestring
- titlestringrequired
- totalAtLeastinteger
- trackNumberinteger
- unwatchedCountinteger
- userRatinginteger | any | null
- watchedboolean
- watchedCountinteger
- watchlistedboolean
- yearinteger
- yearMaxinteger
- yearMininteger
- missingboolean
- narratorsarray of string
navigationobject
browseobject
- pivotstringrequiredlength 1–256
- queryobject
sortarray of objectrequired0–1 items
- directionstringrequiredone of "asc", "desc"
- fieldstringrequired
- categorystring
- channelIdstring
- entityIdstring
- provenancestring
- sourceIdstring
- viewstringrequired
- newboolean
- originstring
- overviewstring
- overviewSourcestring
- overviewSourceUrlstring
- pageCountinteger
- pinnedboolean
playbackobject
- itemIdstringrequired
- startMsinteger≥ 0
- playsinteger
- posterUrlstring
- progressMsinteger≥ 0
- publicationTypestringone of "book", "magazine", "newspaper"
- publishedYearinteger
- publisherstring
radioSeedobject
- idstringrequired
- kindstringrequired
- ratingnumber
readingMarkobject
- itemIdstringrequired
- readbooleanrequired
- revisionintegerrequired
- releaseDatestring
- removedboolean
- resolutionstring
- rolestring
- seasonCountinteger
- seasonNumberinteger
seriesarray of object
- namestringrequired
- positionstring
showobject
- idstringrequired
- namestringrequired
- sortLetterstring
- specialboolean
- stillUrlstring
- subtitlestring
- titlestring
- totalAtLeastinteger
- trackNumberinteger
- unwatchedCountinteger
- userRatinginteger | any | null
- watchedboolean
- watchedCountinteger
- watchlistedboolean
- yearinteger
- yearMaxinteger
- yearMininteger
- evidenceIdstringrequired
- hasMoreboolean
- headingstringrequired
headingTextobjectrequired
- codestringrequired
- fallbackstringrequired
- paramsobject
- idstringrequired
- nextCursorstring
- providerstringrequired
- relationstringrequired
- versionintegerrequired
revisionobjectrequired
- catalogintegerrequired
- viewerintegerrequired
scopeobjectrequired
- itemIdstringrequired
- libraryIdstringrequired
- serverIdstringrequired
- viewerFencestringrequired
- variant"detail"required
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternalstale_continuationmetadata_unavailabledatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/items/{id}/detail" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/items/{id}/file-infoRead the item's flat file windowread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_items_id_file_info
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
opening | query | string | |
cursor | query | string | |
limit | query | integer | ""1–100 | |
around | query | string |
Responses
200Successapplication/json
{
"basis": "string",
"detail": {
"revision": {
"catalog": 0,
"viewer": 0
},
"scope": {
"itemId": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"serverId": "id_8h2k4q",
"viewerFence": "string"
}
},
"files": [
{
"audioCount": 0,
"available": true,
"bitRate": 0,
"container": "string",
"disc": {
"chapterCount": 0,
"kind": "bluray",
"packaging": "iso",
"titleNumber": 0
},
"duration": 0,
"durationState": "string",
"edition": "string",
"id": "id_8h2k4q",
"itemId": "id_8h2k4q",
"occurrence": "string",
"partIndex": 0,
"path": "string",
"size": 0,
"sizeExact": "string",
"subtitleCount": 0,
"video": {
"bitDepth": 0,
"bitRate": 0,
"codec": "string",
"dynamicRange": "string",
"frameRate": 0,
"hdr10Plus": true,
"height": 0,
"profile": "string",
"width": 0
}
}
],
"itemKind": "string",
"kind": "file-info-files",
"scope": {
"itemId": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"serverId": "id_8h2k4q",
"viewerFence": "string"
},
"surface": {
"canSplit": true,
"eligibleFileCount": 0,
"fileCount": 0,
"groupCount": 0,
"hasDiscColumns": true,
"manage": {
"delete": true,
"merge": true,
"split": true
},
"ownerDiscOccurrence": "string"
},
"variant": "files",
"window": {
"limit": 1,
"nextCursor": "eyJvIjoyMH0",
"previousCursor": "eyJvIjoyMH0",
"queryId": "id_8h2k4q",
"reloadCursor": "eyJvIjoyMH0",
"returned": 0
}
}- basisstringrequiredlength 43–43pattern ^[A-Za-z0-9_-]{43}$
detailobjectrequired
revisionobjectrequired
- catalogintegerrequired
- viewerintegerrequired
scopeobjectrequired
- itemIdstringrequired
- libraryIdstringrequired
- serverIdstringrequired
- viewerFencestringrequired
filesarray of objectrequired0–100 items
- audioCountintegerrequired
- availablebooleanrequired
- bitRateinteger
- containerstringrequiredpattern ^[^ ]*$
discobject
- chapterCountintegerrequired
- kindstringrequiredone of "bluray", "dvd"
- packagingstringrequiredone of "iso", "folder"
- titleNumberintegerrequired
- durationnumber
- durationStatestring
- editionstringpattern ^[^ ]*$
- idstringrequired
- itemIdstringrequired
- occurrencestringrequired
- partIndexintegerrequired
- pathstringpattern ^[^ ]*$
- sizeinteger
- sizeExactstring
- subtitleCountintegerrequired
videoobject
- bitDepthinteger
- bitRateinteger
- codecstringrequiredpattern ^[^ ]*$
- dynamicRangestringpattern ^[^ ]*$
- frameRatenumber
- hdr10Plusboolean
- heightintegerrequired
- profilestringpattern ^[^ ]*$
- widthintegerrequired
- itemKindstringrequired
- kind"file-info-files"required
scopeobjectrequired
- itemIdstringrequired
- libraryIdstringrequired
- serverIdstringrequired
- viewerFencestringrequired
surfaceobjectrequired
- canSplitbooleanrequired
- eligibleFileCountintegerrequired
- fileCountintegerrequired
- groupCountintegerrequired
- hasDiscColumnsbooleanrequired
manageobject
- deletebooleanrequired
- mergebooleanrequired
- splitbooleanrequired
- ownerDiscOccurrencestring
- variant"files"required
windowobjectrequired
- limitintegerrequired1–100
- nextCursorstringlength 154–154pattern ^[A-Za-z0-9_-]{154}$
- previousCursorstringlength 154–154pattern ^[A-Za-z0-9_-]{154}$
- queryIdstringrequiredlength 338–338pattern ^[A-Za-z0-9_-]{183}\.[A-Za-z0-9_-]{154}$
- reloadCursorstringlength 154–154pattern ^[A-Za-z0-9_-]{154}$
- returnedintegerrequired0–100
202Successapplication/json
{
"detail": {
"revision": {
"catalog": 0,
"viewer": 0
},
"scope": {
"itemId": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"serverId": "id_8h2k4q",
"viewerFence": "string"
}
},
"kind": "file-info-preparing",
"queryId": "id_8h2k4q",
"retryAfterMs": 1800000,
"state": "preparing",
"variant": "preparing"
}detailobjectrequired
revisionobjectrequired
- catalogintegerrequired
- viewerintegerrequired
scopeobjectrequired
- itemIdstringrequired
- libraryIdstringrequired
- serverIdstringrequired
- viewerFencestringrequired
- kind"file-info-preparing"required
- queryIdstringrequiredlength 338–338pattern ^[A-Za-z0-9_-]{183}\.[A-Za-z0-9_-]{154}$
- retryAfterMsintegerrequired≥ 1
- state"preparing"required
- variant"preparing"required
304Successapplication/json
{
"basis": "string",
"detail": {
"revision": {
"catalog": 0,
"viewer": 0
},
"scope": {
"itemId": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"serverId": "id_8h2k4q",
"viewerFence": "string"
}
},
"files": [
{
"audioCount": 0,
"available": true,
"bitRate": 0,
"container": "string",
"disc": {
"chapterCount": 0,
"kind": "bluray",
"packaging": "iso",
"titleNumber": 0
},
"duration": 0,
"durationState": "string",
"edition": "string",
"id": "id_8h2k4q",
"itemId": "id_8h2k4q",
"occurrence": "string",
"partIndex": 0,
"path": "string",
"size": 0,
"sizeExact": "string",
"subtitleCount": 0,
"video": {
"bitDepth": 0,
"bitRate": 0,
"codec": "string",
"dynamicRange": "string",
"frameRate": 0,
"hdr10Plus": true,
"height": 0,
"profile": "string",
"width": 0
}
}
],
"itemKind": "string",
"kind": "file-info-files",
"scope": {
"itemId": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"serverId": "id_8h2k4q",
"viewerFence": "string"
},
"surface": {
"canSplit": true,
"eligibleFileCount": 0,
"fileCount": 0,
"groupCount": 0,
"hasDiscColumns": true,
"manage": {
"delete": true,
"merge": true,
"split": true
},
"ownerDiscOccurrence": "string"
},
"variant": "files",
"window": {
"limit": 1,
"nextCursor": "eyJvIjoyMH0",
"previousCursor": "eyJvIjoyMH0",
"queryId": "id_8h2k4q",
"reloadCursor": "eyJvIjoyMH0",
"returned": 0
}
}- basisstringrequiredlength 43–43pattern ^[A-Za-z0-9_-]{43}$
detailobjectrequired
revisionobjectrequired
- catalogintegerrequired
- viewerintegerrequired
scopeobjectrequired
- itemIdstringrequired
- libraryIdstringrequired
- serverIdstringrequired
- viewerFencestringrequired
filesarray of objectrequired0–100 items
- audioCountintegerrequired
- availablebooleanrequired
- bitRateinteger
- containerstringrequiredpattern ^[^ ]*$
discobject
- chapterCountintegerrequired
- kindstringrequiredone of "bluray", "dvd"
- packagingstringrequiredone of "iso", "folder"
- titleNumberintegerrequired
- durationnumber
- durationStatestring
- editionstringpattern ^[^ ]*$
- idstringrequired
- itemIdstringrequired
- occurrencestringrequired
- partIndexintegerrequired
- pathstringpattern ^[^ ]*$
- sizeinteger
- sizeExactstring
- subtitleCountintegerrequired
videoobject
- bitDepthinteger
- bitRateinteger
- codecstringrequiredpattern ^[^ ]*$
- dynamicRangestringpattern ^[^ ]*$
- frameRatenumber
- hdr10Plusboolean
- heightintegerrequired
- profilestringpattern ^[^ ]*$
- widthintegerrequired
- itemKindstringrequired
- kind"file-info-files"required
scopeobjectrequired
- itemIdstringrequired
- libraryIdstringrequired
- serverIdstringrequired
- viewerFencestringrequired
surfaceobjectrequired
- canSplitbooleanrequired
- eligibleFileCountintegerrequired
- fileCountintegerrequired
- groupCountintegerrequired
- hasDiscColumnsbooleanrequired
manageobject
- deletebooleanrequired
- mergebooleanrequired
- splitbooleanrequired
- ownerDiscOccurrencestring
- variant"files"required
windowobjectrequired
- limitintegerrequired1–100
- nextCursorstringlength 154–154pattern ^[A-Za-z0-9_-]{154}$
- previousCursorstringlength 154–154pattern ^[A-Za-z0-9_-]{154}$
- queryIdstringrequiredlength 338–338pattern ^[A-Za-z0-9_-]{183}\.[A-Za-z0-9_-]{154}$
- reloadCursorstringlength 154–154pattern ^[A-Za-z0-9_-]{154}$
- returnedintegerrequired0–100
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundstale_continuationmetadata_unavailableinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/items/{id}/file-info" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/jobsCapture a selection and enqueue a durable bulk jobplayback
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the playback scope, or a signed-in session
- OpenAPI operation ID
create_job- Max body
- 64 KiB
Request body application/json · required
{
"args": {
"favorite": true,
"rating": 0,
"watched": true,
"watchlist": true
},
"command": "personal-state",
"expected": {
"catalogRevision": "r12"
},
"operationId": "id_8h2k4q",
"selector": {
"container": {
"id": "id_8h2k4q",
"kind": "show"
}
}
}argsobjectrequired
- collectionIdstringlength 1–256
- expectedRevisioninteger≥ 1
- favoriteboolean
fieldsobject
- lockedboolean
- useAutomaticboolean
- valuestring
- valuesarray of string
genresobject
- addarray of string
- removearray of string
listsobject
- addarray of string
- removearray of string
- lockEditedboolean
placementstring | object
- afterstringrequiredlength 1–256
- playlistIdstringlength 1–256
- ratinginteger | any | null
- watchedboolean
- watchlistboolean
- commandstringrequiredone of "personal-state", "playlist-add", "collection-add", "metadata-edit", "refresh"
expectedobject
- catalogRevisionstring
- operationIdstringrequiredpattern ^[A-Za-z0-9_-]{1,128}$
selectorobjectrequired
containerobject
- idstringrequiredlength 1–256
- kindstringrequiredone of "show", "season", "album", "artist", "book", "collection", "playlist", "library"
itemsobject
- idsarray of stringrequired1–200 items
queryobject
- filterobject
- libraryIdstringrequiredlength 1–256
- pivotstringrequiredlength 1–256
- selectionBasisstringpattern ^[a-f0-9]{64}$
sortarray of object
- directionstringrequiredone of "asc", "desc"
- fieldstringrequiredlength 1–256
Responses
202Successapplication/json
{
"command": "string",
"done": 0,
"errorCode": "string",
"failed": 0,
"failuresCursor": "eyJvIjoyMH0",
"jobId": "id_8h2k4q",
"state": "string",
"total": 0,
"totalKnown": true
}- commandstringrequired
- doneintegerrequired
- errorCodestring
- failedintegerrequired
- failuresCursorstring
- jobIdstringrequired
- statestringrequired
- totalintegerrequired
- totalKnownbooleanrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_foundidempotency_key_reusedrevision_mismatchrate_limitedinternaltimeoutdatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/jobs" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"args": {
"favorite": true,
"rating": 0,
"watched": true,
"watchlist": true
},
"command": "personal-state",
"expected": {
"catalogRevision": "r12"
},
"operationId": "id_8h2k4q",
"selector": {
"container": {
"id": "id_8h2k4q",
"kind": "show"
}
}
}'GET/v1/jobs/{id}Read this profile's job progressread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_job
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"command": "string",
"done": 0,
"errorCode": "string",
"failed": 0,
"failuresCursor": "eyJvIjoyMH0",
"jobId": "id_8h2k4q",
"state": "string",
"total": 0,
"totalKnown": true
}- commandstringrequired
- doneintegerrequired
- errorCodestring
- failedintegerrequired
- failuresCursorstring
- jobIdstringrequired
- statestringrequired
- totalintegerrequired
- totalKnownbooleanrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_foundidempotency_key_reusedrevision_mismatchrate_limitedinternaltimeoutdatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/jobs/{id}" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/jobs/{id}/failuresRead visible failures from this profile's jobread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_job_failures
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
cursor | query | string |
Responses
200Successapplication/json
{
"items": [
{
"code": "string",
"itemId": "id_8h2k4q"
}
],
"nextCursor": "eyJvIjoyMH0"
}itemsarray of objectrequired
- codestringrequired
- itemIdstringrequired
- nextCursorstring
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_foundidempotency_key_reusedrevision_mismatchrate_limitedinternalinvalid_cursortimeoutdatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/jobs/{id}/failures" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/librariesList visible librariesread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_libraries
Responses
200Successapplication/json
{
"items": [
{
"defaultView": "string",
"id": "id_8h2k4q",
"kind": "string",
"name": "Fargo",
"pinned": true,
"summary": {
"counts": [
{}
],
"coverUrls": [
"https://example.com/…"
],
"empty": true,
"emptyKnown": true,
"firstScan": true,
"latestArtwork": "string",
"publicationCounts": [
{}
]
}
}
]
}itemsarray of objectrequired
- defaultViewstringrequired
- idstringrequired
- kindstringrequired
- namestringrequired
- pinnedbooleanrequired
summaryobject
countsarray of objectrequired
- atLeastbooleanrequired
- countintegerrequired
- kindstringrequired
- coverUrlsarray of stringrequired
- emptybooleanrequired
- emptyKnownbooleanrequired
- firstScanbooleanrequired
- latestArtworkstringrequired
publicationCountsarray of object
- atLeastbooleanrequired
- countintegerrequired
- kindstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundrevision_mismatchinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/libraries" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/libraries/{id}/scansRun library scanslibrary
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the library scope, or a signed-in session
- OpenAPI operation ID
post_libraries_id_scans
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
mode | query | string |
Responses
202Successapplication/json
{
"analyzed": 0,
"error": "string",
"id": "id_8h2k4q",
"jobs": [
"string"
],
"phase": "string",
"processed": 0,
"scanMode": "string",
"sourceId": "id_8h2k4q",
"status": "string",
"warnings": 0
}- analyzedintegerrequired
- errorstring
- idstringrequired
- jobsarray of string
- phasestring
- processedintegerrequired
- scanModestring
- sourceIdstring
- statusstringrequired
- warningsintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/libraries/{id}/scans" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/libraries/paths-changedReport paths that were added, changed or removed, and scan only those folderslibrary
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the library scope, or a signed-in session
- OpenAPI operation ID
report_changed_paths- Max body
- 1 MiB
Request body application/json · required
{
"mode": "string",
"paths": [
{
"change": "string",
"path": "string"
}
]
}- modestring
pathsarray of objectrequired
- changestring
- pathstringrequired
Responses
202Successapplication/json
{
"deferred": true,
"jobs": [
{
"analyzed": 0,
"error": "string",
"id": "id_8h2k4q",
"jobs": [
"string"
],
"phase": "string",
"processed": 0,
"scanMode": "string",
"sourceId": "id_8h2k4q",
"status": "string",
"warnings": 0
}
],
"paths": [
{
"folder": "string",
"libraryId": "id_8h2k4q",
"path": "string",
"scanScope": "string",
"sourceId": "id_8h2k4q",
"status": "string"
}
]
}- deferredboolean
jobsarray of objectrequired
- analyzedintegerrequired
- errorstring
- idstringrequired
- jobsarray of string
- phasestring
- processedintegerrequired
- scanModestring
- sourceIdstring
- statusstringrequired
- warningsintegerrequired
pathsarray of objectrequired
- folderstring
- libraryIdstring
- pathstringrequired
- scanScopestring
- sourceIdstring
- statusstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinvalid_requestbody_too_largeadministration_unavailableinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/libraries/paths-changed" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"string","paths":[{"change":"string","path":"string"}]}'GET/v1/me/access-tokensList your personal access tokenssession
- Audience
- Integrations · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
list_access_tokens
Parameters
| Name | In | Type | Description |
|---|---|---|---|
cursor | query | string | |
limit | query | integer | ""1–100 |
Responses
200Successapplication/json
{
"items": [
{
"createdAt": "2026-10-18T19:30:00Z",
"endedReason": "string",
"expiresAt": "2026-10-18T19:30:00Z",
"hint": "string",
"id": "id_8h2k4q",
"kind": "string",
"lastUsedAt": "2026-10-18T19:30:00Z",
"member": {
"accountId": "id_8h2k4q",
"profile": "string",
"profileId": "id_8h2k4q",
"username": "Fargo"
},
"name": "Fargo",
"scopes": [
"string"
],
"state": "string"
}
],
"limit": 0,
"nextCursor": "eyJvIjoyMH0",
"total": 0
}itemsarray of objectrequired
- createdAtstringrequired
- endedReasonstring
- expiresAtstring
- hintstringrequired
- idstringrequired
- kindstringrequired
- lastUsedAtstring
memberobjectrequired
- accountIdstringrequired
- profilestringrequired
- profileIdstringrequired
- usernamestringrequired
- namestringrequired
- scopesarray of stringrequired
- statestringrequired
- limitintegerrequired
- nextCursorstring
- totalintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedsession_requiredinvalid_requestadministration_unavailableinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/me/access-tokens" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN"POST/v1/me/access-tokensCreate a personal access token; its secret is shown oncesession
- Audience
- Integrations · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
create_access_token- Max body
- 4 KiB
Request body application/json · required
{
"expiresAt": "2026-10-18T19:30:00Z",
"name": "Fargo",
"operationId": "id_8h2k4q",
"scopes": [
"string"
]
}- expiresAtstring
- namestringrequired
- operationIdstringrequired
- scopesarray of stringrequired
Responses
201Successapplication/json
{
"credential": {
"createdAt": "2026-10-18T19:30:00Z",
"endedReason": "string",
"expiresAt": "2026-10-18T19:30:00Z",
"hint": "string",
"id": "id_8h2k4q",
"kind": "string",
"lastUsedAt": "2026-10-18T19:30:00Z",
"member": {
"accountId": "id_8h2k4q",
"profile": "string",
"profileId": "id_8h2k4q",
"username": "Fargo"
},
"name": "Fargo",
"scopes": [
"string"
],
"state": "string"
},
"secret": "string"
}credentialobjectrequired
- createdAtstringrequired
- endedReasonstring
- expiresAtstring
- hintstringrequired
- idstringrequired
- kindstringrequired
- lastUsedAtstring
memberobjectrequired
- accountIdstringrequired
- profilestringrequired
- profileIdstringrequired
- usernamestringrequired
- namestringrequired
- scopesarray of stringrequired
- statestringrequired
- secretstring
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedsession_requiredinvalid_requestidempotency_key_reusedcredential_limitcredential_unavailableaccess_tokens_offadministration_unavailableinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/me/access-tokens" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expiresAt":"2026-10-18T19:30:00Z","name":"Fargo","operationId":"id_8h2k4q","scopes":["string"]}'DELETE/v1/me/access-tokens/{id}Revoke one of your personal access tokenssession
- Audience
- Integrations · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
revoke_access_token
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"createdAt": "2026-10-18T19:30:00Z",
"endedReason": "string",
"expiresAt": "2026-10-18T19:30:00Z",
"hint": "string",
"id": "id_8h2k4q",
"kind": "string",
"lastUsedAt": "2026-10-18T19:30:00Z",
"member": {
"accountId": "id_8h2k4q",
"profile": "string",
"profileId": "id_8h2k4q",
"username": "Fargo"
},
"name": "Fargo",
"scopes": [
"string"
],
"state": "string"
}- createdAtstringrequired
- endedReasonstring
- expiresAtstring
- hintstringrequired
- idstringrequired
- kindstringrequired
- lastUsedAtstring
memberobjectrequired
- accountIdstringrequired
- profilestringrequired
- profileIdstringrequired
- usernamestringrequired
- namestringrequired
- scopesarray of stringrequired
- statestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedsession_requiredinvalid_requestnot_foundadministration_unavailableinternaldatabase_busywriter_capacity
Example request
curl -X DELETE "http://127.0.0.1:32500/v1/me/access-tokens/{id}" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN"GET/v1/me/api-accessRead the scopes and limits for API keys and personal access tokenssession
- Audience
- Integrations · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
get_api_access_options
Responses
200Successapplication/json
{
"maximumKeys": 0,
"maximumTokens": 0,
"queryParameter": "string",
"requestsPerMinute": 0,
"scopes": [
{
"id": "id_8h2k4q"
}
],
"tokensAllowed": true
}- maximumKeysintegerrequired
- maximumTokensintegerrequired
- queryParameterstringrequired
- requestsPerMinuteintegerrequired
scopesarray of objectrequired
- idstringrequired
- tokensAllowedbooleanrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizedsession_requiredinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/me/api-access" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN"GET/v1/playback/controlsRead this account’s playback on each device and the controls it may useplayback
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the playback scope, or a signed-in session
- OpenAPI operation ID
get_remote_playback_controls
Parameters
| Name | In | Type | Description |
|---|---|---|---|
cursor | query | string | |
limit | query | integer | ""0–100 |
Responses
200Successapplication/json
{
"items": [
{
"actions": [
"string"
],
"device": {
"id": "id_8h2k4q",
"name": "Fargo"
},
"durationMs": 1800000,
"generation": 0,
"item": {
"id": "id_8h2k4q",
"title": "Fargo"
},
"kind": "string",
"next": {
"album": "string",
"albumId": "id_8h2k4q",
"artist": "string",
"artistId": "id_8h2k4q",
"available": true,
"backdropUrl": "https://example.com/…",
"disc": 0,
"durationMs": 1800000,
"entryId": "id_8h2k4q",
"episode": {
"number": 0,
"seasonNumber": 0
},
"itemId": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"position": 0,
"posterUrl": "https://example.com/…",
"seasonId": "id_8h2k4q",
"segmentId": "id_8h2k4q",
"showId": "id_8h2k4q",
"stillUrl": "https://example.com/…",
"title": "Fargo",
"track": 0
},
"positionMs": 1800000,
"revision": "r12",
"sessionId": "id_8h2k4q",
"state": "string"
}
],
"nextCursor": "eyJvIjoyMH0",
"streamLimit": {
"limit": 0,
"playing": 0,
"scope": "string"
}
}itemsarray of objectrequired
- actionsarray of stringrequired
deviceobjectrequired
- idstringrequired
- namestringrequired
- durationMsinteger
- generationintegerrequired
itemobject
- idstringrequired
- titlestringrequired
- kindstringrequired
nextobject
- albumstring
- albumIdstring
- artiststring
- artistIdstring
- availablebooleanrequired
- backdropUrlstring
- discinteger
- durationMsinteger
- entryIdstringrequired
episodeobject
- numberintegerrequired
- seasonNumberintegerrequired
- itemIdstringrequired
- kindstringrequired
- libraryIdstring
- positionintegerrequired
- posterUrlstring
- seasonIdstring
- segmentIdstringrequired
- showIdstring
- stillUrlstring
- titlestringrequired
- trackinteger
- positionMsintegerrequired
- revisionstringrequired
- sessionIdstringrequired
- statestringrequired
- nextCursorstringrequired
streamLimitobject
- limitintegerrequired
- playingintegerrequired
- scopestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittednot_foundinvalid_requestrevision_requiredrevision_mismatchsession_endedinternaltimeoutdatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/playback/controls" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/playback/controls/{id}:stopStop playback belonging to this account without disclosing a hidden titleplayback
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the playback scope, or a signed-in session
- OpenAPI operation ID
stop_account_playback- Max body
- 4 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
Idempotency-Key | header | string | |
Portico-Mutation-Root | header | string |
Request body application/json
{
"generation": 1
}- generationinteger1–2147483647
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittednot_foundinvalid_requestrevision_requiredrevision_mismatchsession_endedinternaltimeoutidempotency_conflictreceipt_expiredinvalid_mutation_keydatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/playback/controls/{id}:stop" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"generation":1}'GET/v1/searchSearch titles, people, years and collectionsread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
search
Parameters
| Name | In | Type | Description |
|---|---|---|---|
q | query | string | |
group | query | string | |
groups | query | string | |
cursor | query | string | |
limit | query | integer≥ 1 | |
sort | query | string | |
direction | query | string | |
libraryIds | query | string | |
record | query | string |
Responses
200Successapplication/json
{
"capabilities": {
"directions": [
"string"
],
"groupBudgetMs": 1800000,
"groups": [
{
"available": true,
"entityKind": "string",
"id": "id_8h2k4q",
"labelKey": "string",
"reason": "string",
"sorts": [
"string"
],
"title": "Fargo"
}
],
"maxLimit": 0,
"sorts": [
"string"
]
},
"empty": {
"fallback": "string",
"key": "string",
"params": {
"key": "string"
}
},
"groups": [
{
"entityKind": "string",
"errorCode": "string",
"hasMore": true,
"id": "id_8h2k4q",
"items": [
{
"absoluteNumber": 0,
"activeBeginYear": 0,
"activeEndYear": 0,
"addedAt": "2026-10-18T19:30:00Z",
"airDate": "string",
"album": {},
"albumCount": 0,
"albumType": "string",
"artist": {},
"artistType": "string",
"artworkPaths": [],
"audioFacts": {},
"author": "string",
"available": true,
"backdropUrl": "https://example.com/…",
"badges": [],
"bookProgress": {},
"contentRating": "string",
"count": 0,
"country": "string",
"dateBased": true,
"discNumber": 0,
"displayTitle": "Fargo",
"durationMs": 1800000,
"edition": "string",
"episodeNumber": 0,
"favorite": true,
"genres": [],
"hidden": true,
"homeActions": {},
"homeTitleContext": {},
"id": "id_8h2k4q",
"kind": "string",
"label": "string",
"language": "en",
"lastChanged": "string",
"latestEpisode": {},
"libraryId": "id_8h2k4q",
"media": {},
"missing": true,
"narrators": [],
"navigation": {},
"new": true,
"origin": "string",
"overview": "string",
"overviewSource": "string",
"overviewSourceUrl": "https://example.com/…",
"pageCount": 0,
"pinned": true,
"playback": {},
"plays": 0,
"posterUrl": "https://example.com/…",
"progressMs": 1800000,
"publicationType": "book",
"publishedYear": 0,
"publisher": "string",
"radioSeed": {},
"rating": 0,
"readingMark": {},
"releaseDate": "string",
"removed": true,
"resolution": "string",
"role": "string",
"seasonCount": 0,
"seasonNumber": 0,
"series": [],
"show": {},
"sortLetter": "string",
"special": true,
"stillUrl": "https://example.com/…",
"subtitle": "Fargo",
"title": "Fargo",
"totalAtLeast": 0,
"trackNumber": 0,
"unwatchedCount": 0,
"userRating": 0,
"watched": true,
"watchedCount": 0,
"watchlisted": true,
"year": 0,
"yearMax": 0,
"yearMin": 0
}
],
"labelKey": "string",
"nextCursor": "eyJvIjoyMH0",
"status": "string",
"title": "Fargo",
"totalCount": 0,
"totalCountExact": true
}
],
"heading": {
"fallback": "string",
"key": "string",
"params": {
"key": "string"
}
},
"query": {
"direction": "string",
"group": "string",
"groups": [
"string"
],
"libraryIds": [
"string"
],
"limit": 0,
"q": "string",
"recorded": true,
"searchMode": "string",
"sort": "string"
},
"revision": {
"catalog": 0,
"viewer": 0
},
"scope": {
"entityId": "id_8h2k4q",
"libraryId": "id_8h2k4q",
"libraryKind": "string",
"serverId": "id_8h2k4q",
"view": "string",
"viewerFence": "string"
}
}capabilitiesobjectrequired
- directionsarray of stringrequired
- groupBudgetMsintegerrequired
groupsarray of objectrequired
- availablebooleanrequired
- entityKindstringrequired
- idstringrequired
- labelKeystringrequired
- reasonstring
- sortsarray of stringrequired
- titlestringrequired
- maxLimitintegerrequired
- sortsarray of stringrequired
emptyobject
- fallbackstringrequired
- keystringrequired
- paramsobject
groupsarray of objectrequired
- entityKindstringrequired
- errorCodestringrequired
- hasMorebooleanrequired
- idstringrequired
itemsarray of objectrequired
- absoluteNumberinteger
- activeBeginYearinteger
- activeEndYearinteger
- addedAtstring | any | null
- airDatestring
albumobject
- idstringrequired
- namestringrequired
- albumCountinteger
- albumTypestring
artistobject
- idstringrequired
- namestringrequired
- artistTypestring
- artworkPathsarray of string
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- authorstring
- availableboolean
- backdropUrlstring
badgesarray of object0–2 items
- bitDepthintegerrequired≥ 17
- codecstringrequiredpattern ^[A-Za-z0-9_.+-]{1,64}$
- sampleRateintegerrequired≥ 1
- variant"lossless"required
bookProgressobject
- bookIdstringrequired
chapterobject
- endMsintegerrequired
- indexintegerrequired
- startMsintegerrequired
- titlestringrequired
- durationMsinteger
- itemIdstringrequired
- partPositionMsintegerrequired
- positionMsinteger
- remainingMsinteger
- contentRatingstring
- countinteger
- countrystring
- dateBasedboolean
- discNumberinteger
- displayTitlestring
- durationMsinteger≥ 0
- editionstring
- episodeNumberinteger
- favoriteboolean
- genresarray of string
- hiddenboolean | any | null
homeActionsobject
- collectionbooleanrequired
- deletebooleanrequired
- detailsbooleanrequired
- downloadbooleanrequired
- editMetadatabooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- notInterestedboolean
- playbooleanrequired
- playedbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- ratingbooleanrequired
- refreshMetadatabooleanrequired
- removeFromContinueboolean
selectionobjectrequired
- collectionbooleanrequired
- deletebooleanrequired
- downloadbooleanrequired
- editbooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- playbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- refreshbooleanrequired
- watchedbooleanrequired
stateobjectrequired
- containerRevisionintegerrequired
- favoritebooleanrequired
- personalRevisionintegerrequired
- ratingnumber | any | nullrequired
- watchedbooleanrequired
- watchlistedbooleanrequired
- watchedbooleanrequired
homeTitleContextobject
- genresarray of stringrequired
- kindstringrequired
- seasonCountinteger
- yearinteger
- idstringrequired
- kindstringrequired
- labelstring
- languagestring
- lastChangedstring
latestEpisodeobject
- airDatestringrequired
- countintegerrequired
- episodeNumberintegerrequired
- seasonNumberinteger
- titlestring
- libraryIdstring
mediaobject
- absoluteNumberinteger
- activeBeginYearinteger
- activeEndYearinteger
- addedAtstring | any | nullrequired
- airDatestring
albumobject
- idstringrequired
- namestringrequired
- albumCountinteger
- albumTypestring
artistobject
- idstringrequired
- namestringrequired
- artistTypestring
- artworkPathsarray of string
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- authorstring
- availableboolean
- backdropUrlstring
badgesarray of object0–2 items
- bitDepthintegerrequired≥ 17
- codecstringrequiredpattern ^[A-Za-z0-9_.+-]{1,64}$
- sampleRateintegerrequired≥ 1
- variant"lossless"required
bookProgressobject
- bookIdstringrequired
chapterobject
- endMsintegerrequired
- indexintegerrequired
- startMsintegerrequired
- titlestringrequired
- durationMsinteger
- itemIdstringrequired
- partPositionMsintegerrequired
- positionMsinteger
- remainingMsinteger
- contentRatingstring
- countinteger
- countrystring
- dateBasedboolean
- discNumberinteger
- displayTitlestring
- durationMsinteger≥ 0
- editionstring
- episodeNumberinteger
- favoriteboolean
- genresarray of string
homeActionsobject
- collectionbooleanrequired
- deletebooleanrequired
- detailsbooleanrequired
- downloadbooleanrequired
- editMetadatabooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- notInterestedboolean
- playbooleanrequired
- playedbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- ratingbooleanrequired
- refreshMetadatabooleanrequired
- removeFromContinueboolean
selectionobjectrequired
- collectionbooleanrequired
- deletebooleanrequired
- downloadbooleanrequired
- editbooleanrequired
- favoritebooleanrequired
- myListbooleanrequired
- playbooleanrequired
- playlistbooleanrequired
- queuebooleanrequired
- refreshbooleanrequired
- watchedbooleanrequired
stateobjectrequired
- containerRevisionintegerrequired
- favoritebooleanrequired
- personalRevisionintegerrequired
- ratingnumber | any | nullrequired
- watchedbooleanrequired
- watchlistedbooleanrequired
- watchedbooleanrequired
homeTitleContextobject
- genresarray of stringrequired
- kindstringrequired
- seasonCountinteger
- yearinteger
- idstringrequired
- kindstringrequired
- labelstring
- languagestring
- lastChangedstring
latestEpisodeobject
- airDatestringrequired
- countintegerrequired
- episodeNumberintegerrequired
- seasonNumberinteger
- titlestring
- libraryIdstring
- missingbooleanrequired
- narratorsarray of string
navigationobject
browseobject
- pivotstringrequiredlength 1–256
- queryobject
sortarray of objectrequired0–1 items
- directionstringrequiredone of "asc", "desc"
- fieldstringrequired
- categorystring
- channelIdstring
- entityIdstring
- provenancestring
- sourceIdstring
- viewstringrequired
- newboolean
- originstring
- overviewstring
- overviewSourcestring
- overviewSourceUrlstring
- pageCountinteger
- pinnedboolean
playbackobject
- itemIdstringrequired
- startMsinteger≥ 0
- playsinteger
- posterUrlstring
- progressMsinteger≥ 0
- publicationTypestringone of "book", "magazine", "newspaper"
- publishedYearinteger
- publisherstring
radioSeedobject
- idstringrequired
- kindstringrequired
- ratingnumber
readingMarkobject
- itemIdstringrequired
- readbooleanrequired
- revisionintegerrequired
- releaseDatestring
- removedboolean
- resolutionstring
- rolestring
- seasonCountinteger
- seasonNumberinteger
seriesarray of object
- namestringrequired
- positionstring
showobject
- idstringrequired
- namestringrequired
- sortLetterstring
- specialboolean
- stillUrlstring
- subtitlestring
- titlestringrequired
- totalAtLeastinteger
- trackNumberinteger
- unwatchedCountinteger
- userRatinginteger | any | null
- watchedboolean
- watchedCountinteger
- watchlistedboolean
- yearinteger
- yearMaxinteger
- yearMininteger
- missingboolean
- narratorsarray of string
navigationobject
browseobject
- pivotstringrequiredlength 1–256
- queryobject
sortarray of objectrequired0–1 items
- directionstringrequiredone of "asc", "desc"
- fieldstringrequired
- categorystring
- channelIdstring
- entityIdstring
- provenancestring
- sourceIdstring
- viewstringrequired
- newboolean
- originstring
- overviewstring
- overviewSourcestring
- overviewSourceUrlstring
- pageCountinteger
- pinnedboolean
playbackobject
- itemIdstringrequired
- startMsinteger≥ 0
- playsinteger
- posterUrlstring
- progressMsinteger≥ 0
- publicationTypestringone of "book", "magazine", "newspaper"
- publishedYearinteger
- publisherstring
radioSeedobject
- idstringrequired
- kindstringrequired
- ratingnumber
readingMarkobject
- itemIdstringrequired
- readbooleanrequired
- revisionintegerrequired
- releaseDatestring
- removedboolean
- resolutionstring
- rolestring
- seasonCountinteger
- seasonNumberinteger
seriesarray of object
- namestringrequired
- positionstring
showobject
- idstringrequired
- namestringrequired
- sortLetterstring
- specialboolean
- stillUrlstring
- subtitlestring
- titlestring
- totalAtLeastinteger
- trackNumberinteger
- unwatchedCountinteger
- userRatinginteger | any | null
- watchedboolean
- watchedCountinteger
- watchlistedboolean
- yearinteger
- yearMaxinteger
- yearMininteger
- labelKeystringrequired
- nextCursorstringrequired
- statusstringrequired
- titlestringrequired
- totalCountintegerrequired
- totalCountExactbooleanrequired
headingobjectrequired
- fallbackstringrequired
- keystringrequired
- paramsobject
queryobjectrequired
- directionstringrequired
- groupstringrequired
- groupsarray of stringrequired
- libraryIdsarray of stringrequired
- limitintegerrequired
- qstringrequired
- recordedbooleanrequired
- searchModestringrequired
- sortstringrequired
revisionobjectrequired
- catalogintegerrequired
- viewerintegerrequired
scopeobjectrequired
- entityIdstringrequired
- libraryIdstringrequired
- libraryKindstringrequired
- serverIdstringrequired
- viewstringrequired
- viewerFencestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/search" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/seasons/{id}/episodesRead season episodesread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_seasons_id_episodes
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
cursor | query | string | |
limit | query | integer | |
playState | query | string |
Responses
200Successapplication/json
{
"episodes": [
{
"addedAt": "2026-10-18T19:30:00Z",
"audioFacts": {
"atmos": true,
"bitDepth": 0,
"channels": 0,
"codec": "string",
"layout": "string",
"lossless": true,
"sampleRate": 0
},
"available": true,
"backdropUrl": "https://example.com/…",
"bookFile": {
"bookId": "id_8h2k4q",
"bookTitle": "Fargo",
"discNumber": 0,
"localMetadata": {
"authors": [],
"description": "string",
"edition": "string",
"identifiers": [],
"language": "en",
"narrators": [],
"publishedYear": 0,
"publisher": "string",
"series": [],
"sources": {}
},
"localMetadataIssue": "string",
"localPolicy": {
"localMode": "string",
"revision": 0
},
"partNumber": 0,
"sourceBoundary": "string"
},
"durationMs": 1800000,
"durationState": "unrepresentable",
"episode": {
"airDate": "string",
"localIdentityStatus": "string",
"number": 0,
"numbering": "string",
"orderingBasis": "string",
"providerMatchStatus": "string",
"seasonId": "id_8h2k4q",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"sourceBoundary": "string"
},
"fileInfoOpening": "string",
"id": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"missing": true,
"overview": "string",
"posterUrl": "https://example.com/…",
"progressMs": 1800000,
"song": {
"albumArtist": "string",
"albumId": "id_8h2k4q",
"albumTitle": "Fargo",
"artist": "string",
"discNumber": 0,
"localMetadataIssue": "string",
"providerArtist": "string",
"providerMatchStatus": "string",
"providerObservedAt": "2026-10-18T19:30:00Z",
"providerRecordingId": "id_8h2k4q",
"providerReleaseGroupId": "id_8h2k4q",
"providerReleaseId": "id_8h2k4q",
"providerReleaseStatus": "string",
"providerSourceUrl": "https://example.com/…",
"providerTitle": "Fargo",
"providerTrackId": "id_8h2k4q",
"trackNumber": 0
},
"sources": [
{
"audioCodec": "string",
"container": "string",
"durationMs": 1800000,
"height": 0,
"id": "id_8h2k4q",
"videoCodec": "string",
"width": 0
}
],
"stillUrl": "https://example.com/…",
"title": "Fargo",
"watched": true,
"year": 0
}
],
"nextCursor": "eyJvIjoyMH0"
}episodesarray of objectrequired
- addedAtstring | any | nullrequired
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- availablebooleanrequired
- backdropUrlstring
bookFileobject
- bookIdstringrequired
- bookTitlestringrequired
- discNumberinteger
localMetadataobject
- authorsarray of stringrequired
- descriptionstring
- editionstring
identifiersarray of objectrequired
- schemestringrequired
- valuestringrequired
- languagestring
- narratorsarray of stringrequired
- publishedYearinteger
- publisherstring
seriesarray of objectrequired
- namestringrequired
- positionstring
- sourcesobjectrequired
- localMetadataIssuestring
localPolicyobject
- localModestringrequired
- revisionintegerrequired
- partNumberinteger
- sourceBoundarystringrequired
- durationMsinteger≥ 0
- durationStatestringone of "unrepresentable"
episodeobject
- airDatestring
- localIdentityStatusstringrequired
- numberintegerrequired
- numberingstringrequired
- orderingBasisstringrequired
- providerMatchStatusstringrequired
- seasonIdstring
- seasonNumberinteger
- showIdstringrequired
- showTitlestringrequired
- sourceBoundarystringrequired
- fileInfoOpeningstring
- idstringrequired
- kindstringrequired
- libraryIdstringrequired
- missingbooleanrequired
- overviewstring
- posterUrlstring
- progressMsintegerrequired≥ 0
songobject
- albumArtiststringrequired
- albumIdstringrequired
- albumTitlestringrequired
- artiststringrequired
- discNumberinteger
- localMetadataIssuestring
- providerArtiststring
- providerMatchStatusstringrequired
- providerObservedAtstring
- providerRecordingIdstring
- providerReleaseGroupIdstring
- providerReleaseIdstring
- providerReleaseStatusstringrequired
- providerSourceUrlstring
- providerTitlestring
- providerTrackIdstring
- trackNumberinteger
sourcesarray of object
- audioCodecstringrequired
- containerstringrequired
- durationMsintegerrequired≥ 0
- heightintegerrequired
- idstringrequired
- videoCodecstringrequired
- widthintegerrequired
- stillUrlstring
- titlestringrequired
- watchedboolean
- yearinteger
- nextCursorstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/seasons/{id}/episodes" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/serverRead server identity and API levelopen
- Audience
- Integrations · Native API
- Authorization
- No credential needed
- OpenAPI operation ID
get_server
Responses
200Successapplication/json
{
"api": {
"level": 0,
"major": 0
},
"id": "id_8h2k4q",
"name": "Fargo",
"setupRequired": true
}apiobjectrequired
- levelintegerrequired
- majorintegerrequired
- idstringrequired
- namestringrequired
- setupRequiredbooleanrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/server"GET/v1/shows/{id}/episodesRead show episodesread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_shows_id_episodes
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
cursor | query | string | |
limit | query | integer | |
playState | query | string |
Responses
200Successapplication/json
{
"episodes": [
{
"addedAt": "2026-10-18T19:30:00Z",
"audioFacts": {
"atmos": true,
"bitDepth": 0,
"channels": 0,
"codec": "string",
"layout": "string",
"lossless": true,
"sampleRate": 0
},
"available": true,
"backdropUrl": "https://example.com/…",
"bookFile": {
"bookId": "id_8h2k4q",
"bookTitle": "Fargo",
"discNumber": 0,
"localMetadata": {
"authors": [],
"description": "string",
"edition": "string",
"identifiers": [],
"language": "en",
"narrators": [],
"publishedYear": 0,
"publisher": "string",
"series": [],
"sources": {}
},
"localMetadataIssue": "string",
"localPolicy": {
"localMode": "string",
"revision": 0
},
"partNumber": 0,
"sourceBoundary": "string"
},
"durationMs": 1800000,
"durationState": "unrepresentable",
"episode": {
"airDate": "string",
"localIdentityStatus": "string",
"number": 0,
"numbering": "string",
"orderingBasis": "string",
"providerMatchStatus": "string",
"seasonId": "id_8h2k4q",
"seasonNumber": 0,
"showId": "id_8h2k4q",
"showTitle": "Fargo",
"sourceBoundary": "string"
},
"fileInfoOpening": "string",
"id": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"missing": true,
"overview": "string",
"posterUrl": "https://example.com/…",
"progressMs": 1800000,
"song": {
"albumArtist": "string",
"albumId": "id_8h2k4q",
"albumTitle": "Fargo",
"artist": "string",
"discNumber": 0,
"localMetadataIssue": "string",
"providerArtist": "string",
"providerMatchStatus": "string",
"providerObservedAt": "2026-10-18T19:30:00Z",
"providerRecordingId": "id_8h2k4q",
"providerReleaseGroupId": "id_8h2k4q",
"providerReleaseId": "id_8h2k4q",
"providerReleaseStatus": "string",
"providerSourceUrl": "https://example.com/…",
"providerTitle": "Fargo",
"providerTrackId": "id_8h2k4q",
"trackNumber": 0
},
"sources": [
{
"audioCodec": "string",
"container": "string",
"durationMs": 1800000,
"height": 0,
"id": "id_8h2k4q",
"videoCodec": "string",
"width": 0
}
],
"stillUrl": "https://example.com/…",
"title": "Fargo",
"watched": true,
"year": 0
}
],
"group": "string",
"nextCursor": "eyJvIjoyMH0"
}episodesarray of objectrequired
- addedAtstring | any | nullrequired
audioFactsobject
- atmosboolean
- bitDepthinteger
- channelsinteger
- codecstringrequired
- layoutstring
- losslessboolean
- sampleRateinteger
- availablebooleanrequired
- backdropUrlstring
bookFileobject
- bookIdstringrequired
- bookTitlestringrequired
- discNumberinteger
localMetadataobject
- authorsarray of stringrequired
- descriptionstring
- editionstring
identifiersarray of objectrequired
- schemestringrequired
- valuestringrequired
- languagestring
- narratorsarray of stringrequired
- publishedYearinteger
- publisherstring
seriesarray of objectrequired
- namestringrequired
- positionstring
- sourcesobjectrequired
- localMetadataIssuestring
localPolicyobject
- localModestringrequired
- revisionintegerrequired
- partNumberinteger
- sourceBoundarystringrequired
- durationMsinteger≥ 0
- durationStatestringone of "unrepresentable"
episodeobject
- airDatestring
- localIdentityStatusstringrequired
- numberintegerrequired
- numberingstringrequired
- orderingBasisstringrequired
- providerMatchStatusstringrequired
- seasonIdstring
- seasonNumberinteger
- showIdstringrequired
- showTitlestringrequired
- sourceBoundarystringrequired
- fileInfoOpeningstring
- idstringrequired
- kindstringrequired
- libraryIdstringrequired
- missingbooleanrequired
- overviewstring
- posterUrlstring
- progressMsintegerrequired≥ 0
songobject
- albumArtiststringrequired
- albumIdstringrequired
- albumTitlestringrequired
- artiststringrequired
- discNumberinteger
- localMetadataIssuestring
- providerArtiststring
- providerMatchStatusstringrequired
- providerObservedAtstring
- providerRecordingIdstring
- providerReleaseGroupIdstring
- providerReleaseIdstring
- providerReleaseStatusstringrequired
- providerSourceUrlstring
- providerTitlestring
- providerTrackIdstring
- trackNumberinteger
sourcesarray of object
- audioCodecstringrequired
- containerstringrequired
- durationMsintegerrequired≥ 0
- heightintegerrequired
- idstringrequired
- videoCodecstringrequired
- widthintegerrequired
- stillUrlstring
- titlestringrequired
- watchedboolean
- yearinteger
- groupstringrequired
- nextCursorstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/shows/{id}/episodes" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/shows/{id}/seasonsRead show seasonread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_shows_id_seasons
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"seasons": [
{
"episodeCount": 0,
"firstAired": "string",
"id": "id_8h2k4q",
"lastAired": "string",
"number": 0,
"overview": "string",
"posterUrl": "https://example.com/…",
"showId": "id_8h2k4q",
"title": "Fargo",
"unwatchedCount": 0,
"watchedCount": 0
}
]
}seasonsarray of objectrequired
- episodeCountinteger
- firstAiredstring
- idstringrequired
- lastAiredstring
- numberintegerrequired
- overviewstring
- posterUrlstring
- showIdstringrequired
- titlestringrequired
- unwatchedCountinteger
- watchedCountinteger
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/shows/{id}/seasons" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/systemRead systemopen
- Audience
- Integrations · Native API
- Authorization
- No credential needed
- OpenAPI operation ID
get_system
Responses
200Successapplication/json
{
"apiLevel": 0,
"apiMajors": [
0
],
"apiVersion": "string",
"capabilities": [
"string"
],
"hostedAttached": true,
"hostedConfigured": true,
"id": "id_8h2k4q",
"move": "to_portico",
"moveEndsAt": "2026-10-18T19:30:00Z",
"name": "Fargo",
"setupRequired": true,
"signIn": "portico",
"version": "string"
}- apiLevelintegerrequired
- apiMajorsarray of integerrequired
- apiVersionstringrequired
- capabilitiesarray of stringrequired
- hostedAttachedbooleanrequired
- hostedConfiguredbooleanrequired
- idstringrequired
- movestring | any | nullrequired
- moveEndsAtstring | any | nullrequired
- namestringrequired
- setupRequiredbooleanrequired
- signInstringrequiredone of "portico", "local"
- versionstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/system"GET/v1/titlesList titles of one kind in one library, or find a title by its provider idread
- Audience
- Integrations · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
query_titles
Parameters
| Name | In | Type | Description |
|---|---|---|---|
library | query | string | |
kind | query | string | |
sort | query | string | |
order | query | string | |
yearFrom | query | string | |
yearTo | query | string | |
addedAfter | query | string | |
addedBefore | query | string | |
provider | query | string | |
providerId | query | string | |
cursor | query | string | |
limit | query | integer | ""1–100 |
Responses
200Successapplication/json
{
"items": [
{
"addedAt": "2026-10-18T19:30:00Z",
"available": true,
"durationMs": 1800000,
"id": "id_8h2k4q",
"kind": "string",
"libraryId": "id_8h2k4q",
"posterUrl": "https://example.com/…",
"providerIds": {
"key": "string"
},
"rating": 0,
"title": "Fargo",
"year": 0
}
],
"limit": 0,
"nextCursor": "eyJvIjoyMH0"
}itemsarray of objectrequired
- addedAtstring
- availablebooleanrequired
- durationMsinteger≥ 0
- idstringrequired
- kindstringrequired
- libraryIdstringrequired
- posterUrlstring
- providerIdsobjectrequired
- ratingnumber
- titlestringrequired
- yearinteger
- limitintegerrequired
- nextCursorstring
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizedinvalid_requestinvalid_cursorcursor_expirednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/titles" \
-H "Authorization: Bearer $PORTICO_API_KEY"No operations match that filter.