Integrations

Generated integrations operations.

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

NameInTypeDescription
cursorquerystring

Responses

200Successapplication/json

Example
{
  "items": [
    {
      "accountId": "id_8h2k4q",
      "id": "id_8h2k4q",
      "name": "Fargo",
      "profileId": "id_8h2k4q",
      "scopes": [
        "string"
      ],
      "state": "string",
      "username": "Fargo"
    }
  ],
  "nextCursor": "eyJvIjoyMH0"
}
Schema
  • itemsarray of objectrequired
    • accountIdstringrequired
    • idstringrequired
    • namestringrequired
    • profileIdstringrequired
    • scopesarray of stringrequired
    • statestringrequired
    • usernamestringrequired
  • nextCursorstring

defaultRequest refused or unavailableapplication/json

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

Example
{
  "accountId": "id_8h2k4q",
  "expiresAt": "2026-10-18T19:30:00Z",
  "name": "Fargo",
  "operationId": "id_8h2k4q",
  "profileId": "id_8h2k4q",
  "scopes": [
    "string"
  ]
}
Schema
  • accountIdstringrequired
  • expiresAtstring
  • namestringrequired
  • operationIdstringrequired
  • profileIdstringrequired
  • scopesarray of stringrequired

Responses

201Successapplication/json

Example
{
  "appPassword": {
    "accountId": "id_8h2k4q",
    "id": "id_8h2k4q",
    "name": "Fargo",
    "profileId": "id_8h2k4q",
    "scopes": [
      "string"
    ],
    "state": "string",
    "username": "Fargo"
  },
  "secret": "string"
}
Schema
  • appPasswordobjectrequired
    • accountIdstringrequired
    • idstringrequired
    • namestringrequired
    • profileIdstringrequired
    • scopesarray of stringrequired
    • statestringrequired
    • usernamestringrequired
  • secretstring

defaultRequest refused or unavailableapplication/json

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

NameInTypeDescription
idrequiredpathstring

Responses

200Successapplication/json

Example
{
  "accountId": "id_8h2k4q",
  "id": "id_8h2k4q",
  "name": "Fargo",
  "profileId": "id_8h2k4q",
  "scopes": [
    "string"
  ],
  "state": "string",
  "username": "Fargo"
}
Schema
  • accountIdstringrequired
  • idstringrequired
  • namestringrequired
  • profileIdstringrequired
  • scopesarray of stringrequired
  • statestringrequired
  • usernamestringrequired

defaultRequest refused or unavailableapplication/json

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

NameInTypeDescription
idrequiredpathstring

Responses

200Successapplication/json

Example
{
  "id": "id_8h2k4q",
  "secret": "string"
}
Schema
  • idstringrequired
  • secretstringrequired

defaultRequest refused or unavailableapplication/json

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

Example
{
  "name": "Fargo",
  "password": "string",
  "username": "Fargo"
}
Schema
  • namestringrequired
  • passwordstringrequired
  • usernamestringrequired

Responses

201Successapplication/json

Example
{
  "accountId": "id_8h2k4q",
  "token": "string",
  "userId": "id_8h2k4q",
  "username": "Fargo"
}
Schema
  • accountIdstringrequired
  • tokenstringrequired
  • userIdstringrequired
  • usernamestringrequired

defaultRequest refused or unavailableapplication/json

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

Example
{
  "enabled": true,
  "players": true,
  "profiles": [
    "string"
  ]
}
Schema
  • enabledbooleanrequired
  • playersbooleanrequired
  • profilesarray of stringrequired

defaultRequest refused or unavailableapplication/json

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

NameInTypeDescription
idsquerystring
libraryIdquerystring
libraryKindquerystring
kindquerystring
parentIdquerystring
providerquerystring
providerIdquerystring
yearquerystring
searchquerystring
sortquerystring
orderquerystring
addedAfterquerystring
addedBeforequerystring
includeFilesquerystring
hasPathsquerystring
cursorquerystring
limitqueryinteger | ""1–100

