[{"data":1,"prerenderedAt":411},["ShallowReactive",2],{"doc-api\u002Fwebhooks":3},{"id":4,"title":5,"author":6,"body":7,"date":394,"description":395,"draft":396,"extension":397,"faq":398,"meta":399,"navigation":400,"path":401,"schemaType":402,"seo":403,"stem":404,"tags":405,"updatedAt":409,"__hash__":410},"content\u002Fapi\u002Fwebhooks.md","Webhooks","YT2Text Team",{"type":8,"value":9,"toc":388},"minimark",[10,14,18,23,43,55,59,79,83,86,281,284,369,373,384],[11,12,5],"h1",{"id":13},"webhooks",[15,16,17],"p",{},"YT2Text can send outbound POST callbacks for public video jobs, saved dashboard webhook destinations, and batch completion.",[19,20,22],"h2",{"id":21},"supported-events","Supported Events",[24,25,26,33,38],"ul",{},[27,28,29],"li",{},[30,31,32],"code",{},"job.completed",[27,34,35],{},[30,36,37],{},"job.failed",[27,39,40],{},[30,41,42],{},"batch.completed",[15,44,45,46,48,49,51,52,54],{},"Single video jobs emit ",[30,47,32],{}," or ",[30,50,37],{},". Batch jobs emit ",[30,53,42],{}," once all child jobs reach a terminal state.",[19,56,58],{"id":57},"delivery-rules","Delivery Rules",[24,60,61,64,67,70,73,76],{},[27,62,63],{},"production requires an HTTPS destination",[27,65,66],{},"localhost HTTP is only allowed in development",[27,68,69],{},"SSRF protections block loopback, private, link-local, reserved, and multicast destinations",[27,71,72],{},"non-2xx responses are treated as failed deliveries",[27,74,75],{},"saved dashboard webhooks store bounded retry state and delivery history",[27,77,78],{},"saved dashboard webhooks can use generic JSON, Discord embed, or Slack-compatible payloads",[19,80,82],{"id":81},"payload-shape","Payload Shape",[15,84,85],{},"Completed job example:",[87,88,93],"pre",{"className":89,"code":90,"language":91,"meta":92,"style":92},"language-json shiki shiki-themes github-light github-dark","{\n  \"event\": \"job.completed\",\n  \"timestamp\": \"2026-03-22T12:00:00Z\",\n  \"data\": {\n    \"job_id\": \"uuid\",\n    \"status\": \"completed\",\n    \"video_id\": \"dQw4w9WgXcQ\",\n    \"video_info\": {\n      \"title\": \"Example title\"\n    },\n    \"summaries\": {\n      \"tldr\": {\n        \"content\": \"Summary text\"\n      }\n    },\n    \"processing_time\": 8.2,\n    \"content_url\": \"https:\u002F\u002F...\"\n  }\n}\n","json","",[30,94,95,104,121,134,143,156,169,182,190,201,207,215,223,234,240,245,258,269,275],{"__ignoreMap":92},[96,97,100],"span",{"class":98,"line":99},"line",1,[96,101,103],{"class":102},"sVt8B","{\n",[96,105,107,111,114,118],{"class":98,"line":106},2,[96,108,110],{"class":109},"sj4cs","  \"event\"",[96,112,113],{"class":102},": ",[96,115,117],{"class":116},"sZZnC","\"job.completed\"",[96,119,120],{"class":102},",\n",[96,122,124,127,129,132],{"class":98,"line":123},3,[96,125,126],{"class":109},"  \"timestamp\"",[96,128,113],{"class":102},[96,130,131],{"class":116},"\"2026-03-22T12:00:00Z\"",[96,133,120],{"class":102},[96,135,137,140],{"class":98,"line":136},4,[96,138,139],{"class":109},"  \"data\"",[96,141,142],{"class":102},": {\n",[96,144,146,149,151,154],{"class":98,"line":145},5,[96,147,148],{"class":109},"    \"job_id\"",[96,150,113],{"class":102},[96,152,153],{"class":116},"\"uuid\"",[96,155,120],{"class":102},[96,157,159,162,164,167],{"class":98,"line":158},6,[96,160,161],{"class":109},"    \"status\"",[96,163,113],{"class":102},[96,165,166],{"class":116},"\"completed\"",[96,168,120],{"class":102},[96,170,172,175,177,180],{"class":98,"line":171},7,[96,173,174],{"class":109},"    \"video_id\"",[96,176,113],{"class":102},[96,178,179],{"class":116},"\"dQw4w9WgXcQ\"",[96,181,120],{"class":102},[96,183,185,188],{"class":98,"line":184},8,[96,186,187],{"class":109},"    \"video_info\"",[96,189,142],{"class":102},[96,191,193,196,198],{"class":98,"line":192},9,[96,194,195],{"class":109},"      \"title\"",[96,197,113],{"class":102},[96,199,200],{"class":116},"\"Example title\"\n",[96,202,204],{"class":98,"line":203},10,[96,205,206],{"class":102},"    },\n",[96,208,210,213],{"class":98,"line":209},11,[96,211,212],{"class":109},"    \"summaries\"",[96,214,142],{"class":102},[96,216,218,221],{"class":98,"line":217},12,[96,219,220],{"class":109},"      \"tldr\"",[96,222,142],{"class":102},[96,224,226,229,231],{"class":98,"line":225},13,[96,227,228],{"class":109},"        \"content\"",[96,230,113],{"class":102},[96,232,233],{"class":116},"\"Summary text\"\n",[96,235,237],{"class":98,"line":236},14,[96,238,239],{"class":102},"      }\n",[96,241,243],{"class":98,"line":242},15,[96,244,206],{"class":102},[96,246,248,251,253,256],{"class":98,"line":247},16,[96,249,250],{"class":109},"    \"processing_time\"",[96,252,113],{"class":102},[96,254,255],{"class":109},"8.2",[96,257,120],{"class":102},[96,259,261,264,266],{"class":98,"line":260},17,[96,262,263],{"class":109},"    \"content_url\"",[96,265,113],{"class":102},[96,267,268],{"class":116},"\"https:\u002F\u002F...\"\n",[96,270,272],{"class":98,"line":271},18,[96,273,274],{"class":102},"  }\n",[96,276,278],{"class":98,"line":277},19,[96,279,280],{"class":102},"}\n",[15,282,283],{},"Failed job example:",[87,285,287],{"className":89,"code":286,"language":91,"meta":92,"style":92},"{\n  \"event\": \"job.failed\",\n  \"timestamp\": \"2026-03-22T12:00:00Z\",\n  \"data\": {\n    \"job_id\": \"uuid\",\n    \"status\": \"failed\",\n    \"video_id\": \"dQw4w9WgXcQ\",\n    \"error\": \"Processing failure message\"\n  }\n}\n",[30,288,289,293,304,314,320,330,341,351,361,365],{"__ignoreMap":92},[96,290,291],{"class":98,"line":99},[96,292,103],{"class":102},[96,294,295,297,299,302],{"class":98,"line":106},[96,296,110],{"class":109},[96,298,113],{"class":102},[96,300,301],{"class":116},"\"job.failed\"",[96,303,120],{"class":102},[96,305,306,308,310,312],{"class":98,"line":123},[96,307,126],{"class":109},[96,309,113],{"class":102},[96,311,131],{"class":116},[96,313,120],{"class":102},[96,315,316,318],{"class":98,"line":136},[96,317,139],{"class":109},[96,319,142],{"class":102},[96,321,322,324,326,328],{"class":98,"line":145},[96,323,148],{"class":109},[96,325,113],{"class":102},[96,327,153],{"class":116},[96,329,120],{"class":102},[96,331,332,334,336,339],{"class":98,"line":158},[96,333,161],{"class":109},[96,335,113],{"class":102},[96,337,338],{"class":116},"\"failed\"",[96,340,120],{"class":102},[96,342,343,345,347,349],{"class":98,"line":171},[96,344,174],{"class":109},[96,346,113],{"class":102},[96,348,179],{"class":116},[96,350,120],{"class":102},[96,352,353,356,358],{"class":98,"line":184},[96,354,355],{"class":109},"    \"error\"",[96,357,113],{"class":102},[96,359,360],{"class":116},"\"Processing failure message\"\n",[96,362,363],{"class":98,"line":192},[96,364,274],{"class":102},[96,366,367],{"class":98,"line":203},[96,368,280],{"class":102},[19,370,372],{"id":371},"signatures","Signatures",[15,374,375,376,379,380,383],{},"The public ",[30,377,378],{},"webhook_url"," request field does not expose webhook-secret configuration. Saved dashboard webhook destinations support an optional signing secret and send ",[30,381,382],{},"X-Webhook-Signature"," when configured.",[385,386,387],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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 .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);}",{"title":92,"searchDepth":106,"depth":106,"links":389},[390,391,392,393],{"id":21,"depth":106,"text":22},{"id":57,"depth":106,"text":58},{"id":81,"depth":106,"text":82},{"id":371,"depth":106,"text":372},"2025-01-20","Current outbound job-completion notifications",false,"md",null,{},true,"\u002Fapi\u002Fwebhooks","TechArticle",{"title":5,"description":395},"api\u002Fwebhooks",[406,407,408],"api","integration","workflows","2026-04-20","jfYszYtFzvEh-GCv76aXDhyjsXe6VCZcSxpb69GeElk",1792448456892]