Launch Sale: Creator and Business plans are discounted for a limited time. View pricing

Play Sessions

Play sessions manage audio playback for collections, tracks, or playlists.

Each track's resolved player_color is accompanied by two read-only companions: player_color_light (adjusted to stay legible on a light background) and player_color_dark (adjusted for a dark background), so your player can pick the right one for its theme.

POST /v1/play_session/:scope

Creates a new play session for a collection or track.

Parameters

Name Type Required Description
scope string Required "collection" or "track" (path parameter). "playlist" is reserved for a future release and currently returns 400.
variants array of strings Optional Variant settings for the play session
collection_id uuid Optional ID of the collection (required if scope is 'collection')
track_id uuid Optional ID of the track (required if scope is 'track')
is_downloadable boolean Optional Requests that tracks in this session be downloadable. This is only honored when the API key also allows downloads (set per key in the dashboard). The stored session value is api_key.is_downloadable AND this request, so a key that forbids downloads always wins — the download endpoint will return 403.
expires_in number Optional Session duration in seconds (default: 3600, min: 60, max: 86400)

Example Request

curl -X POST "https://api.audiodelivery.net/v1/play_session/collection" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"collection_id": "COLLECTION_ID", "variants": ["hq", "lq"], "expires_in": 3600}'

Response

{
  "ok": true,
  "play_session_id": "uuid",
  "play_session": {
    "id": "uuid",
    "creator_id": "uuid | null",
    "variants": ["string"],
    "is_downloadable": false,
    "expires_at": "string"
  },
  "tracks": [
    { "id": "uuid", "index": "string", "duration": 0, "order": 0, "player_title": "string | null", "player_subtitle": "string | null", "player_color": "string | null", "player_color_light": "string | null", "player_color_dark": "string | null" }
  ],
  "first_track": {
    "track_id": "uuid",
    "cover_image": {
      "icon": { "type": "icon", "width": 80, "height": 80, "url": "string" },
      "small": { "type": "small", "width": 200, "height": 200, "url": "string" },
      "regular": { "type": "regular", "width": 400, "height": 400, "url": "string" }
    },
    "track": {
      "id": "uuid",
      "index": "string",
      "duration": 0,
      "player_title": "string | null",
      "player_subtitle": "string | null",
      "player_color": "string | null",
      "player_color_light": "string | null",
      "player_color_dark": "string | null",
      "theme": [],
      "file_name": "string",
      "info": {},
      "organization_index": "string | null",
      "order": 0,
      "metadata": {},
      "is_dark": false
    },
    "levels": { "levels": [ 0, 0.5, 1 ] },
    "variants": [
      { "path": "string", "url": "string", "variant": { "index": "string" } }
    ]
  },
  "expires_at": "string"
}

The first_track field includes the first track's full playback data (signed streaming URLs, waveform levels, cover image, and variants) so your player can render immediately without a second API call. Use GET /v1/play/:session_id/:track_id to fetch additional tracks on demand.

GET /v1/play_session/:play_session_id

Retrieves details about a play session

Parameters

Name Type Required Description
play_session_id uuid Required The ID of the play session (path parameter)

Example Request

curl -X GET "https://api.audiodelivery.net/v1/play_session/SESSION_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{
  "ok": true,
  "play_session_id": "uuid",
  "play_session": {
    "id": "uuid",
    "creator_id": "uuid | null",
    "variants": ["string"],
    "is_downloadable": false,
    "expires_at": "string"
  },
  "tracks": [
    { "id": "uuid", "index": "string", "duration": 0, "order": 0, "player_title": "string | null", "player_subtitle": "string | null", "player_color": "string | null", "player_color_light": "string | null", "player_color_dark": "string | null" }
  ],
  "first_track": {
    "track_id": "uuid",
    "cover_image": { "icon": {}, "small": {}, "regular": {} },
    "track": { "id": "uuid", "index": "string", "duration": 0, "player_title": "string | null", "player_subtitle": "string | null", "player_color": "string | null", "player_color_light": "string | null", "player_color_dark": "string | null", "theme": [], "file_name": "string", "info": {}, "organization_index": "string | null", "order": 0, "metadata": {}, "is_dark": false },
    "levels": { "levels": [] },
    "variants": [ { "path": "string", "url": "string", "variant": { "index": "string" } } ]
  }
}

The first_track field includes the first track's full playback data so your player can render immediately without a second API call.

GET /v1/play/:play_session_id/:play_track_id

Retrieves details about a specific track within a play session. No authentication required - the session ID acts as a bearer token.

Parameters

Name Type Required Description
play_session_id uuid Required The ID of the play session (path parameter)
play_track_id uuid Required The ID of the track within the session (path parameter)

Response

{
  "ok": true,
  "play_session_id": "uuid",
  "track_id": "uuid",
  "play_session": {
    "id": "uuid",
    "variants": ["string"],
    "is_downloadable": false,
    "expires_at": "string"
  },
  "cover_image": {
    "icon": { "type": "icon", "width": 80, "height": 80, "url": "string" },
    "small": { "type": "small", "width": 200, "height": 200, "url": "string" },
    "regular": { "type": "regular", "width": 400, "height": 400, "url": "string" }
  },
  "track": {
    "id": "uuid",
    "index": "string",
    "duration": 0,
    "player_title": "string | null",
    "player_subtitle": "string | null",
    "player_color": "string | null",
    "player_color_light": "string | null",
    "player_color_dark": "string | null",
    "theme": [],
    "file_name": "string",
    "info": {},
    "organization_index": "string | null",
    "order": 0,
    "metadata": {},
    "is_dark": false
  },
  "levels": { "levels": [ 0, 0.5, 1 ] },
  "variants": [
    { "path": "string", "url": "string", "variant": { "index": "string" } }
  ]
}
GET /v1/play/:play_session_id/:play_track_id/:variant_index/download

Downloads a specific variant of a track. Only available when the session's stored is_downloadable is true (i.e. the API key allows downloads and the session requested them); otherwise returns 403. No authentication required.

Parameters

Name Type Required Description
play_session_id uuid Required The ID of the play session (path parameter)
play_track_id uuid Required The ID of the track within the session (path parameter)
variant_index string Required The index/identifier of the variant to download (path parameter)

Response

Returns a short-lived (30s) signed download URL. The response body is JSON (not the audio file); navigate to download.url to fetch the file. The URL is served with Content-Disposition: attachment so the browser saves the file instead of playing it inline. If the session is not downloadable, the endpoint returns 403 with an error message.

{
  "ok": true,
  "play_session_id": "uuid",
  "track_id": "uuid",
  "download": {
    "variant": "string",
    "url": "string"
  }
}