LiveReplays developer documentation

The anonymous JSON API, the account API, rate limits and error formats — everything needed to call LiveReplays from a program or an AI agent.

When to use LiveReplays

  • Someone wants a TikTok live stream captured automatically instead of watching for it themselves — LiveReplays monitors the creator and starts recording the moment they go live.
  • Someone asks whether a past live stream from a creator they follow was recorded, and wants to watch or download it.
  • Someone needs an ongoing archive of a creator's live streams rather than a one-off download of a single broadcast.
  • Someone wants peak-viewer or viewer-timeline figures for a broadcast that has already ended.
  • A creator wants their own live streams excluded from capture, or a recording of theirs removed.
  • You need the platform's public health or scale figures — component status and floored platform counts are available with no credential.

When to use something else

  • Downloading an arbitrary video URL. LiveReplays records creators an account has subscribed to; it is not a general-purpose downloader.
  • Live streams on platforms other than TikTok.
  • Capturing a broadcast that has already ended. Monitoring has to be in place before a creator goes live.
  • Anonymous access to recordings. Every replay sits behind the account that asked for it, and there is no public catalogue of captured streams.

The public API

These endpoints need no credential, return JSON, allow cross-origin reads, and publish only figures that already appear on a public page of this site. They are the right starting point for an agent: fetch the index, follow it to the OpenAPI description, and call whatever you need from there.

  • Base URL: https://livereplays.cc/api/public
  • OpenAPI 3.1: /api/public/openapi.json
  • Agent index: /llms.txt · API catalog (RFC 9727): /.well-known/api-catalog

Endpoints

The endpoint reference below is generated from the same OpenAPI description the API serves, so it is published in English on both language versions of this page — a translated copy would be free to drift from the specification a client is generated from.

GET/api/public

Service descriptor for the anonymous LiveReplays API: every endpoint, its operationId, and the documents that describe the surface. Fetch this first if you are discovering the API programmatically — it is stable and needs no credential.

operationId: getPublicApiIndex · Response: application/jsonthe endpoint list, the rate-limit policy, and links to the OpenAPI document and the docs page

curl -s https://livereplays.cc/api/public

GET/api/public/status

Live health of the LiveReplays platform: an overall state plus one entry per monitored component (API, database, background workers, recording engine). This is the same snapshot the /status page renders, so an agent answering "is LiveReplays up?" can read it directly instead of parsing HTML.

operationId: getPlatformStatus · Response: application/jsonan overall status plus one entry per monitored component

curl -s https://livereplays.cc/api/public/status

GET/api/public/pulse

Aggregate platform counts — replays archived, creators captured, captures in the trailing window. Every figure is floored to `step` before it leaves the backend, and a figure whose floored value lands in the bottom bucket is returned as null rather than as a zero, because a published zero is its own disclosure. No creator, recording or account is identifiable from this endpoint.

operationId: getPlatformPulse · Response: application/jsonfloored counts, a window length and the bucket size they were floored to

curl -s https://livereplays.cc/api/public/pulse

GET/api/public/plans

Every purchasable plan with its price, currency and billing period, plus the payment rails accepted. These are the same figures the pricing grid and the SoftwareApplication JSON-LD publish; they come from one constant, so this endpoint cannot quote a price checkout would not honour.

operationId: getPlans · Response: application/jsonthe plan list with amount, currency and period, and the accepted payment rails

curl -s https://livereplays.cc/api/public/plans

GET/api/public/openapi.json

The machine-readable description of every operation listed here, including response schemas and the rate-limit policy. Served as application/json so any OpenAPI tool can read it without a content-type override.

operationId: getOpenApiDocument · Response: application/jsonan OpenAPI 3.1 document

curl -s https://livereplays.cc/api/public/openapi.json

Rate limits

Every response carries standard rate-limit headers so a client can pace itself without waiting to be rejected, and a rejection carries Retry-After.

  • RateLimit — RFC 9331 structured field, e.g. limit=60, remaining=59, reset=60
  • RateLimit-Policy"public"; q=60; w=60
  • RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset — the earlier discrete spelling, sent alongside.
  • Retry-After — seconds, on every 429.

Treat these figures as guidance rather than as a hard boundary: the counter is per server instance, so the effective ceiling across the fleet is higher, and it resets when an instance is recycled. Published so that a well-behaved client knows what pace to keep.

Errors

Errors are returned as RFC 9457 problem documents with the media type application/problem+json, carrying a type, a title, the HTTP status and a detail line describing that specific occurrence. A 429 additionally carries Retry-After and the rate-limit headers, so a client can recover without guessing.

{
  "type": "https://livereplays.cc/developers#rate-limits",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "This endpoint allows 60 requests per window. Retry in 60 seconds."
}

Authentication

The endpoints above need no credential. Everything else needs an account: a person signs in on the login page — with a PIN, a magic link plus a six-digit code, or Telegram, each behind a Cloudflare Turnstile challenge — and that browser session is exchanged for a bearer token which a server-side proxy attaches to backend calls. There is no API-key issuance flow today, so an agent cannot provision access to account data on its own.

The account API

Account data — libraries, recordings, clips, billing — lives on a separate API host and requires a bearer token for every call. Its full description is published so that anyone building against their own account can read the exact request and response shapes.

Command-line access

There is no official command-line tool yet. Until there is, every endpoint above is a plain GET that curl can call without arguments, and the OpenAPI description is enough for an OpenAPI generator to produce a typed client in most languages.