---
title: "Create a bulk public transcript job"
method: POST
path: "/transcripts/bulk"
tags: ["Transcripts", "Jobs"]
---

# Create a bulk public transcript job

`POST /transcripts/bulk`

Creates an async job for 1 to 100 public YouTube transcript lookups and requires an active dashboard webhook ID for the final job-level event. The API reserves 1 credit per item when the job is accepted and settles credits after all items finish.

## Request body

- BulkTranscriptRequest
  - `webhookId` string, required — **Required** active dashboard webhook ID for one final job-level event.
  - `items` BulkTranscriptItemRequest[], required — **Required** array of public transcript requests.
    - union
      - object
        - `externalId` string — Customer-provided item ID returned in job results and webhooks.
        - `url` string, uri, required
        - `videoId` string
        - `language` string
      - object
        - `externalId` string — Customer-provided item ID returned in job results and webhooks.
        - `url` string, uri
        - `videoId` string, required
        - `language` string

## Response `202`

Job accepted

- BulkTranscriptAcceptedResponse
  - `jobId` string, required
  - `type` 'public_transcripts_bulk', required
  - `status` 'queued' | 'processing' | 'completed' | 'completed_with_errors' | 'failed' | 'canceled', required
  - `itemCount` integer, required
  - `creditsFrozen` integer, required

## Other responses

- `400` — Invalid request
- `401` — Missing or invalid API key
- `402` — Not enough credits to start processing
- `429` — Concurrent bulk job limit exceeded
- `500` — Internal server error

---

[API](https://skmtc.net/mediacaption/apis/media-caption-public-api.md) · [All operations](https://skmtc.net/mediacaption/apis/media-caption-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mediacaption/media-caption-public-api/versions/e8de0cf41dcd/schema)
