[{"data":1,"prerenderedAt":314},["ShallowReactive",2],{"doc-guide\u002Fauthentication":3},{"id":4,"title":5,"author":6,"body":7,"date":297,"description":298,"draft":299,"extension":300,"faq":301,"meta":302,"navigation":303,"path":304,"schemaType":305,"seo":306,"stem":307,"tags":308,"updatedAt":312,"__hash__":313},"content\u002Fguide\u002Fauthentication.md","Authentication","YT2Text Team",{"type":8,"value":9,"toc":288},"minimark",[10,14,18,23,26,37,48,52,55,71,74,83,86,94,100,117,120,124,127,145,148,165,168,172,266,270,284],[11,12,5],"h1",{"id":13},"authentication",[15,16,17],"p",{},"The public developer API is authenticated with API keys.",[19,20,22],"h2",{"id":21},"public-api-keys","Public API keys",[15,24,25],{},"Issued keys currently look like:",[27,28,29],"ul",{},[30,31,32,36],"li",{},[33,34,35],"code",{},"sk_"," + 64 lowercase hex characters",[15,38,39,40,43,44,47],{},"Legacy ",[33,41,42],{},"yt2t_..."," keys are still accepted by the backend, but new integrations should use the ",[33,45,46],{},"sk_..."," keys issued by the dashboard.",[19,49,51],{"id":50},"send-credentials","Send credentials",[15,53,54],{},"Preferred header:",[56,57,62],"pre",{"className":58,"code":59,"language":60,"meta":61,"style":61},"language-http shiki shiki-themes github-light github-dark","Authorization: Bearer \u003Capi_key>\n","http","",[33,63,64],{"__ignoreMap":61},[65,66,69],"span",{"class":67,"line":68},"line",1,[65,70,59],{},[15,72,73],{},"Also supported:",[56,75,77],{"className":58,"code":76,"language":60,"meta":61,"style":61},"X-API-Key: \u003Capi_key>\n",[33,78,79],{"__ignoreMap":61},[65,80,81],{"class":67,"line":68},[65,82,76],{},[15,84,85],{},"There is no supported query-parameter auth method for the public API.",[19,87,89,90,93],{"id":88},"what-apiv1auth-actually-does","What ",[33,91,92],{},"\u002Fapi\u002Fv1\u002Fauth\u002F*"," Actually Does",[15,95,96,97,99],{},"The ",[33,98,92],{}," routes are for API key management:",[27,101,102,105,108,111,114],{},[30,103,104],{},"create key",[30,106,107],{},"list keys",[30,109,110],{},"update key",[30,112,113],{},"delete key",[30,115,116],{},"validate key",[15,118,119],{},"They do not provide user login, signup, refresh, or logout. User auth for the web app lives on the internal browser-oriented API.",[19,121,123],{"id":122},"permission-model","Permission Model",[15,125,126],{},"Current public key permissions:",[27,128,129,134,139],{},[30,130,131],{},[33,132,133],{},"read",[30,135,136],{},[33,137,138],{},"process",[30,140,141,144],{},[33,142,143],{},"admin"," admin users only",[15,146,147],{},"Route-specific notes:",[27,149,150,158],{},[30,151,152,155,156],{},[33,153,154],{},"POST \u002Fapi\u002Fv1\u002Fvideos\u002Fprocess-sync"," requires ",[33,157,143],{},[30,159,160,155,163],{},[33,161,162],{},"\u002Fapi\u002Fv1\u002Fproxies\u002F*",[33,164,143],{},[15,166,167],{},"Plan gates are separate from key permissions. For example, a valid key still cannot use Pro-only features on a non-Pro account.",[19,169,171],{"id":170},"example","Example",[56,173,177],{"className":174,"code":175,"language":176,"meta":61,"style":61},"language-bash shiki shiki-themes github-light github-dark","curl -X POST \"https:\u002F\u002Fapi.yt2text.cc\u002Fapi\u002Fv1\u002Fvideos\u002Fprocess\" \\\n  -H \"Authorization: Bearer $YT2TEXT_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"url\": \"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=dQw4w9WgXcQ\",\n    \"options\": {\n      \"summary_modes\": [\"tldr\"]\n    }\n  }'\n","bash",[33,178,179,199,217,227,236,242,248,254,260],{"__ignoreMap":61},[65,180,181,185,189,193,196],{"class":67,"line":68},[65,182,184],{"class":183},"sScJk","curl",[65,186,188],{"class":187},"sj4cs"," -X",[65,190,192],{"class":191},"sZZnC"," POST",[65,194,195],{"class":191}," \"https:\u002F\u002Fapi.yt2text.cc\u002Fapi\u002Fv1\u002Fvideos\u002Fprocess\"",[65,197,198],{"class":187}," \\\n",[65,200,202,205,208,212,215],{"class":67,"line":201},2,[65,203,204],{"class":187},"  -H",[65,206,207],{"class":191}," \"Authorization: Bearer ",[65,209,211],{"class":210},"sVt8B","$YT2TEXT_API_KEY",[65,213,214],{"class":191},"\"",[65,216,198],{"class":187},[65,218,220,222,225],{"class":67,"line":219},3,[65,221,204],{"class":187},[65,223,224],{"class":191}," \"Content-Type: application\u002Fjson\"",[65,226,198],{"class":187},[65,228,230,233],{"class":67,"line":229},4,[65,231,232],{"class":187},"  -d",[65,234,235],{"class":191}," '{\n",[65,237,239],{"class":67,"line":238},5,[65,240,241],{"class":191},"    \"url\": \"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=dQw4w9WgXcQ\",\n",[65,243,245],{"class":67,"line":244},6,[65,246,247],{"class":191},"    \"options\": {\n",[65,249,251],{"class":67,"line":250},7,[65,252,253],{"class":191},"      \"summary_modes\": [\"tldr\"]\n",[65,255,257],{"class":67,"line":256},8,[65,258,259],{"class":191},"    }\n",[65,261,263],{"class":67,"line":262},9,[65,264,265],{"class":191},"  }'\n",[19,267,269],{"id":268},"security-guidance","Security Guidance",[27,271,272,275,278,281],{},[30,273,274],{},"Keep keys server-side only.",[30,276,277],{},"Never embed production keys in browser code.",[30,279,280],{},"Rotate keys immediately if exposed.",[30,282,283],{},"Create separate keys per integration where possible.",[285,286,287],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":61,"searchDepth":201,"depth":201,"links":289},[290,291,292,294,295,296],{"id":21,"depth":201,"text":22},{"id":50,"depth":201,"text":51},{"id":88,"depth":201,"text":293},"What \u002Fapi\u002Fv1\u002Fauth\u002F* Actually Does",{"id":122,"depth":201,"text":123},{"id":170,"depth":201,"text":171},{"id":268,"depth":201,"text":269},"2025-01-15","Current authentication behavior for the public YT2Text API",false,"md",null,{},true,"\u002Fguide\u002Fauthentication","TechArticle",{"title":5,"description":298},"guide\u002Fauthentication",[309,310,311],"guide","onboarding","api","2026-03-22","Drfrpz9yMG1NWIo25EHgSPNRb2MOc7yspjdvZSxKoZ8",1792448456900]