Just want working code?
Stop reading and copy the Transcripts coding agent reference into your agent. It is self-contained, including the polling and correction contracts.
Key capabilities
Pricing
Transcript access is priced in rows and 15-minute blocks, from the same row pool as the rest of the API:- 75 rows per 15-minute block of video, rounded up, minimum one block. A 62-minute podcast is 5 blocks = 375 rows; a 9-minute clip is 75 rows.
- Same price whether a premium transcript already exists or Arcmira generates it fresh.
- Unlocks are permanent and per-account. Re-reads are free. Unlock before the premium transcript exists and the later generation costs nothing extra.
- If a transcription job fails permanently, rows are refunded automatically and the unlock is revoked (when that submission charged the rows; the status reads
refunded). - Corrections are always free (0 rows).
meta.quote ({ "quarters": 5, "rows": 375 }) whenever the video duration is known.
Quickstart
1
Read (and see where you stand)
access field; the table below tells you the next action for each state.2
Unlock or generate
A premium transcript exists (Rows are debited up front and the permanent unlock is granted at submit time.
locked): purchase in the same request with ?unlock=true; the quoted rows are debited and the full transcript comes back in one round trip. No premium transcript yet (premium_pending / not_transcribed): submit it.3
Poll politely
While in flight,
GET /v1/transcriptions/{id} carries a Retry-After header plus etaSeconds and nextPollSeconds. Sleep on the header and re-poll; terminal statuses drop it. On complete, the transcript GET just works: you were unlocked at submission.Choosing well
Theaccess state machine. Every read tells you exactly where you stand; each state has one right next action:
Buy vs generate.
?unlock=true purchases access to an existing premium transcript. POST /v1/transcriptions purchases generation (and short-circuits to complete if a premium transcript already exists, so it is always safe to call; you are never double-charged, and quote.rows in the response shows what was actually debited).
Cost control. Duration drives price. Quote first (meta.quote on any read costs nothing), check /v1/me → usage.rows_remaining, then unlock. 402 quota_exceeded responses include the quote.
Response shape
segments: transcript lines withstart/endin seconds and a diarizationspeakerid.speakers: the diarization map; entries gain anentityonce identified as a person.annotations: entity mentions as character spans inside segment text.meta.revision: an opaque id for the served transcript plus its approved-correction state. Save it: corrections echo it back, and a changed revision means the transcript changed underneath you.- When unlocked, your own pending corrections ride back too (
edits[],speakerIdentifications[],speakerEdits[],entityTags[]).
Corrections
Transcripts are community-correctable, free, and optimistic for you, pending review for everyone else: your pending corrections appear on your own transcript reads immediately; once a reviewer approves them they apply for all callers and bumpmeta.revision. Five kinds mirror the arcmira.com /watch editor; the sixth, segment_rewrite, is the API-first structural primitive.
line_edit, speaker_reassign, entity_tag, segment_rewrite) prove they were made against the transcript you actually saw: echo meta.revision, and send anchor.contentHash, a djb2 hash (base-36) of the covered segment text. A 409 means the transcript changed underneath you (re-anchor); a 412 with expectedSeq means your sequence counter is behind (rebase and resend). Full payload schemas for all six kinds, the hash function, and the queue-client error contract live in the coding agent reference.
Withdraw anything you regret while it is still pending; each submission returns the row id for the matching DELETE.
Structural rewrites:
segment_rewrite replaces any run of segments with new ones, merges, splits, or deletes them outright, and repairs the timestamps automatically. Full payload in the coding agent reference.Community Review
Corrections are Community Review on the transcript surface: same pending-review model, same 0-row pricing, same attribution and reputation. For anything that is not a transcript-content fix (a wrong video, a stale channel, a search miss that led you here), use the matching type onPOST /v1/feedback.
Next
- Transcripts for coding agents: full endpoint tables, all six correction payloads, the outbox/queue contract.
- Search: the entity graph these annotations link into.
- Community Review: the cross-surface correction catalog.
- API reference: interactive playground.