Getting Started
Introduction
Captapi gives you structured data from social media video through one consistent REST API. Send a public URL from YouTube, TikTok, Instagram, or Facebook and get back clean JSON — transcripts, AI summaries, video details, comments, search results, and downloads. No OAuth, no per-platform SDKs, no scraping infrastructure to maintain.
- • One API key works across all four platforms.
- • Results are cached for 24 hours and shared — repeat calls are instant and free.
- • You are only charged for successful requests.
Quickstart
After signing up and copying your API key from the dashboard, make your first request:
curl "https://api.captapi.com/v1/youtube/transcript?url=https%3A%2F%2Fyoutube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ" \
-H "Authorization: Bearer capt_live_..."Authentication
All requests are authenticated with a Bearer token. Generate keys in your dashboard and send them in the Authorization header. Keep keys secret — never expose capt_live_ keys in client-side code.
Authorization: Bearer capt_live_xxxxxxxxxxxxxxxxxxxxMaking Requests
Most endpoints take a single url query parameter (search endpoints use q). When building the request as a query string, you must URL-encode the target URL so it isn't misinterpreted as multiple parameters.
# URL-encode the target URL before passing it
urlencode "https://youtube.com/watch?v=dQw4w9WgXcQ"Response Format
Every response is JSON with a top-level success boolean. Successful responses include cached, creditsUsed, and a data object.
Success
{
"success": true,
"cached": false,
"creditsUsed": 2,
"data": {
"language": "en",
"segments": [
{ "start": 0.0, "end": 4.12, "text": "Hey everyone, welcome back." }
],
"text": "Hey everyone, welcome back."
}
}Error
{
"success": false,
"error": {
"code": "no_captions",
"message": "This video has no captions and audio transcription failed."
}
}Credits & Caching
Credits are the unit of billing. Each endpoint costs 1–4 credits per successful call (video details: 1, transcript/comments: 2, summarize: 4, downloads: 3). Failed and empty results are never charged.
Responses are cached for 24 hours and shared across all accounts. If a result is served from cache, cached is true and creditsUsed is 0.
Errors
Errors return a non-2xx status and an error object with a stable code and a human-readable message.
| Status | Code | Meaning |
|---|---|---|
| 401 | invalid_api_key | Missing or malformed Authorization header. |
| 402 | insufficient_credits | Your balance is too low for this request. |
| 404 | not_found | The target URL or resource could not be found. |
| 422 | no_captions | No captions and audio transcription failed (not charged). |
| 429 | rate_limited | Too many requests — slow down or upgrade your plan. |
| 502 | upstream_error | Temporary scraping failure. Safe to retry (not charged). |
Rate Limits
Rate limits scale with your plan and are returned on every response via X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. When you exceed the limit you'll get a 429 — back off and retry after the reset window.
API Reference
36 endpoints across five groups. Click any endpoint for full parameters, examples, and FAQs.
YouTube & Shorts
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/youtube/transcript | 2 | Transcript |
| GET | /v1/youtube/summarize | 4 | Summarizer |
| GET | /v1/youtube/video-details | 1 | Video Details |
| GET | /v1/youtube/comments | 2+ | Comments |
| GET | /v1/youtube/channel-details | 1 | Channel Details |
| GET | /v1/youtube/search | 2+ | Search |
| GET | /v1/youtube/channel-videos | 2+ | Channel Videos |
| GET | /v1/youtube/playlist-videos | 2+ | Playlist Videos |
| GET | /v1/youtube/video-download | 3 | Video Download |
| GET | /v1/youtube/shorts/transcript | 2 | Shorts Transcript |
| GET | /v1/youtube/shorts/summarize | 4 | Shorts Summarizer |
| GET | /v1/youtube/shorts/video-details | 1 | Shorts Stats |
| GET | /v1/youtube/shorts/comments | 2+ | Shorts Comments |
TikTok
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/tiktok/transcript | 2 | Transcript |
| GET | /v1/tiktok/summarize | 4 | Summarizer |
| GET | /v1/tiktok/video-details | 1 | Video Details |
| GET | /v1/tiktok/comments | 2+ | Comments |
| GET | /v1/tiktok/channel-details | 1 | Channel Details |
| GET | /v1/tiktok/search | 2+ | Search |
| GET | /v1/tiktok/video-download | 3 | Video Download |
Instagram Reels
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/instagram/transcript | 2 | Transcript |
| GET | /v1/instagram/summarize | 4 | Summarizer |
| GET | /v1/instagram/details | 1 | Details |
| GET | /v1/instagram/comments | 2+ | Comments |
| GET | /v1/instagram/channel-details | 1 | Channel Details |
| GET | /v1/instagram/channel-posts | 2+ | Channel Posts |
| GET | /v1/instagram/channel-reels | 2+ | Channel Reels |
| GET | /v1/instagram/reels-search | 2+ | Reels Search |
| GET | /v1/instagram/video-download | 3 | Video Download |
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/facebook/details | 1 | Details |
| GET | /v1/facebook/transcript | 2 | Transcript |
| GET | /v1/facebook/summarize | 4 | Summarizer |
| GET | /v1/facebook/comments | 2+ | Comments |
| GET | /v1/facebook/page-details | 1 | Page Details |
Video Files (direct upload)
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| POST | /v1/video/transcript | 1/min | Whisper transcription of an uploaded file |
| POST | /v1/video/summarize | 1/min +1 | Transcribe an uploaded file + AI summary |