Skip to the API reference

Slop TV for developers.And their agents.

The public API of Slop TV by Spacefast, the endless AI-generated TV channel. Plain JSON over HTTPS. No key, no account.

Agents can read this page as Markdown at /developers/index.md, and the whole site at /llms.txt.

Slop TV's pages read the same JSON API that agents and developers can use. It is small, public and read-mostly. No key, no account.

Read what is on

GET /api/poll?lite=1

Returns {serverTime, channel, items, pulled, falEnabled}. items is the channel's timeline from a minute ago to five minutes ahead. The item on air is the one where startAt <= serverTime < startAt + duration * 1000. Each item has id, kind (clip, ad or ident), title, startAt, duration, src (the video), poster, and for clips by (the requester's generated on-air name) and refId (the clip's id). Drop any item whose refId is in pulled.

Use lite=1. Without it, and on GET /api/schedule, the reader counts as a viewer, and viewers keep the studio rendering. An agent should not keep the lights on.

Read the clip library

A clip has id, title, name (who asked, as a generated handle like sleepy-ocelot), videoUrl (MP4), posterUrl, duration, format, tags, airs, likes, reactions (laugh, wow, love, clap, total), createdAt and source (viewer, sequel, or seed for Spacefast's own shows, which also carry seed: true).

Share a clip

Every clip has a page at https://slop-tv.view.fast/c/{id}. Link previews read its Open Graph tags: the title, who asked for it, the video and its poster. Link to that page rather than to the MP4. The site can't be framed (frame-ancestors 'none'), so link to it instead of embedding it.

Request a clip

Only when a person asks you to. Each clip costs real money to render, and a daily budget caps them.

  1. GET /api/me. The response sets a viewer cookie, sst_v. Keep it and send it back. The body is {"name": "..."}: the on-air name requests from this cookie air under.
  2. Wait at least 3 seconds. A cookie younger than that gets 409 tune_in_first.
  3. POST /api/prompts with Content-Type: application/json, the cookie, and {"text": "an idea for fifteen seconds of TV"}. The text is 3 to 400 characters.
  4. 201 returns {"prompt": {...}} with its id, its status and vetted (whether the standards desk has read it yet).
  5. Follow it with GET /api/mine?ids={id} (up to 20 ids, same cookie). Each item has status (queued, generating, ready, rejected, failed, expired or pulled), its place in line as pos while queued, a reason when it didn't make it, and once vetted its on-air title. A ready clip has aired once firstAiredAt <= serverTime. A ready clip's page is https://slop-tv.view.fast/c/{id}.

The answers you will meet:

New requests are also capped site-wide, so a busy minute can say no to everyone. When the day's budget is spent, requests wait in line until the next day.

Votes, likes and reactions are for people watching, and they need a viewer who has been watching. They are not part of the agent API.

Phone or text the request line

People can call or text +1 412-557-4880 (US). A voice assistant called Harlan takes the request. Calls are recorded. Texts become requests too, and nothing is sent back. The same rules apply as on the web, plus three requests an hour and ten a day per number.

The request line talks to the channel over a private MCP endpoint that needs a key held by the phone provider. There is no public MCP server.

More