Yoinku

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.

API key authCORS enabledJSON responses5 req/min

Base URL

https://yoinku.com/api/v1

Authentication

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 keys

Endpoints

GET/api/v1/info

Video 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 }
    ]
  }
}
GET/api/v1/meta

Video 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"] }
  }
}
GET/api/v1/transcript

Transcript

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"] }
  }
}
GET/api/v1/download

Download 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

$0

5 downloads and 10 transcript requests per day. No card required.

Hobby

$9/mo

50 downloads and 100 transcript/metadata requests per day.

Pro

$29/mo

100 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 downloader

Use the API only for content you own or have permission to download. You are solely responsible for how you use it.