Submit one public TikTok video
Pass a TikTok video URL with its creator handle and video ID in the normal url parameter. The documented download endpoint creates one job for that video.
Send a public TikTok video URL and get it back as an MP4 video or MP3 audio file. One request creates one job; private, removed, or restricted posts can fail.
Use the shared API host unless the dashboard shows an account-specific hostname.
curl --get "https://p.savenow.to/ajax/download.php" \
--data-urlencode "url=https://www.tiktok.com/@scout2015/video/6718335390845095173" \
--data "format=720" \
--data "apikey=YOUR_API_KEY"
Pass a TikTok video URL with its creator handle and video ID in the normal url parameter. The documented download endpoint creates one job for that video.
Use format=720 for the video as MP4, or format=mp3 for the audio track as MP3. Each request creates one job for one post.
Keep the returned id or progress_url with the source URL. Poll until progress is 1000, and use download_url only when success is 1 or true.
Private, removed, login-required, age-restricted, or region-restricted posts may not be downloadable. Do not promise your users a watermark-free file.
Validate that your input contains one TikTok video URL before creating a job.
Create metered account jobs from your server and read VDA_API_KEY from protected configuration.
Store the job id with the submitted URL so users can retry or inspect one item without losing other work.
Public TikTok videos download as MP4 video or MP3 audio.
TikTok often serves HEVC (H.265) video, so check that your player or pipeline supports it.
Creator privacy, account, age, region, and post availability rules still apply to every request.
url
Required
Use the complete public TikTok video URL.
format=720
Video output
Returns the TikTok video as an MP4 file.
format=mp3
Audio output
Returns the audio track as an MP3 file.
apikey
Required for account API jobs
Authenticate account download requests with a server-side dashboard key.
progress_url
Response
Poll the returned job until it finishes or reports a terminal error.
download_url
Ready file
Fetch only the non-empty URL from the successful terminal response for this job.
curl --get "https://p.savenow.to/ajax/download.php" --data-urlencode "url=https://www.tiktok.com/@scout2015/video/6718335390845095173" --data "format=720" --data "apikey=YOUR_API_KEY"
const apiKey = process.env.VDA_API_KEY;
if (!apiKey) throw new Error('Set VDA_API_KEY on the server.');
const params = new URLSearchParams({
url: 'https://www.tiktok.com/@scout2015/video/6718335390845095173',
format: '720',
apikey: apiKey,
});
const response = await fetch('https://p.savenow.to/ajax/download.php?' + params);
if (!response.ok) throw new Error('Download request failed: ' + response.status);
const job = await response.json();
if (!job.success || !job.id) throw new Error(job.message || 'The TikTok job was not accepted.');
console.log({ id: job.id, progressUrl: job.progress_url });
import os
import requests
response = requests.get(
"https://p.savenow.to/ajax/download.php",
params={
"url": "https://www.tiktok.com/@scout2015/video/6718335390845095173",
"format": "720",
"apikey": os.environ["VDA_API_KEY"],
},
timeout=30,
)
response.raise_for_status()
job = response.json()
if not job.get("success") or not job.get("id"):
raise RuntimeError(job.get("message") or "The TikTok job was not accepted.")
print({"id": job["id"], "progress_url": job.get("progress_url")})
The copyable account API examples require a dashboard API key. Store it on your server and review format pricing before production.
Get an API keyReview documented input, authentication, progress, and terminal response fields.
Read API docsThe same download endpoint also handles public Instagram Reels as MP4.
Read the Instagram Reels guideDownload 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 resourcesYes. Send the public TikTok video URL in the url parameter. Private, removed, or region-restricted posts can fail.
Use format=720 for the video as MP4 and format=mp3 for the audio as MP3.
We do not guarantee a watermark-free file. The output depends on what TikTok serves for the post.
No. The documented metadata-only function accepts YouTube URLs. Use the download response fields for the TikTok job itself.