Subtitles and Transcripts API for VTT and SRT

Create subtitle and transcript jobs with VTT or SRT output, language selection, progress polling, and API keys.

First request

GET

Use the shared API host unless the dashboard shows an account-specific hostname.

curl "https://p.savenow.to/ajax/subtitles?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Darj7oStGLkU&api=YOUR_API_KEY&lang=en&format=vtt"

Create the subtitle job

Send a URL-encoded video URL, api=YOUR_API_KEY, and optional lang and format values to /ajax/subtitles.php. format accepts vtt or srt and defaults to vtt. A successful request returns success=true, an id, a title, and a progress_url. RapidAPI supplies the key and receives clean JSON without the optional HTML content card.

Poll progress

Poll the returned progress_url directly without RapidAPI headers or an API key. Progress below 1000 is pending even when success=0. At progress=1000, the job is ready only when success is 1 or true and download_url is non-empty; otherwise stop and surface text or message. Treat non-2xx responses as request errors.

Handle ready and error outcomes

Use download_url only when progress=1000, success is 1 or true, and the URL is non-empty. The file URL ends in .vtt or .srt according to format. At terminal progress without a usable URL, stop and surface text or message. HTTP 400 responses indicate invalid request parameters; HTTP 500 responses indicate a server-side subtitle task creation error.

Authentication

Subtitle creation requires your personal API key in the api query parameter. Download requests use the same kind of key with the apikey parameter; do not substitute apikey for api here. Keep the key server-side and use YOUR_API_KEY only as a documentation placeholder.

Pricing and account handoff

Production subtitle and transcript jobs consume API-key wallet balance according to the existing pricing rules. Review pricing before production traffic, then create or manage the key from the account dashboard.

Review API pricing

Feature details

Text output workflows

VTT subtitles

Caption-ready timed text for players and accessibility workflows.

SRT transcripts

Transcript-friendly output for review, indexing, and content pipelines.

Response fields and processing

Accepted job

A successful creation response includes success: true, a unique id, a title, and an absolute progress_url. RapidAPI responses are clean JSON and omit the optional legacy HTML content card.

Ready result

Use download_url only when progress == 1000, success is 1 or true, and the URL is non-empty. It points to the generated .vtt or .srt file.

Failed result

At progress == 1000, treat the job as failed unless success is 1 or true and download_url is non-empty. Stop polling and return text or message, or a generic failure message if neither is present.

Common errors

HTTP 400

Check for a missing url or api key, or an invalid lang or format value.

HTTP 500

Treat this as a subtitle task creation error and retain the returned message for diagnostics. A worker failure appears as terminal progress with its status text.

Parameters

urlRequiredURL-encoded source video URL to generate subtitles or transcripts for.
apiRequiredYour personal API key for subtitle requests. Keep it server-side; download requests use the separate apikey parameter name.
langOptionalYouTube track code, for example en, es or zh-CN. Auto-translated codes such as zh-Hans work only when the video has automatic captions. If the video has no track in this language, the final progress response lists the available codes in text and available_languages.
formatOptionalSubtitle output format. The OpenAPI contract accepts vtt or srt.

Request examples

Create subtitle job

bash
curl "https://p.savenow.to/ajax/subtitles?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Darj7oStGLkU&api=YOUR_API_KEY&lang=en&format=vtt"

Poll subtitle progress

bash
curl "https://p.savenow.to/ajax/progress.php?id=subtitle-job-123"

Important details

Read the canonical contract

Use the REST docs for the complete subtitle, progress, parameter, response, and error reference before integrating.

Open REST docs

Plan for billable production use

YOUR_API_KEY is documentation-only. Production subtitle and transcript jobs use API-key wallet balance according to the existing pricing rules.

See pricing

Create an API key

Create an account and copy the generated key from the dashboard before replacing YOUR_API_KEY in a real server-side request.

Get an API key

Related guides

Continue building

OpenAPI docs

Download YAML or JSON specs and inspect downloader, progress, and subtitle endpoints.

Read docs

Embed resources

Keep button, card, widget, and REST paths reachable for existing users and migrations.

View resources

Common questions

Where do examples run?

Use p.savenow.to for public API examples unless your dashboard shows a custom account hostname.

How do I add credit?

Open the dashboard, create a top-up payment, or redeem a coupon. Balance changes are shown in the account history.

Are old endpoints still supported?

Yes. The .php compatibility endpoints remain active for existing integrations and embedded clients.