Format-based costs
Audio, video, subtitle, and extended-duration jobs are charged according to the configured format pricing.
Pricing follows the existing API key balance and per-format billing model already used by this repository.
Replace VIDEO_ID and YOUR_API_KEY, run the request, then pass the returned id to /ajax/progress.php. At progress 1000, use download_url only when success is 1 or true; otherwise stop and show the error.
curl --get "https://p.savenow.to/ajax/download.php" \
--data-urlencode "url=https://www.youtube.com/watch?v=VIDEO_ID" \
--data "format=mp3" \
--data "apikey=YOUR_API_KEY"Audio, video, subtitle, and extended-duration jobs are charged according to the configured format pricing.
Credits are attached to API keys. Queued download and subtitle jobs are charged when the API accepts them and returns an id, before the file is ready. Streaming downloads, including /api/v2/download, are charged when the prepared file link is saved. Requests rejected before a job is accepted are not charged.
Dashboard-hosted users can keep custom API hostnames and account-specific workflows.
If you are comparing Ultrathink, loader.to, RapidAPI, and direct YouTube download API pricing, use the dedicated migration pricing page before estimating balance.
Compare Ultrathink and loader.to API pricingIf the decision is broader than pricing, compare direct accounts, RapidAPI marketplace access, loader-compatible hosted endpoints, and generic SaaS selection criteria.
Compare provider pathsChoose an output format, request count, and duration to estimate wallet usage with the current pricing rules.
$0.0002 per request
$0.00015 per request
$0.0002 per request
$0.0002 per request
$0.0002 per request
$0.0003 per request
$0.0002 per request
$0.0002 per request
$0.0002 per request
$0.00035 per request
$0.00035 per request
$0.00020 per request with a 180 minute base duration.
$0.00015 per request for lower-cost high-volume flows.
$0.00020 per request with a 180 minute base duration.
$0.00035 per request with a 30 minute base duration.
$0.00010 per request without duration tiers.
$0.00010 per request for transcript workflows.
Create an API key for docs review and first-request testing, then add wallet balance when production usage starts.
Start with the free API key guideLonger video jobs are estimated by output format, base duration, and additional duration blocks.
Use the Ultrathink and loader.to comparison page when replacing another YouTube API provider.
Open the pricing comparisonDownload YAML or JSON specs and inspect downloader, progress, and subtitle endpoints.
Read docsKeep button, card, widget, and REST paths reachable for existing users and migrations.
View resourcesAn accepted id is not a finished file. Queued download and subtitle jobs are charged when they are accepted, so a later failure can still use balance. Charges are not reversed automatically. A streaming download that fails before its file is prepared is not charged. Budget every accepted id as charged.
A request rejected before a job is accepted is not charged. Examples are "Not enough balance", invalid input, and no available worker. These responses do not return a job id.
A client timeout does not cancel an accepted job. Keep the id and continue to poll its progress URL until progress reaches 1000. Do not send the same request again: a new request creates a new job and can be charged again.
Use p.savenow.to for public API examples unless your dashboard shows a custom account hostname.
Open the dashboard, create a top-up payment, or redeem a coupon. Balance changes are shown in the account history.
Yes. The .php compatibility endpoints remain active for existing integrations and embedded clients.