---
title: "Transcribe media already in cloud storage"
method: POST
path: "/transcriptions"
tags: ["Transcriptions"]
---

# Transcribe media already in cloud storage

`POST /transcriptions`

Inspects the HTTPS source without persisting the media, verifies its size and
duration, charges the exact transcription credits, and then passes the URL
directly to ElevenLabs Scribe. The source must be no larger than 3 GB
(3,000,000,000 bytes) and remain accessible while ElevenLabs fetches it.

## Request body

- CloudTranscriptionRequest
  - `sourceUrl` string, uri, required — Public or presigned HTTPS URL for an existing cloud media object.
  - `filename` string — Optional display filename; defaults to the URL path basename.

## Response `202`

Transcription queued

- CloudTranscriptionAcceptedResponse
  - `transcriptionId` string, required
  - `status` 'queued', required
  - `sourceUrl` string, uri, required — Query-free source URL; signed credentials are never returned.
  - `durationSec` integer, required
  - `sizeBytes` integer, required
  - `requiredCredits` integer, required
  - `statusUrl` string, required

## Other responses

- `400` — Invalid request
- `401` — Missing or invalid API key
- `402` — Not enough credits to start processing
- `413` — Remote media exceeds the 3 GB limit
- `429` — Rate limit exceeded
- `500` — Internal server error

---

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