API documentation
Authentication, endpoints, credit rates, and client setup.
Your first request
Sign in, reveal your project’s API key, and replace VIDEO_URL and YOUR_KEY in the example below.
curl 'https://api.staging.fetchfox.net/youtube/transcript' \
--get \
--data-urlencode 'url=VIDEO_URL' \
-H 'x-access-key: YOUR_KEY'Base URL: https://api.staging.fetchfox.net
Authentication
Send your project key in the x-access-key header. Keep it on your server. GET requests use query parameters; POST requests use JSON with the same input names.
One project key works across REST and MCP. Rotating it immediately invalidates the previous key.
Credits & errors
Read /credits for your balance. The x-credits-used response header reports each request’s charge. Validation errors and failed processing do not incur a success charge. Successful cache hits can be free.
| Operation | Credits |
|---|---|
| Ordinary reads and YouTube transcripts | From 1 per request |
Errors include an HTTP status, an error code, and retryability where applicable. Use bounded retries for transient errors and respect Retry-After; do not retry missing or private content indefinitely.
Connect with MCP
Connect a Streamable HTTP MCP client to the endpoint below and send Authorization: Bearer YOUR_KEY. Calls share your REST credit balance.
https://mcp.staging.fetchfox.net/mcpDiscovery exposes 8 tools. Expand a platform to see the available tools.
YouTube1 tools
youtube_transcript
TikTok3 tools
tiktok_statstiktok_searchtiktok_channel_videos
Instagram4 tools
instagram_statsinstagram_channel_statsinstagram_channel_postsinstagram_channel_reels
Use your project API key to connect; OAuth is not enabled for this deployment.
Endpoint reference
Find an operation, then expand it for input details.
10 endpoints
GET/credits
Get the authenticated project’s remaining monthly and purchased credits. This request does not consume credits.
{}GET / POST/instagram/channel-posts
Get recent posts from an Instagram profile's feed.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Full URL of the resource"
},
"limit": {
"type": "integer",
"description": "Maximum number of results to return"
},
"access_key": {
"type": "string",
"description": "Project access key (also accepted as x-access-key header)"
}
},
"nullable": true,
"required": [
"url"
]
}GET / POST/instagram/channel-reels
Get recent reels from an Instagram profile's reels tab.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Full URL of the resource"
},
"limit": {
"type": "integer",
"description": "Maximum number of results to return"
},
"access_key": {
"type": "string",
"description": "Project access key (also accepted as x-access-key header)"
}
},
"nullable": true,
"required": [
"url"
]
}GET / POST/instagram/channel-stats
Get stats and metadata for an Instagram profile.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Full URL of the resource"
},
"access_key": {
"type": "string",
"description": "Project access key (also accepted as x-access-key header)"
}
},
"nullable": true,
"required": [
"url"
]
}GET / POST/instagram/stats
Get engagement metrics and metadata for an Instagram post or reel. Views are optional by default: returns media immediately with null for unavailable views. Set requireViews=true to require a verified count; unavailable strict requests return 503 without a charge.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Full URL of the resource"
},
"access_key": {
"type": "string",
"description": "Project access key (also accepted as x-access-key header)"
},
"requireViews": {
"enum": [
true,
false,
"true",
"false",
"1",
"0"
],
"description": "Require verified video views. Defaults to false; optional mode skips view-only recovery."
}
},
"nullable": true,
"required": [
"url"
]
}GET/status
Get the current public status of every Project API API capability.
{}GET / POST/tiktok/channel-videos
Get recent TikTok videos with bounded recovery. Paid requests allow up to 120 seconds; failures use zero credits.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Full URL of the resource"
},
"limit": {
"type": "integer",
"description": "Maximum number of results to return"
},
"cursor": {
"type": "string",
"description": "Pagination cursor from a previous response"
},
"access_key": {
"type": "string",
"description": "Project access key (also accepted as x-access-key header)"
},
"cache": {
"type": "boolean",
"description": "Opt in to successful response caching; cache hits use zero credits."
},
"cache_ttl": {
"type": "integer",
"minimum": 60,
"maximum": 2592000,
"description": "Maximum response age in seconds. Default 86400; no stale fallback."
},
"no_cache": {
"type": "boolean",
"description": "Bypass all extraction and result caches."
},
"country": {
"type": "string",
"description": "Residential exit country (two-letter code)."
}
},
"nullable": true,
"required": [
"url"
]
}GET / POST/tiktok/search
Search TikTok videos by keyword.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search query"
},
"limit": {
"type": "integer",
"description": "Maximum number of results"
},
"access_key": {
"type": "string",
"description": "Project access key (also accepted as x-access-key header)"
}
},
"nullable": true,
"required": [
"query"
]
}GET / POST/tiktok/stats
Get engagement metrics and metadata for a TikTok video.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Full URL of the resource"
},
"access_key": {
"type": "string",
"description": "Project access key (also accepted as x-access-key header)"
}
},
"nullable": true,
"required": [
"url"
]
}GET / POST/youtube/transcript
Extract the full transcript (with timestamps) from a YouTube video or Short.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Full URL of the resource"
},
"access_key": {
"type": "string",
"description": "Project access key (also accepted as x-access-key header)"
},
"no_cache": {
"type": "boolean",
"description": "Bypass transcript extraction and summary-result caches."
}
},
"nullable": true,
"required": [
"url"
]
}