{"openapi":"3.1.0","info":{"title":"TranscriptAPI","description":"YouTube Transcript API — extract transcripts, search videos, browse channels.","version":"1.0.0"},"paths":{"/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_auth_login_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"x-signup-path","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Signup-Path"}},{"name":"x-signup-referrer","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Signup-Referrer"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/transcript":{"get":{"tags":["Transcripts"],"summary":"Get Transcript","operationId":"get_transcript_transcript_get","parameters":[{"name":"video_id","in":"query","required":true,"schema":{"type":"string","description":"YouTube video ID","title":"Video Id"},"description":"YouTube video ID"},{"name":"language","in":"query","required":false,"schema":{"type":"string","description":"Preferred transcript language code (e.g. 'en', 'de', 'es')","default":"en","title":"Language"},"description":"Preferred transcript language code (e.g. 'en', 'de', 'es')"},{"name":"translate_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Translate transcript to this language using AI (e.g. 'de', 'fr'). Costs 1 extra credit per 40 transcript segments, minimum 2.","title":"Translate To"},"description":"Translate transcript to this language using AI (e.g. 'de', 'fr'). Costs 1 extra credit per 40 transcript segments, minimum 2."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-rapidapi-proxy-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Rapidapi-Proxy-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"402":{"description":"Insufficient credits. Not charged."},"404":{"description":"The video has captions turned off, is private, deleted or age-restricted. Refunded; retrying cannot help.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}},"example":{"detail":"This video has captions turned off, so there is no transcript to fetch. Your credits have been refunded.","error":"TranscriptsDisabled","hint":"Retrying will not help — the uploader has disabled captions for this video.","retryable":false,"credits_refunded":true}}}},"502":{"description":"YouTube could not be read. Refunded; temporary, retry.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}}}}},"503":{"description":"YouTube is refusing our requests. Refunded; temporary, retry.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search":{"get":{"tags":["Search"],"summary":"Search","operationId":"search_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"Search query","title":"Q"},"description":"Search query"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-rapidapi-proxy-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Rapidapi-Proxy-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"402":{"description":"Insufficient credits. Not charged."},"404":{"description":"The video has captions turned off, is private, deleted or age-restricted. Refunded; retrying cannot help.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}},"example":{"detail":"This video has captions turned off, so there is no transcript to fetch. Your credits have been refunded.","error":"TranscriptsDisabled","hint":"Retrying will not help — the uploader has disabled captions for this video.","retryable":false,"credits_refunded":true}}}},"502":{"description":"YouTube could not be read. Refunded; temporary, retry.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}}}}},"503":{"description":"YouTube is refusing our requests. Refunded; temporary, retry.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/channel/videos":{"get":{"tags":["Channels"],"summary":"Channel Videos","operationId":"channel_videos_channel_videos_get","parameters":[{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","description":"YouTube channel ID","title":"Channel Id"},"description":"YouTube channel ID"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-rapidapi-proxy-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Rapidapi-Proxy-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"402":{"description":"Insufficient credits. Not charged."},"404":{"description":"The video has captions turned off, is private, deleted or age-restricted. Refunded; retrying cannot help.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}},"example":{"detail":"This video has captions turned off, so there is no transcript to fetch. Your credits have been refunded.","error":"TranscriptsDisabled","hint":"Retrying will not help — the uploader has disabled captions for this video.","retryable":false,"credits_refunded":true}}}},"502":{"description":"YouTube could not be read. Refunded; temporary, retry.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}}}}},"503":{"description":"YouTube is refusing our requests. Refunded; temporary, retry.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/channel/search":{"get":{"tags":["Channels"],"summary":"Channel Search","operationId":"channel_search_channel_search_get","parameters":[{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","description":"YouTube channel ID","title":"Channel Id"},"description":"YouTube channel ID"},{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"Search query","title":"Q"},"description":"Search query"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-rapidapi-proxy-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Rapidapi-Proxy-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"402":{"description":"Insufficient credits. Not charged."},"404":{"description":"The video has captions turned off, is private, deleted or age-restricted. Refunded; retrying cannot help.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}},"example":{"detail":"This video has captions turned off, so there is no transcript to fetch. Your credits have been refunded.","error":"TranscriptsDisabled","hint":"Retrying will not help — the uploader has disabled captions for this video.","retryable":false,"credits_refunded":true}}}},"502":{"description":"YouTube could not be read. Refunded; temporary, retry.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}}}}},"503":{"description":"YouTube is refusing our requests. Refunded; temporary, retry.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/playlist":{"get":{"tags":["Playlists"],"summary":"Get Playlist","operationId":"get_playlist_playlist_get","parameters":[{"name":"playlist_id","in":"query","required":true,"schema":{"type":"string","description":"YouTube playlist ID","title":"Playlist Id"},"description":"YouTube playlist ID"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-rapidapi-proxy-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Rapidapi-Proxy-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"402":{"description":"Insufficient credits. Not charged."},"404":{"description":"The video has captions turned off, is private, deleted or age-restricted. Refunded; retrying cannot help.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}},"example":{"detail":"This video has captions turned off, so there is no transcript to fetch. Your credits have been refunded.","error":"TranscriptsDisabled","hint":"Retrying will not help — the uploader has disabled captions for this video.","retryable":false,"credits_refunded":true}}}},"502":{"description":"YouTube could not be read. Refunded; temporary, retry.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}}}}},"503":{"description":"YouTube is refusing our requests. Refunded; temporary, retry.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable explanation."},"error":{"type":"string","description":"Machine name of the failure, e.g. TranscriptsDisabled."},"hint":{"type":"string","description":"What to do about it."},"retryable":{"type":"boolean","description":"false: the video itself is the problem, stop retrying."},"credits_refunded":{"type":"boolean"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/channel/subscribe":{"post":{"tags":["Webhooks"],"summary":"Subscribe","operationId":"subscribe_channel_subscribe_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-rapidapi-proxy-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Rapidapi-Proxy-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Webhooks"],"summary":"Unsubscribe","operationId":"unsubscribe_channel_subscribe_delete","parameters":[{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","title":"Channel Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-rapidapi-proxy-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Rapidapi-Proxy-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tool/transcript":{"post":{"tags":["Public tools"],"summary":"Tool Transcript","operationId":"tool_transcript_tool_transcript_post","parameters":[{"name":"x-tool-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tool-Key"}},{"name":"x-client-ip","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Client-Ip"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranscriptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tool/channel":{"post":{"tags":["Public tools"],"summary":"Tool Channel","operationId":"tool_channel_tool_channel_post","parameters":[{"name":"x-tool-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tool-Key"}},{"name":"x-client-ip","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Client-Ip"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tool/playlist":{"post":{"tags":["Public tools"],"summary":"Tool Playlist","operationId":"tool_playlist_tool_playlist_post","parameters":[{"name":"x-tool-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tool-Key"}},{"name":"x-client-ip","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Client-Ip"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaylistRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tool/translate":{"post":{"tags":["Public tools"],"summary":"Tool Translate","operationId":"tool_translate_tool_translate_post","parameters":[{"name":"x-tool-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tool-Key"}},{"name":"x-client-ip","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Client-Ip"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tool/summarize":{"post":{"tags":["Public tools"],"summary":"Tool Summarize","operationId":"tool_summarize_tool_summarize_post","parameters":[{"name":"x-tool-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tool-Key"}},{"name":"x-client-ip","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Client-Ip"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SummarizeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["Health"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"ChannelRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Channel URL, @handle or UC… id"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","default":30}},"type":"object","required":["url"],"title":"ChannelRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PlaylistRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Playlist URL or bare playlist id"},"limit":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Limit","default":50}},"type":"object","required":["url"],"title":"PlaylistRequest"},"SubscribeRequest":{"properties":{"channel_id":{"type":"string","title":"Channel Id"},"webhook_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Webhook Url"}},"type":"object","required":["channel_id","webhook_url"],"title":"SubscribeRequest"},"SummarizeRequest":{"properties":{"url":{"type":"string","title":"Url"},"language":{"type":"string","maxLength":12,"title":"Language","default":"en"}},"type":"object","required":["url"],"title":"SummarizeRequest"},"TranscriptRequest":{"properties":{"url":{"type":"string","title":"Url","description":"YouTube URL or bare video ID"},"language":{"type":"string","maxLength":12,"title":"Language","default":"en"},"format":{"type":"string","pattern":"^(json|txt|srt|vtt)$","title":"Format","default":"json"}},"type":"object","required":["url"],"title":"TranscriptRequest"},"TranslateRequest":{"properties":{"url":{"type":"string","title":"Url"},"target_language":{"type":"string","maxLength":40,"minLength":2,"title":"Target Language"},"language":{"type":"string","maxLength":12,"title":"Language","default":"en"}},"type":"object","required":["url","target_language"],"title":"TranslateRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}