Yoinku API
An HTTP API for video data from YouTube, TikTok and Instagram — structured metadata, subtitle transcripts ready for AI pipelines, and download URLs. Authenticate with a free API key from your account. CORS enabled: call it from your terminal, a script, or an AI agent.
Base URL
https://yoinku.com/api/v1Authentication
Every request needs an API key in the x-api-key header. Keys are free: sign up and create one on your account page. API downloads count against the same daily limit as the web UI (5 per day per account).
curl -H "x-api-key: yk_..." "https://yoinku.com/api/v1/info?url=https://youtu.be/dQw4w9WgXcQ"Manage your API keysEndpoints
/api/v1/infoVideo info
Returns the title, thumbnail, duration and the list of available formats for a video.
Parameters
- url (required)
- The YouTube, TikTok or Instagram video URL.
Example request
curl -H "x-api-key: yk_..." \
"https://yoinku.com/api/v1/info?url=https://youtu.be/dQw4w9WgXcQ"Example response
{
"ok": true,
"data": {
"id": "dQw4w9WgXcQ",
"platform": "youtube",
"title": "Example video",
"durationSeconds": 213,
"thumbnailUrl": "https://i.ytimg.com/...",
"formats": [
{ "id": "v-1080", "kind": "video", "container": "mp4",
"quality": "1080p", "height": 1080,
"hasVideo": true, "hasAudio": true },
{ "id": "a-mp3", "kind": "audio", "container": "mp3",
"quality": "MP3", "hasVideo": false, "hasAudio": true }
]
}
}/api/v1/metaVideo metadata
Returns rich structured metadata for analysis: description, channel, view and like counts, upload date, tags, chapters and the list of available subtitle languages. Counts against the same daily data limit as /transcript.
Parameters
- url (required)
- The YouTube, TikTok or Instagram video URL.
Example request
curl -H "x-api-key: yk_..." \
"https://yoinku.com/api/v1/meta?url=https://youtu.be/dQw4w9WgXcQ"Example response
{
"ok": true,
"data": {
"id": "dQw4w9WgXcQ",
"platform": "youtube",
"title": "Example video",
"description": "…",
"author": "Example channel",
"durationSeconds": 213,
"uploadDate": "2009-10-25",
"viewCount": 1234567,
"likeCount": 45678,
"tags": ["example"],
"chapters": [
{ "title": "Intro", "startSeconds": 0, "endSeconds": 42 }
],
"subtitleLanguages": { "manual": ["en"], "auto": ["en-orig", "ja"] }
}
}/api/v1/transcriptTranscript
Returns the video's subtitles as a transcript: plain text plus timestamped chunks, ready for LLM and RAG pipelines. Creator subtitles are preferred over auto-generated captions. Transcript and metadata requests share a daily data limit (10 per day on the free plan), separate from downloads.
Parameters
- url (required)
- The YouTube, TikTok or Instagram video URL.
- lang (optional)
- Subtitle language code, e.g. en or ja. Defaults to the video's original language.
Example request
curl -H "x-api-key: yk_..." \
"https://yoinku.com/api/v1/transcript?url=https://youtu.be/dQw4w9WgXcQ&lang=en"Example response
{
"ok": true,
"data": {
"id": "dQw4w9WgXcQ",
"lang": "en",
"source": "manual",
"text": "We're no strangers to love …",
"chunks": [
{ "startSeconds": 18.6, "durationSeconds": 3.4,
"text": "We're no strangers to love" }
],
"availableLanguages": { "manual": ["en"], "auto": ["en-orig", "ja"] }
}
}/api/v1/downloadDownload URL
Produces the file and returns a short-lived download URL (valid about one hour). Add redirect=1 to be sent straight to the file with a 302 — handy with curl -L.
Parameters
- url (required)
- The YouTube, TikTok or Instagram video URL.
- format (required)
- A format id from the info response, e.g. v-720 or a-mp3.
- redirect (optional)
- Set to 1 to be 302-redirected to the file instead of receiving JSON.
Example request
# Get a short-lived download URL (JSON)
curl -H "x-api-key: yk_..." \
"https://yoinku.com/api/v1/download?url=https://youtu.be/dQw4w9WgXcQ&format=v-720"
# …or download the file directly
curl -L -o video.mp4 -H "x-api-key: yk_..." \
"https://yoinku.com/api/v1/download?url=https://youtu.be/dQw4w9WgXcQ&format=v-720&redirect=1"Example response
{
"ok": true,
"url": "https://<bucket>.r2.cloudflarestorage.com/...",
"filename": "Example video.mp4",
"expiresInSeconds": 3600
}Format IDs
Pick an id from the formats array in the info response. Video ids look like v-1080, v-720, v-360 (by height); audio ids are a-mp3 and a-m4a.
Fair use
Requests are limited to 5 per minute per IP, and downloads to 5 per day per account (shared with web downloads). Going over returns HTTP 429 with a Retry-After header. Please be considerate and cache responses where you can.
Errors
Failures return { "ok": false, "error": { "code", "message" } } with a matching HTTP status: 400 (bad input), 401 (missing or invalid API key), 404 (not found), 422 (unsupported or failed), 429 (rate limited or daily quota exceeded).
Pricing
Free usage covers 5 downloads and 10 transcript requests per day per account. Paid plans raise these limits — see the pricing page to upgrade:
Free
$05 downloads and 10 transcript requests per day. No card required.
Hobby
$9/mo50 downloads and 100 transcript/metadata requests per day.
Pro
$29/mo100 downloads and 1,000 transcript/metadata requests per day.
Prefer a UI?
Use the Yoinku web app in your browser — paste a link and download, no code required.
Open the downloaderUse the API only for content you own or have permission to download. You are solely responsible for how you use it.