Responses

200Successapplication/json

Example
{
  "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
}
Schema
  • 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

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

NameInTypeDescription
idrequiredpathstring
cursorquerystring
limitqueryinteger | ""1–100

Responses

200Successapplication/json

Example
{
  "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
}
Schema
  • 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

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

NameInTypeDescription
idrequiredpathstring

Request body application/json · required

Example
{}
Schema

object

Responses

200Successapplication/json

Example
{
  "sources": 0
}
Schema
  • sourcesintegerrequired

defaultRequest refused or unavailableapplication/json

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

Example
{
  "items": [
    {
      "id": "id_8h2k4q",
      "name": "Fargo",
      "secret": "string"
    }
  ]
}
Schema
  • itemsarray of objectrequired
    • idstringrequired
    • namestringrequired
    • secretstringrequired

defaultRequest refused or unavailableapplication/json

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

Example
{
  "name": "Fargo"
}
Schema
  • namestringrequired

Responses

201Successapplication/json

Example
{
  "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"
}
Schema
  • credentialobjectrequired
    • createdAtstringrequired
    • endedReasonstring
    • expiresAtstring
    • hintstringrequired
    • idstringrequired
    • kindstringrequired
    • lastUsedAtstring
    • memberobjectrequired
      • accountIdstringrequired
      • profilestringrequired
      • profileIdstringrequired
      • usernamestringrequired
    • namestringrequired
    • scopesarray of stringrequired
    • statestringrequired
  • secretstring

defaultRequest refused or unavailableapplication/json

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

NameInTypeDescription
cursorquerystring
limitqueryinteger | ""1–100

Responses

200Successapplication/json

Example
{
  "items": [
    {
      "id": "id_8h2k4q",
      "kind": "string",
      "name": "Fargo",
      "paths": [
        "string"
      ]
    }
  ],
  "nextCursor": "eyJvIjoyMH0"
}
Schema
  • itemsarray of objectrequired
    • idstringrequired
    • kindstringrequired
    • namestringrequired
    • pathsarray of stringrequired
  • nextCursorstring

defaultRequest refused or unavailableapplication/json

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

Example
{
  "libraryId": "id_8h2k4q"
}
Schema
  • libraryIdstring

Responses

202Successapplication/json

Example
{
  "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"
    }
  ]
}
Schema
  • 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

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

NameInTypeDescription
cursorquerystring
limitqueryinteger | ""1–100

Responses

200Successapplication/json

Example
{
  "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"
}
Schema
  • 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

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

NameInTypeDescription
idrequiredpathstring
seasonquerystring
seasonIdquerystring
yearquerystring
searchquerystring
providerquerystring
providerIdquerystring
includeFilesquerystring
sortquerystring
orderquerystring
addedAfterquerystring
addedBeforequerystring
cursorquerystring
limitqueryinteger | ""1–100

Responses

200Successapplication/json

Example
{
  "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
}
Schema
  • 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

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

NameInTypeDescription
idrequiredpathstring
includeFilesquerystring
hasPathsquerystring
cursorquerystring
limitqueryinteger | ""1–100

Responses

200Successapplication/json

Example
{
  "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
}
Schema
  • 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

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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

NameInTypeDescription
cursorquerystring
limitqueryinteger | ""1–100

Responses

200Successapplication/json

Example
{
  "items": [
    {
      "accountId": "id_8h2k4q",
      "disabled": true,
      "profileId": "id_8h2k4q",
      "profileName": "Fargo",
      "role": "string",
      "username": "Fargo"
    }
  ],
  "nextCursor": "eyJvIjoyMH0"
}
Schema
  • itemsarray of objectrequired
    • accountIdstringrequired
    • disabledbooleanrequired
    • profileIdstringrequired
    • profileNamestringrequired
    • rolestringrequired
    • usernamestringrequired
  • nextCursorstring

defaultRequest refused or unavailableapplication/json

Example
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
Schema
  • 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"