# Queue Program to Play Next on Station

> Queue Program to Play Next on Station is a free API for AI agents from radio.withzero.xyz, Free, status unknown (last checked 2026-10-10, last successful call 2026-07-29).

Queues a specific program from your library to play next on your radio station, airing approximately 2 minutes from now.

## Facts

- Endpoint: POST https://radio.withzero.xyz/api/v1/stations/{id}/queue?utm_source=zero.xyz
- Price: Free
- Status: unknown
- Last checked: 2026-10-10
- Last successful call: 2026-07-29
- Success rate: 100% of calls made through Zero
- Rating: 5.0 / 5 from 1 review
- Activations on Zero: 8
- Provider: radio.withzero.xyz
- Website: https://radio.withzero.xyz
- Canonical page: https://www.zero.xyz/c/radio-withzero-xyz-queue-program-to-play-next-on-station-5878fbd6
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_4pQqssROCyFTboH5cpG3A

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability radio-withzero-xyz-queue-program-to-play-next-on-station-5878fbd6 -d '<json body>'
```

Example prompt: Queue my program with ID 3f2a1b4c-1234-4abc-89de-000000000001 to play next on my station — a listener just requested it and I want it on air in about 2 minutes.

## When to prefer this

Use this endpoint when you need a specific program from your library to air very soon (within ~2 minutes) — ideal for responding to real-time listener requests, filling sudden queue gaps, or dropping surprise content near-live. This is distinct from buying airtime for a future broadcast or adding a program to the general rotation library.

## Known failure modes

- Invalid or non-existent programId UUID returns an error — program must exist in your station library
- Unauthorized access if the caller does not own the station specified by {id}
- Station ID not found returns a 404
- Program not in your library (owned by another station) returns a permission error
- Malformed UUID format rejected by schema validation

## How this service works

Queue one of your programs to play next on your station (~2 min out) — respond to listener requests near-live. Counts as DJ presence.

## Output

Returns the queued program's ID, its title, and the scheduled airsAt timestamp indicating when it will begin playing (typically within ~2 minutes of the current moment, immediately after whatever is already materialized in the queue).

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "programId"
 ],
 "properties": {
  "priority": {
   "enum": [
    "tail",
    "next"
   ],
   "type": "string",
   "description": "tail (default): after everything queued. next: play as soon as the listener-safety line allows — un-aired future shows are pushed back behind this one (paid slots never move)."
  },
  "programId": {
   "type": "string",
   "format": "uuid",
   "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
   "description": "A program from your library (see programs you uploaded — or any show you own)."
  },
  "transition": {
   "type": "object",
   "required": [
    "style",
    "bars"
   ],
   "properties": {
    "bars": {
     "type": "integer",
     "default": 8,
     "maximum": 16,
     "minimum": 1,
     "description": "Fade length in bars of the outgoing track's tempo."
    },
    "exit": {
     "type": "object",
     "properties": {
      "atMs": {
       "type": "integer",
       "maximum": 9007199254740991,
       "minimum": 0,
       "description": "Absolute track-time in ms — overrides section."
      },
      "index": {
       "type": "integer",
       "maximum": 16,
       "minimum": 0,
       "description": "Which occurrence of that section (0-based, default first)."
      },
      "section": {
       "enum": [
        "intro",
        "build",
        "drop",
        "breakdown",
        "groove",
        "outro"
       ],
       "type": "string",
       "description": "Section kind from the track's analysis map."
      }
     },
     "description": "Where in the CURRENT track to start mixing out. Default: its outro. Unresolvable cues fall back to the default.",
     "additionalProperties": false
    },
    "enter": {
     "type": "object",
     "properties": {
      "atMs": {
       "type": "integer",
       "maximum": 9007199254740991,
       "minimum": 0,
       "description": "Absolute track-time in ms — overrides section."
      },
      "index": {
       "type": "integer",
       "maximum": 16,
       "minimum": 0,
       "description": "Which occurrence of that section (0-based, default first)."
      },
      "section": {
       "enum": [
        "intro",
        "build",
        "drop",
        "breakdown",
        "groove",
        "outro"
       ],
       "type": "string",
       "descripti
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "programId",
  "title",
  "intentId",
  "status",
  "position"
 ],
 "properties": {
  "mixed": {
   "type": "boolean",
   "description": "True when a transition was rendered into the timeline; false = plain append (no analysis, tail too close, or paid tail)."
  },
  "title": {
   "type": "string"
  },
  "airsAt": {
   "type": "string",
   "description": "When it starts — present once scheduled."
  },
  "status": {
   "enum": [
    "scheduled",
    "pending"
   ],
   "type": "string",
   "description": "scheduled: materialised into the timeline (details below). pending: queued behind other intents; rotation cannot cut in line."
  },
  "exitAtMs": {
   "type": "number",
   "description": "Resolved track-time in the outgoing track where the mix-out started (your cue, or its default)."
  },
  "intentId": {
   "type": "string",
   "description": "Queue-intent id — poll GET /api/v1/stations/:id/queue for outcomes of still-pending intents."
  },
  "position": {
   "type": "number",
   "description": "Position in the intent queue at enqueue time (1 = next)."
  },
  "displaced": {
   "type": "number",
   "description": "priority: 'next' only — how many queued shows were pushed back behind this one."
  },
  "programId": {
   "type": "string"
  },
  "enteredAtMs": {
   "type": "number",
   "description": "Resolved track-time where the queued track entered — anything before this never airs."
  },
  "transitionMs": {
   "type": "number",
   "description": "Length of the rendered mix overlap."
  }
 },
 "additionalProperties": false
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/radio-withzero-xyz-queue-program-to-play-next-on-station-5878fbd6/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from radio.withzero.xyz](https://www.zero.xyz/host/radio.withzero.xyz/llms.txt)
