> ## Documentation Index
> Fetch the complete documentation index at: https://help.sendspark.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get the transcript status of a campaign video

> Reports whether a campaign video has a transcript and whether it is ready to read. It never starts a transcription, so it is safe to poll, and a campaign that never had one returns `none` rather than an error.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/workspaces/{workspaceId}/campaigns/{campaignId}/transcript/status
openapi: 3.0.0
info:
  title: Sendspark API
  version: 1.2.0
  description: >-
    Public Sendspark API. DRAFT scaffold generated from the internal API v2 spec
    — endpoint selection and authentication are pending engineering review
    before publishing.
servers:
  - url: https://api-gw.sendspark.com
    description: Production
security:
  - apiKey: []
    apiSecret: []
tags: []
paths:
  /v1/workspaces/{workspaceId}/campaigns/{campaignId}/transcript/status:
    get:
      tags:
        - Transcription
      summary: Get the transcript status of a campaign video
      description: >-
        Reports whether a campaign video has a transcript and whether it is
        ready to read. It never starts a transcription, so it is safe to poll,
        and a campaign that never had one returns `none` rather than an error.
      operationId: getCampaignTranscriptStatus
      parameters:
        - name: workspaceId
          in: path
          required: true
          description: >-
            The workspace the campaign belongs to. Retrieve it from `GET
            /v1/workspaces/identifier`.
          schema:
            type: string
            example: 7voa5y6qjj04kkbfqbgjd7kdvxlf4gqo
        - name: campaignId
          in: path
          required: true
          description: The campaign whose video transcript you want.
          schema:
            type: string
            example: 2qnbb3ki589oioyimq0o7t1dxkb402ux
      responses:
        '200':
          description: The current transcript status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignTranscriptStatusResponseSchema'
        '400':
          description: >-
            Bad Request — `workspaceId` or `campaignId` is not a valid Sendspark
            ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
        '401':
          description: Unauthorized — the API key or secret is missing, invalid or revoked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidAuthentication'
        '404':
          description: >-
            Not Found — the campaign does not exist, or it belongs to another
            workspace. The two cases are deliberately indistinguishable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceNotFoundOrInvalidAccess'
        '503':
          description: Service Unavailable — the transcript status could not be read.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailable'
components:
  schemas:
    CampaignTranscriptStatusResponseSchema:
      type: object
      properties:
        campaignId:
          type: string
          example: 2qnbb3ki589oioyimq0o7t1dxkb402ux
        status:
          type: string
          enum:
            - none
            - processing
            - ready
            - failed
          description: >-
            `none` — no transcript was ever requested. `processing` — one is
            being produced. `ready` — it can be read. `failed` — generation did
            not succeed.
          example: ready
        language:
          type: string
          nullable: true
          example: en
        source:
          type: string
          enum:
            - master
            - prospect
          nullable: true
          example: master
        generatedAt:
          type: string
          format: date-time
          nullable: true
          example: '2026-09-16T10:00:00.000Z'
    BadRequest:
      type: object
      properties:
        statusCode:
          type: number
          example: 400
        code:
          type: string
          example: S400-AHVE
        error:
          type: string
          example: Bad Request
        message:
          type: string
          example: Invalid request payload input
    InvalidAuthentication:
      type: object
      properties:
        statusCode:
          type: number
          example: 401
        error:
          type: string
          example: Unauthorized
        message:
          type: string
          example: Missing authentication
    ResourceNotFoundOrInvalidAccess:
      type: object
      properties:
        statusCode:
          type: number
          example: 404
        error:
          type: string
          example: Not Found
        message:
          type: string
          example: Resource not found or invalid access
    ServiceUnavailable:
      type: object
      properties:
        statusCode:
          type: number
          example: 503
        error:
          type: string
          example: Service Unavailable
        message:
          type: string
          example: Service Unavailable
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
    apiSecret:
      type: apiKey
      in: header
      name: x-api-secret

````