# Media Caption > Credit-billed REST API for retrieving public YouTube transcripts, with single and bulk transcript jobs, AI transcription of uploaded or URL-referenced media, job polling, and signed job-level webhooks. Base URL https://api.mediacaption.io/v1; authenticate with `Authorization: Bearer mc_live_xxx` or `X-API-Key`. Generated by API Evangelist on 2026-09-03 from the provider's public docs and OpenAPI contract; the provider serves no /llms.txt of its own. ## Docs - [API overview](https://www.mediacaption.io/docs): Media Caption API v1 documentation home - [Quickstart](https://www.mediacaption.io/docs/quickstart): create a key, first transcript request, production checklist - [Authentication](https://www.mediacaption.io/docs/authentication): bearer mc_live_ keys or X-API-Key; bearer takes precedence - [OpenAPI 3.1 contract](https://www.mediacaption.io/docs/openapi/mediacaption.v1.yaml): 13 operations plus 3 declared webhooks - [Webhooks](https://www.mediacaption.io/docs/webhooks): job.completed, job.completed_with_errors, job.failed; HMAC-SHA256 signatures - [Billing](https://www.mediacaption.io/docs/billing): credits are frozen at acceptance, charged on success, released on failure - [Data retention](https://www.mediacaption.io/docs/data-retention): transcript bodies expire after 3 days - [Errors](https://www.mediacaption.io/docs/errors): stable machine-readable codes in an { error: { code, message } } envelope - [Rate limits](https://www.mediacaption.io/docs/rate-limits): 60 rpm general, 10 rpm single transcript, 5 concurrent bulk jobs - [Changelog](https://www.mediacaption.io/docs/changelog): dated documentation and contract changes ## API operations - GET /user — account profile - GET /balance — credit balance - POST /transcripts — synchronous public YouTube transcript (1 credit on success) - POST /transcripts/bulk — async bulk job, up to 100 items - POST /transcriptions — AI transcription of a media URL - GET /transcriptions/{id} — retrieve a retained transcription before expiresAt - GET /jobs/{id} — poll a job; cursor pagination over items - POST /uploads, POST /uploads/{id}/parts, POST /uploads/{id}/complete, POST /uploads/{id}/resume, GET /uploads/{id}, DELETE /uploads/{id} — multipart local-file upload and AI transcription flow (3 GB limit; cancel before processing refunds reserved credits) ## Product - [Pricing](https://www.mediacaption.io/pricing): free tier with API access and 10 starter credits; Premium subscription (100 credits/month); one-time credit packs from $5/50 credits - [FAQ](https://www.mediacaption.io/faq) - [Terms of Service](https://www.mediacaption.io/terms) - [Privacy Policy](https://www.mediacaption.io/privacy) ## Cautions for agents - No idempotency keys: do not auto-retry timed-out POSTs — duplicates spend additional credits. Retry 429s after Retry-After. - Store transcript content you need longer than 3 days; expired content returns transcription_expired. - Only job-level webhook events exist in v1; poll GET /jobs/{id} for item detail.