Docs API reference
Markdown Get an API key

API referenceChat and agents

Replay Records

Look back at how a run came together: replay stores prompts, responses, and tool inputs and results. Durable chat runs write a record automatically under their runId; client-side agents can upload their own. Only the authenticated account can read its records through these endpoints.

Review before sharing. Credential filtering is best-effort, not anonymization. redacted: true means the filter ran, not that every sensitive detail was removed. Keep secrets out of prompts and tool data, and review any record you export or share.

#Store a record

POST /v1/replay/records Auth required

Stores a RunRecord and returns 201. The owner is derived from the authenticated wallet, so clients cannot write into someone else's namespace. Posting the same run_id again replaces the stored record. Malformed JSON or a missing required field returns 400.

#Body

NameTypeInDescription
schemaVersionrequiredintegerbodyRunRecord schema version. Currently 1 or 2.
run_idrequiredstringbodyCaller-chosen run id (max 128 chars). Uniqueness is per owner.
user_requestrequiredstringbodyThe user prompt or request that triggered the run.
roundsrequiredarraybodyRecorded model messages, tool calls, and tool results.
Payload cap. JSON is capped at 1,000,000 UTF-8 bytes (1 MB), not characters. Larger payloads return 413.

#Response

{
  "runId": "run_…",
  "schemaVersion": 2,
  "redacted": true,
  "createTime": 1731950400,
  "updateTime": 1731950400
}

#List records

GET /v1/replay/records Auth required

Lists recent RunRecords for the caller, newest first. Summaries include the first 1,024 Unicode characters of each prompt and final response. Fetch an individual record for the full text and tool data.

#Query parameters

NameTypeInDescription
limitintegerqueryDefault 50, clamped to 1–200. A non-numeric value returns 400.
cursorstringqueryOmit for the first page. Pass the previous response's nextCursor unchanged to fetch the next page; a modified cursor returns 400. Stop when it is null.

#Response

{
  "records": [
    {
      "runId": "run_…",
      "schemaVersion": 2,
      "createTime": 1731950400,
      "updateTime": 1731950400,
      "userRequest": "Storyboard a 5-shot neon teaser.",
      "finalResponse": "Here's your storyboard.",
      "modelId": "qwen3.6-35b-a3b-gguf-iq4xs",
      "rounds": 3
    }
  ],
  "nextCursor": null
}

#Read a record

GET /v1/replay/records/:id Auth required

Returns a full RunRecord, suitable for the replay viewer. Unknown ids return 404. The credential filter is applied again when records are read.

#Response

{
  "record": { "schemaVersion": 2, "run_id": "run_…", "rounds": [ "…" ] },
  "createTime": 1731950400
}