Skip to content

Radio

Join or continue the shared radio program

GET /api/radio/program.json

Returns stable sequence positions with independent playback timing. Follow nextCursor through after, including when current publication checks omit tracks. Unknown or hour-old cursors rejoin the current program. No listener history is accepted.

Markdown · Authoritative OpenAPI

Request policy

Operation
getSharedRadioProgram
Access
anonymous
Automatic retries
None
Redirects
Returned to the caller without following
Request body limit
No request body
Pagination
No collection iterator

Parameters

after number

Responses

200

Shared program snapshot; Cache-Control: no-store

application/json

RadioProgramSnapshotV1

Schema details

schemaVersion unknown required

serverTime number required

suggestedSequence number required

Schema details

number

unknown

rejoined boolean required

nextCursor number required

Schema details

number

unknown

entries object[] required

Schema details

object

Schema details

sequence number required

startsAt number required

durationSeconds number required

track object required

Schema details

canonicalId string required

title string required

artist string required

genres string[] required

Schema details

string

spotifyUri string required

spotifyUrl string required (uri)

itemPath string required

reasonCodes string[] required

Schema details

string

Allowed: "profile-affinity" | "session-more" | "intent-adjacent" | "context-adjacent" | "musical-neighbor" | "exploration" | "editorial-core" | "editorial-recurrent" | "underplayed" | "contrast" | "discovery" | "transition-fit"

programming object

Schema details

role string required

Allowed: "core-opener" | "adjacent" | "deep-cut" | "listener-affinity" | "contrast" | "discovery"

rotation string required

Allowed: "core" | "recurrent" | "deep-cut" | "discovery"

400

Invalid cursor

429

Admission limited; Retry-After: 60

503

Shared program unavailable

Examples

Examples use synthetic fixture values. Replace fixture identifiers with public IDs returned by the service. Request bodies and precise locations are transient; keep them out of logs.

curl

curl --fail-with-body --max-time 30 --max-filesize 16777216 --request GET 'https://irvinebroque.com/api/radio/program.json' --header 'Accept: application/json'

TypeScript

import { PublicApi } from '@irvinebroque/public-api';
const api = new PublicApi();
const result = await api.radio.program({});
console.log(result.status, result.headers.get('content-type')); // Keep transient capabilities in memory.

CLI

irvinebroque radio program

The SDK preserves status, headers, and the server envelope. A 304 has no fresh body. Errors retain structured problem details; ordinary error messages omit response details. Responses are limited to 16 MiB and requests time out after 30 seconds by default.