Skip to main content
GET
/
v1
/
transcripts
/
{video_id}
Get a video transcript
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.arcmira.com/v1/transcripts/{video_id}', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
import requests

url = "https://api.arcmira.com/v1/transcripts/{video_id}"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
curl --request GET \
--url https://api.arcmira.com/v1/transcripts/{video_id} \
--header 'Authorization: Bearer <token>'
{
  "video": {
    "videoId": "<string>",
    "title": "<string>",
    "channelName": "<string>",
    "channelId": "<string>",
    "publishedAt": "<string>",
    "durationSeconds": 123,
    "viewCount": 123
  },
  "segments": [
    {
      "index": 123,
      "start": 123,
      "end": 123,
      "text": "<string>",
      "speaker": 123
    }
  ],
  "speakers": [
    {
      "id": 123,
      "label": "<string>",
      "role": "<string>",
      "confidence": "<string>",
      "voiceRole": "<string>",
      "entity": {
        "id": 123,
        "name": "<string>",
        "slug": "<string>"
      }
    }
  ],
  "annotations": [
    {
      "segmentIndex": 123,
      "charStart": 123,
      "charEnd": 123,
      "entityId": 123,
      "entityType": "<string>",
      "name": "<string>",
      "slug": "<string>"
    }
  ],
  "meta": {
    "diarized": true,
    "locked": true,
    "quote": {
      "quarters": 123,
      "rows": 123
    },
    "revision": "<string>",
    "overLimit": true,
    "devPreview": true,
    "usageLimit": {
      "message": "<string>",
      "ctaLabel": "<string>",
      "ctaHref": "<string>"
    }
  },
  "detected": {
    "people": 123,
    "organizations": 123,
    "products": 123,
    "topics": 123
  },
  "edits": [
    {
      "id": 123,
      "segmentIndex": 123,
      "originalText": "<string>",
      "correctedText": "<string>",
      "status": "<string>",
      "mine": true
    }
  ],
  "speakerIdentifications": [
    {
      "id": 123,
      "speakerId": 123,
      "entityId": 123,
      "entityName": "<string>",
      "status": "<string>"
    }
  ],
  "speakerEdits": [
    {
      "id": 123,
      "seq": 123,
      "editType": "<string>",
      "selection": {
        "startIndex": 123,
        "startChar": 123,
        "endIndex": 123,
        "endChar": 123
      },
      "target": {
        "kind": "<string>",
        "speakerId": 123,
        "label": "<string>",
        "role": "<string>"
      },
      "status": "<string>"
    }
  ],
  "entityTags": [
    {
      "id": 123,
      "seq": 123,
      "segmentIndex": 123,
      "charStart": 123,
      "charEnd": 123,
      "selectedText": "<string>",
      "entity": {
        "id": 123,
        "name": "<string>",
        "slug": "<string>",
        "type": "<string>"
      },
      "status": "<string>"
    }
  ],
  "segmentRewrites": [
    {
      "id": 123,
      "seq": 123,
      "startIndex": 123,
      "endIndex": 123,
      "replacements": [
        {
          "text": "<string>",
          "speaker": 123,
          "start": 123,
          "end": 123
        }
      ],
      "status": "<string>"
    }
  ]
}
{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}
{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}
{
"error": "<string>",
"quote": {
"quarters": 123,
"rows": 123
}
}
{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}
{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}
{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}
{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}
{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

unlock
enum<string>

Explicit purchase action: debits 75 rows per 15-minute block and grants the permanent per-video unlock in the same request. Without it, locked viewers receive only the teaser segments.

Available options:
true

Response

Success

video
object | null
required

Video metadata. Null only when the video is not in the index and no public metadata could be fetched.

access
enum<string>
required

Access state. Values: unlocked (full premium transcript in this payload), locked (a premium transcript exists; you receive only ~5 teaser segments — pass unlock=true to debit the quoted rows and receive the full transcript), premium_pending (a preliminary analysis exists but the premium transcript has not been generated; payload carries only detected entity-type counts plus the quote — submit POST /v1/transcriptions to generate), not_transcribed (video is not in the index; submit POST /v1/transcriptions), unauthenticated (no authenticated caller; teaser only).

Available options:
unlocked,
locked,
premium_pending,
not_transcribed,
unauthenticated
segments
object[]
required

Transcript segments. Full list when unlocked; first ~5 teaser segments when locked/unauthenticated; empty for premium_pending and not_transcribed.

speakers
object[]
required

Diarized speakers. Filtered to teaser segments when locked; empty when no diarized transcript exists.

annotations
object[]
required

Entity annotations as character spans inside segment text. Restricted to teaser segments when locked.

meta
object
required
detected
object

Distinct-entity counts by type from the preliminary analysis. Only present when access is premium_pending (deliberately minimal: no names, ids, or timestamps).

edits
object[]

Your own pending line edits. Only present when access is unlocked.

speakerIdentifications
object[]

Your own pending speaker identifications. Only present when access is unlocked.

speakerEdits
object[]

Your own pending speaker reassigns/splits for the current revision. Only present when access is unlocked.

entityTags
object[]

Your own pending entity tags. Only present when access is unlocked.

segmentRewrites
object[]

Your own pending segment rewrites for the current revision. Re-apply them (with pending speaker edits, in seq order) to rebuild your projection. Only present when access is unlocked.