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.
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 programThe 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.