---
title: "Get a campaign video transcript"
method: GET
path: "/v1/workspaces/{workspaceId}/campaigns/{campaignId}/transcript"
tags: ["Transcription"]
---

# Get a campaign video transcript

`GET /v1/workspaces/{workspaceId}/campaigns/{campaignId}/transcript`

## Request

- Base URL: `https://api-gw.sendspark.com`
- URL: `https://api-gw.sendspark.com/v1/workspaces/{workspaceId}/campaigns/{campaignId}/transcript`
- Auth: API key in header `x-api-key` and API key in header `x-api-secret`

Returns the transcript of a campaign video as JSON, or as a subtitle file with `?format=vtt` or `?format=srt`. Reading never starts a transcription, so this endpoint costs nothing and has no side effects. A campaign whose transcript is not ready returns `404`; use the status endpoint to tell why.

## Path parameters

- `workspaceId` string, required
- `campaignId` string, required

## Query parameters

- `format` 'json' | 'vtt' | 'srt'

## Response `200`

The transcript, in the requested representation.

- CampaignTranscriptResponseSchema
  - `campaignId` string
  - `language` string: The language the transcript is stored under.
  - `source` 'master' | 'prospect': Which recording the transcript describes: `master` is the campaign's own video, `prospect` the personalized render made for one recipient.
  - `generatedAt` string, date-time, nullable: When the transcript was produced. Null for a prospect transcript, which is derived from the master.
  - `text` string: The whole transcript as plain text, one line per segment.
  - `segments` CampaignTranscriptSegmentSchema[]
    - `speaker` string, nullable: The speaker the provider attributed the block to.
    - `start` number: Seconds from the start of the video.
    - `end` number: Seconds from the start of the video.
    - `text` string

## Other responses

- `400`: Bad Request — the `format` query parameter is not one of `json`, `vtt` or `srt`, or `workspaceId` or `campaignId` is not a valid Sendspark ID.
- `401`: Unauthorized — the API key or secret is missing, invalid or revoked.
- `404`: Not Found — the campaign has no transcript ready, does not exist, or belongs to another workspace. A campaign in another workspace is deliberately indistinguishable from one that does not exist; call the status endpoint to tell a missing transcript from a missing campaign.
- `503`: Service Unavailable — the transcript exists but could not be read.

## Changes

- **2026-09-17** `d8d365944ae5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sendspark/apis/sendspark-api/changes/v1/workspaces/:workspaceId/campaigns/:campaignId/transcript/get.md)

---

[API](https://skmtc.dev/sendspark/apis/sendspark-api.md) - [All operations](https://skmtc.dev/sendspark/apis/sendspark-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sendspark/apis/sendspark-api/revisions/d8d365944ae5?raw)
