[{"data":1,"prerenderedAt":4188},["ShallowReactive",2],{"navigation":3,"page:\u002Fgetting-started\u002Fenvelope":1019,"surround:\u002Fgetting-started\u002Fenvelope":4180},[4,21,82,133,154,1010],[5,6,7,8],"Getting started","\u002Fgetting-started","i-lucide-rocket",[9,12,15,18],[10,6,11,11],"What Kaabist is",0,[13,14,11,11],"API keys and modes","keys-and-modes",[16,17,11,11],"Your first job","first-job",[19,20,11,11],"Understanding the envelope","envelope",[22,23,24,25],"Concepts","\u002Fconcepts","i-lucide-book-open",[26,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79],[27,23,11,11],"Overview",[29,30,11,11],"Programs and versions","programs-and-versions",[32,33,11,11],"Tiers and escalation","tiers-and-escalation",[35,36,11,11],"The http tier","http-tier",[38,39,11,11],"The browser tier","browser-tier",[41,42,11,11],"Sessions","sessions",[44,45,11,11],"Human in the loop","human-in-the-loop",[47,48,11,11],"How healing works","self-healing",[50,51,11,11],"Obstacles and captchas","obstacles",[53,54,11,11],"Validation and warnings","validation-and-warnings",[56,57,11,11],"Credits and billing","credits-and-billing",[59,60,11,11],"Limits","limits",[62,63,11,11],"Locators","locators",[65,66,11,11],"Snapshots","snapshots",[68,69,11,11],"Egress and proxies","egress-and-proxies",[71,72,11,11],"Queueing and fairness","queueing",[74,75,11,11],"Accounts, organisations and roles","accounts-and-roles",[77,78,11,11],"Data retention","data-retention",[80,81,11,11],"Documents and PDFs","documents-and-pdfs",[83,84,85,86],"Guides","\u002Fguides","i-lucide-map",[87,88,91,94,97,100,103,106,109,112,115,118,121,124,127,130],[27,84,11,11],[89,90,11,11],"Authenticated flows","authenticated-flows",[92,93,11,11],"Hosted resolve pages","hosted-resolve",[95,96,11,11],"Lists and pagination","lists-and-pagination",[98,99,11,11],"JSON and network locators","json-and-network-locators",[101,102,11,11],"Schedules and change detection","schedules-and-change-detection",[104,105,11,11],"Webhooks","webhooks",[107,108,11,11],"Bring your own providers","byo-providers",[110,111,11,11],"Testing: replay, dry-run and test mode","testing",[113,114,11,11],"Side-effect safety","side-effect-safety",[116,117,11,11],"Security & data handling","security-and-data",[119,120,11,11],"Migrating from other tools","migrating",[122,123,11,11],"Drift detection and canaries","drift-and-canaries",[125,126,11,11],"SDKs","sdks",[128,129,11,11],"The kaab CLI","cli",[131,132,11,11],"Coding agents (MCP)","mcp",[134,135,136,137],"Panel","\u002Fpanel","i-lucide-layout-dashboard",[138,139,142,145,148,151],[27,135,11,11],[140,141,11,11],"The program builder","builder",[143,144,11,11],"Picking and recording","picking-and-recording",[146,147,11,11],"Taking over a job","takeover",[149,150,11,11],"Getting help","support",[152,153,11,11],"Referrals","referrals",[155,156,157,158],"Reference","\u002Freference","i-lucide-library",[159,160,520,834,837,840,1006,1007],[27,156,11,11],[161,162,11,163],"API","api",[164,166,169,212,222,274,297,316,347,376,389,396,403,410,426,447,454],[27,165,11,11],"\u002Freference\u002Fapi",[167,168,11,11],"Interactive reference","explorer",[170,171,11,172],"Jobs","jobs",[173,176,179,182,185,188,191,194,197,200,203,206,209],[174,175,11,11],"Create job","create-job",[177,178,11,11],"List jobs","list-jobs",[180,181,11,11],"Create job batch","create-job-batch",[183,184,11,11],"Estimate job","estimate-job",[186,187,11,11],"Get job","get-job",[189,190,11,11],"List job steps","list-job-steps",[192,193,11,11],"Get job snapshot","get-job-snapshot",[195,196,11,11],"Get job screenshot","get-job-screenshot",[198,199,11,11],"Get job artifact","get-job-artifact",[201,202,11,11],"Submit job input","submit-job-input",[204,205,11,11],"Resume job","resume-job",[207,208,11,11],"Takeover job","takeover-job",[210,211,11,11],"Cancel job","cancel-job",[213,214,11,215],"Batches","batches",[216,219],[217,218,11,11],"Get batch","get-batch",[220,221,11,11],"List batch jobs","list-batch-jobs",[223,224,11,225],"Programs","programs",[226,229,232,235,238,241,244,247,250,253,256,259,262,265,268,271],[227,228,11,11],"Create program","create-program",[230,231,11,11],"List programs","list-programs",[233,234,11,11],"Lint program","lint-program",[236,237,11,11],"Get program","get-program",[239,240,11,11],"Update program","update-program",[242,243,11,11],"Delete program","delete-program",[245,246,11,11],"List program versions","list-program-versions",[248,249,11,11],"Create program version","create-program-version",[251,252,11,11],"Update program version","update-program-version",[254,255,11,11],"Delete program version","delete-program-version",[257,258,11,11],"Get program version","get-program-version",[260,261,11,11],"Publish program version","publish-program-version",[263,264,11,11],"Diff program version","diff-program-version",[266,267,11,11],"Replay program version","replay-program-version",[269,270,11,11],"Set program alias","set-program-alias",[272,273,11,11],"Delete program alias","delete-program-alias",[41,42,11,275],[276,279,282,285,288,291,294],[277,278,11,11],"Create session","create-session",[280,281,11,11],"List sessions","list-sessions",[283,284,11,11],"Get session","get-session",[286,287,11,11],"Update session","update-session",[289,290,11,11],"Delete session","delete-session",[292,293,11,11],"Verify session","verify-session",[295,296,11,11],"Refresh session","refresh-session",[298,299,11,300],"Proposals","proposals",[301,304,307,310,313],[302,303,11,11],"List proposals","list-proposals",[305,306,11,11],"Get proposal","get-proposal",[308,309,11,11],"Approve proposal","approve-proposal",[311,312,11,11],"Reject proposal","reject-proposal",[314,315,11,11],"Edit proposal","edit-proposal",[317,318,11,319],"Schedules","schedules",[320,323,326,329,332,335,338,341,344],[321,322,11,11],"Create schedule","create-schedule",[324,325,11,11],"List schedules","list-schedules",[327,328,11,11],"Get schedule","get-schedule",[330,331,11,11],"Update schedule","update-schedule",[333,334,11,11],"Delete schedule","delete-schedule",[336,337,11,11],"Pause schedule","pause-schedule",[339,340,11,11],"Resume schedule","resume-schedule",[342,343,11,11],"List schedule runs","list-schedule-runs",[345,346,11,11],"Get schedule run diff","get-schedule-run-diff",[104,105,11,348],[349,352,355,358,361,364,367,370,373],[350,351,11,11],"Create webhook","create-webhook",[353,354,11,11],"List webhooks","list-webhooks",[356,357,11,11],"Get webhook","get-webhook",[359,360,11,11],"Update webhook","update-webhook",[362,363,11,11],"Delete webhook","delete-webhook",[365,366,11,11],"Rotate webhook secret","rotate-webhook-secret",[368,369,11,11],"List webhook deliveries","list-webhook-deliveries",[371,372,11,11],"Resend webhook delivery","resend-webhook-delivery",[374,375,11,11],"Test webhook","test-webhook",[377,378,11,379],"Organisation","org",[380,383,386],[381,382,11,11],"Rotate org webhook secret","rotate-org-webhook-secret",[384,385,11,11],"Get org","get-org",[387,388,11,11],"Request data deletion","request-data-deletion",[390,391,11,392],"Credits","credits",[393],[394,395,11,11],"Get credits","get-credits",[397,398,11,399],"Ledger","ledger",[400],[401,402,11,11],"List ledger entries","list-ledger-entries",[404,405,11,406],"Usage","usage",[407],[408,409,11,11],"Get usage","get-usage",[411,412,11,413],"API keys","api-keys",[414,417,420,423],[415,416,11,11],"List API keys","list-api-keys",[418,419,11,11],"Create API key","create-api-key",[421,422,11,11],"Rotate API key","rotate-api-key",[424,425,11,11],"Revoke API key","revoke-api-key",[427,108,11,428],"BYO providers",[429,432,435,438,441,444],[430,431,11,11],"List BYO providers","list-byo-providers",[433,434,11,11],"Create BYO provider","create-byo-provider",[436,437,11,11],"Get BYO provider","get-byo-provider",[439,440,11,11],"Update BYO provider","update-byo-provider",[442,443,11,11],"Delete BYO provider","delete-byo-provider",[445,446,11,11],"Test BYO provider","test-byo-provider",[448,449,11,450],"Sites","sites",[451],[452,453,11,11],"Get site profile","get-site-profile",[455,456,11,457],"Objects","schemas",[458,460,463,466,469,470,473,476,479,482,485,487,490,493,496,499,502,505,508,511,514,517],[27,459,11,11],"\u002Freference\u002Fapi\u002Fschemas",[461,462,11,11],"ApiKey","api-key",[464,465,11,11],"Batch","batch",[467,468,11,11],"ByoProvider","byo-provider",[390,391,11,11],[471,472,11,11],"ErrorResponse","error-response",[474,475,11,11],"ExtractSchema","extract-schema",[477,478,11,11],"Job","job",[480,481,11,11],"LedgerEntry","ledger-entry",[483,484,11,11],"LintResult","lint-result",[486,378,11,11],"Org",[488,489,11,11],"Program","program",[491,492,11,11],"ProgramDefinition","program-definition",[494,495,11,11],"ProgramVersion","program-version",[497,498,11,11],"Proposal","proposal",[500,501,11,11],"Schedule","schedule",[503,504,11,11],"Session","session",[506,507,11,11],"SiteProfile","site-profile",[509,510,11,11],"StepRecord","step-record",[512,513,11,11],"Webhook","webhook",[515,516,11,11],"WebhookDelivery","webhook-delivery",[518,519,11,11],"WebhookEvent","webhook-event",[521,522,11,523],"DSL","dsl",[524,526,529,532,535,538,603,637,640,751,754,756],[27,525,11,11],"\u002Freference\u002Fdsl",[527,528,11,11],"Inputs","inputs",[530,531,11,11],"Options","options",[533,534,11,11],"Policies","policies",[536,537,11,11],"Steps","steps",[539,540,11,541],"Actions","actions",[542,544,546,548,550,552,554,556,558,560,562,565,568,570,573,575,577,579,582,585,587,589,591,594,596,598,600],[27,543,11,11],"\u002Freference\u002Fdsl\u002Factions",[545,545,11,11],"fill",[547,547,11,11],"click",[549,549,11,11],"press",[551,551,11,11],"hover",[553,553,11,11],"select",[555,555,11,11],"check",[557,557,11,11],"uncheck",[559,559,11,11],"upload",[561,561,11,11],"scroll",[563,564,11,11],"wait_for","wait-for",[566,567,11,11],"set_session","set-session",[569,569,11,11],"extract",[571,572,11,11],"capture_response","capture-response",[574,574,11,11],"evaluate",[576,576,11,11],"paginate",[578,578,11,11],"download",[580,581,11,11],"read_pdf","read-pdf",[583,584,11,11],"set_vars","set-vars",[586,586,11,11],"sleep",[588,588,11,11],"reload",[590,590,11,11],"goto",[592,593,11,11],"await_input","await-input",[595,595,11,11],"checkpoint",[597,597,11,11],"screenshot",[599,599,11,11],"when",[601,602,11,11],"loop_until","loop-until",[604,605,11,606],"Conditions","conditions",[607,609,611,613,615,617,619,621,623,625,627,629,631,633,635],[27,608,11,11],"\u002Freference\u002Fdsl\u002Fconditions",[610,610,11,11],"url",[612,612,11,11],"title",[614,614,11,11],"visible",[616,616,11,11],"hidden",[618,618,11,11],"exists",[620,620,11,11],"absent",[622,622,11,11],"text",[624,624,11,11],"count",[626,626,11,11],"network",[628,628,11,11],"var",[630,630,11,11],"landmark",[632,632,11,11],"all",[634,634,11,11],"any",[636,636,11,11],"not",[638,639,11,11],"Targets","targets",[641,642,11,643],"Fields","fields",[644,646,649,651,654,656,659,661,663,666,668,671,672,674,677,679,681,683,685,687,690,693,695,698,701,703,704,707,709,712,714,716,718,720,722,724,726,728,731,733,734,736,738,740,743,745,747,749],[27,645,11,11],"\u002Freference\u002Fdsl\u002Ffields",[647,648,11,11],"allow_suffix","allow-suffix",[650,650,11,11],"attr",[652,653,11,11],"base_url","base-url",[655,655,11,11],"candidates",[657,658,11,11],"case_insensitive","case-insensitive",[660,660,11,11],"country",[662,662,11,11],"currency",[664,665,11,11],"date_format","date-format",[667,667,11,11],"decimal",[669,670,11,11],"false_values","false-values",[642,642,11,11],[673,673,11,11],"flags",[675,676,11,11],"follow_redirects","follow-redirects",[678,678,11,11],"frame",[680,680,11,11],"json",[682,682,11,11],"locale",[684,684,11,11],"many",[686,686,11,11],"max",[688,689,11,11],"max_items","max-items",[691,692,11,11],"max_length","max-length",[694,694,11,11],"min",[696,697,11,11],"min_items","min-items",[699,700,11,11],"min_length","min-length",[702,702,11,11],"name",[626,626,11,11],[705,706,11,11],"null_markers","null-markers",[708,708,11,11],"nullable",[710,711,11,11],"on_invalid","on-invalid",[713,713,11,11],"pattern",[715,715,11,11],"presence",[717,717,11,11],"regex",[719,719,11,11],"required",[721,721,11,11],"role",[723,723,11,11],"sample",[725,725,11,11],"selector",[727,727,11,11],"source",[729,730,11,11],"strip_fragment","strip-fragment",[732,732,11,11],"testid",[622,622,11,11],[735,735,11,11],"thousands",[737,737,11,11],"timezone",[739,739,11,11],"transforms",[741,742,11,11],"true_values","true-values",[744,744,11,11],"type",[746,746,11,11],"unique",[748,748,11,11],"values",[750,750,11,11],"xpath",[752,753,11,11],"Assertions","assertions",[755,739,11,11],"Transforms",[757,758,11,759],"Lint codes","lint",[760,762,765,768,771,774,777,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831],[27,761,11,11],"\u002Freference\u002Fdsl\u002Flint",[763,764,11,11],"E001","e001",[766,767,11,11],"E002","e002",[769,770,11,11],"E003","e003",[772,773,11,11],"E004","e004",[775,776,11,11],"E005","e005",[778,779,11,11],"E006","e006",[781,782,11,11],"E007","e007",[784,785,11,11],"E008","e008",[787,788,11,11],"E009","e009",[790,791,11,11],"E010","e010",[793,794,11,11],"E011","e011",[796,797,11,11],"E012","e012",[799,800,11,11],"E013","e013",[802,803,11,11],"E014","e014",[805,806,11,11],"W001","w001",[808,809,11,11],"W002","w002",[811,812,11,11],"W003","w003",[814,815,11,11],"W004","w004",[817,818,11,11],"W005","w005",[820,821,11,11],"W006","w006",[823,824,11,11],"W007","w007",[826,827,11,11],"W008","w008",[829,830,11,11],"W009","w009",[832,833,11,11],"W010","w010",[835,836,11,11],"Codes","codes",[838,839,11,11],"Events","events",[841,129,11,842],"CLI",[843,845,847,850,853,856,859,862,865,868,871,874,877,880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003],[27,844,11,11],"\u002Freference\u002Fcli",[846,846,11,11],"kaab",[848,849,11,11],"kaab auth","kaab-auth",[851,852,11,11],"kaab auth login","kaab-auth-login",[854,855,11,11],"kaab auth logout","kaab-auth-logout",[857,858,11,11],"kaab auth status","kaab-auth-status",[860,861,11,11],"kaab completion","kaab-completion",[863,864,11,11],"kaab completion bash","kaab-completion-bash",[866,867,11,11],"kaab completion fish","kaab-completion-fish",[869,870,11,11],"kaab completion powershell","kaab-completion-powershell",[872,873,11,11],"kaab completion zsh","kaab-completion-zsh",[875,876,11,11],"kaab credits","kaab-credits",[878,879,11,11],"kaab jobs","kaab-jobs",[881,882,11,11],"kaab jobs cancel","kaab-jobs-cancel",[884,885,11,11],"kaab jobs get","kaab-jobs-get",[887,888,11,11],"kaab jobs input","kaab-jobs-input",[890,891,11,11],"kaab jobs list","kaab-jobs-list",[893,894,11,11],"kaab jobs resume","kaab-jobs-resume",[896,897,11,11],"kaab jobs run","kaab-jobs-run",[899,900,11,11],"kaab jobs snapshot","kaab-jobs-snapshot",[902,903,11,11],"kaab jobs steps","kaab-jobs-steps",[905,906,11,11],"kaab jobs takeover","kaab-jobs-takeover",[908,909,11,11],"kaab open","kaab-open",[911,912,11,11],"kaab open job","kaab-open-job",[914,915,11,11],"kaab programs","kaab-programs",[917,918,11,11],"kaab programs alias","kaab-programs-alias",[920,921,11,11],"kaab programs alias set","kaab-programs-alias-set",[923,924,11,11],"kaab programs diff","kaab-programs-diff",[926,927,11,11],"kaab programs lint","kaab-programs-lint",[929,930,11,11],"kaab programs list","kaab-programs-list",[932,933,11,11],"kaab programs pull","kaab-programs-pull",[935,936,11,11],"kaab programs push","kaab-programs-push",[938,939,11,11],"kaab proposals","kaab-proposals",[941,942,11,11],"kaab proposals approve","kaab-proposals-approve",[944,945,11,11],"kaab proposals list","kaab-proposals-list",[947,948,11,11],"kaab proposals reject","kaab-proposals-reject",[950,951,11,11],"kaab proposals show","kaab-proposals-show",[953,954,11,11],"kaab schedules","kaab-schedules",[956,957,11,11],"kaab schedules create","kaab-schedules-create",[959,960,11,11],"kaab schedules list","kaab-schedules-list",[962,963,11,11],"kaab schedules pause","kaab-schedules-pause",[965,966,11,11],"kaab schedules resume","kaab-schedules-resume",[968,969,11,11],"kaab schedules runs","kaab-schedules-runs",[971,972,11,11],"kaab sessions","kaab-sessions",[974,975,11,11],"kaab sessions create","kaab-sessions-create",[977,978,11,11],"kaab sessions delete","kaab-sessions-delete",[980,981,11,11],"kaab sessions list","kaab-sessions-list",[983,984,11,11],"kaab sessions verify","kaab-sessions-verify",[986,987,11,11],"kaab usage","kaab-usage",[989,990,11,11],"kaab version","kaab-version",[992,993,11,11],"kaab webhooks","kaab-webhooks",[995,996,11,11],"kaab webhooks create","kaab-webhooks-create",[998,999,11,11],"kaab webhooks deliveries","kaab-webhooks-deliveries",[1001,1002,11,11],"kaab webhooks list","kaab-webhooks-list",[1004,1005,11,11],"kaab webhooks test","kaab-webhooks-test",[125,126,11,11],[1008,1009,11,11],"Plans and pricing","plans",[1011,1012,1013,1014],"Changelog","\u002Fchangelog","i-lucide-history",[1015,1016],[27,1012,11,11],[1017,1018,11,11],"Deprecations","deprecations",{"id":1020,"title":19,"body":1021,"breaking":4170,"date":4171,"description":4172,"extension":4173,"generated":4170,"meta":4174,"navigation":4175,"path":4176,"seo":4177,"stem":4178,"version":4171,"__hash__":4179},"docs\u002F1.getting-started\u002F04.envelope.md",{"type":1022,"value":1023,"toc":4153},"minimark",[1024,1036,1041,1059,1063,1069,1136,1173,1236,1286,1289,1329,1333,1620,1625,1763,1787,1792,1797,2007,2011,2021,2070,2081,2085,2091,2169,2183,2187,2209,2213,2248,2252,2262,2271,2344,2350,2409,2422,2582,2596,2602,2830,2836,3015,3021,3136,3148,3152,3176,3180,3211,3755,3967,3988,3992,4084,4087,4149],[1025,1026,1027,1028,1032,1033,1035],"p",{},"Every read of a job returns one envelope, and which of its keys are filled in depends on ",[1029,1030,1031],"code",{},"status",". A client switches on ",[1029,1034,1031],{}," and finds everything it needs in the same object, without asking a second endpoint what happened.",[1037,1038,1040],"h2",{"id":1039},"when-to-use-it","When to use it",[1025,1042,1043,1044,1047,1048,1047,1051,1054,1055,1058],{},"Read this page before you handle job results in code: it is the contract between Kaabist and your client. If you only need the final data, an SDK's wait helper (at the end of this page) gives you a finished or parked job and you read ",[1029,1045,1046],{},"data",", ",[1029,1049,1050],{},"error",[1029,1052,1053],{},"input_request"," or ",[1029,1056,1057],{},"attention"," from it.",[1037,1060,1062],{"id":1061},"creating-a-job","Creating a job",[1025,1064,1065,1068],{},[1029,1066,1067],{},"POST \u002Fv1\u002Fjobs"," takes exactly one of three forms:",[1070,1071,1075],"pre",{"className":1072,"code":1073,"language":680,"meta":1074,"style":1074},"language-json shiki shiki-themes kaab-code kaab-code kaab-code","{ \"program\": \"acme-report@production\", \"inputs\": { \"report_id\": \"42\" }, \"tags\": [\"customer:42\"] }\n","",[1029,1076,1077],{"__ignoreMap":1074},[1078,1079,1082,1086,1090,1094,1098,1101,1104,1106,1109,1112,1114,1117,1120,1122,1125,1127,1130,1133],"span",{"class":1080,"line":1081},"line",1,[1078,1083,1085],{"class":1084},"sTzsn","{ ",[1078,1087,1089],{"class":1088},"sqn18","\"program\"",[1078,1091,1093],{"class":1092},"sQm2-",":",[1078,1095,1097],{"class":1096},"suOy4"," \"acme-report@production\"",[1078,1099,1100],{"class":1092},",",[1078,1102,1103],{"class":1088}," \"inputs\"",[1078,1105,1093],{"class":1092},[1078,1107,1108],{"class":1084}," { ",[1078,1110,1111],{"class":1088},"\"report_id\"",[1078,1113,1093],{"class":1092},[1078,1115,1116],{"class":1096}," \"42\"",[1078,1118,1119],{"class":1084}," }",[1078,1121,1100],{"class":1092},[1078,1123,1124],{"class":1088}," \"tags\"",[1078,1126,1093],{"class":1092},[1078,1128,1129],{"class":1084}," [",[1078,1131,1132],{"class":1096},"\"customer:42\"",[1078,1134,1135],{"class":1084},"] }\n",[1070,1137,1139],{"className":1072,"code":1138,"language":680,"meta":1074,"style":1074},"{ \"url\": \"https:\u002F\u002Fshop.example.com\u002Fp\u002F1\", \"extract\": { \"title\": \"h1\" } }\n",[1029,1140,1141],{"__ignoreMap":1074},[1078,1142,1143,1145,1148,1150,1153,1155,1158,1160,1162,1165,1167,1170],{"class":1080,"line":1081},[1078,1144,1085],{"class":1084},[1078,1146,1147],{"class":1088},"\"url\"",[1078,1149,1093],{"class":1092},[1078,1151,1152],{"class":1096}," \"https:\u002F\u002Fshop.example.com\u002Fp\u002F1\"",[1078,1154,1100],{"class":1092},[1078,1156,1157],{"class":1088}," \"extract\"",[1078,1159,1093],{"class":1092},[1078,1161,1108],{"class":1084},[1078,1163,1164],{"class":1088},"\"title\"",[1078,1166,1093],{"class":1092},[1078,1168,1169],{"class":1096}," \"h1\"",[1078,1171,1172],{"class":1084}," } }\n",[1070,1174,1176],{"className":1072,"code":1175,"language":680,"meta":1074,"style":1074},"{ \"definition\": { \"kaab\": \"1\", \"steps\": [ { \"goto\": \"https:\u002F\u002Fshop.example.com\u002Fp\u002F1\" }, { \"extract\": { \"title\": \"h1\" } } ] } }\n",[1029,1177,1178],{"__ignoreMap":1074},[1078,1179,1180,1182,1185,1187,1189,1192,1194,1197,1199,1202,1204,1207,1210,1212,1214,1216,1218,1220,1223,1225,1227,1229,1231,1233],{"class":1080,"line":1081},[1078,1181,1085],{"class":1084},[1078,1183,1184],{"class":1088},"\"definition\"",[1078,1186,1093],{"class":1092},[1078,1188,1108],{"class":1084},[1078,1190,1191],{"class":1088},"\"kaab\"",[1078,1193,1093],{"class":1092},[1078,1195,1196],{"class":1096}," \"1\"",[1078,1198,1100],{"class":1092},[1078,1200,1201],{"class":1088}," \"steps\"",[1078,1203,1093],{"class":1092},[1078,1205,1206],{"class":1084}," [ { ",[1078,1208,1209],{"class":1088},"\"goto\"",[1078,1211,1093],{"class":1092},[1078,1213,1152],{"class":1096},[1078,1215,1119],{"class":1084},[1078,1217,1100],{"class":1092},[1078,1219,1108],{"class":1084},[1078,1221,1222],{"class":1088},"\"extract\"",[1078,1224,1093],{"class":1092},[1078,1226,1108],{"class":1084},[1078,1228,1164],{"class":1088},[1078,1230,1093],{"class":1092},[1078,1232,1169],{"class":1096},[1078,1234,1235],{"class":1084}," } } ] } }\n",[1025,1237,1238,1239,1047,1241,1047,1244,1047,1247,1054,1250,1253,1254,1257,1258,1261,1262,1265,1266,1047,1268,1047,1270,1047,1272,1047,1275,1047,1278,1281,1282,1285],{},"The first runs a stored program by reference (",[1029,1240,702],{},[1029,1242,1243],{},"name@3",[1029,1245,1246],{},"name@production",[1029,1248,1249],{},"prg_…",[1029,1251,1252],{},"pv_…","). The second is the shorthand: it compiles to a two-step program at request time. The third sends a whole program inline without storing it. All three are linted, run and billed the same way, and all three answer ",[1029,1255,1256],{},"202"," with the envelope, or ",[1029,1259,1260],{},"200"," with a finished one when you send ",[1029,1263,1264],{},"Prefer: wait",". Every form also takes ",[1029,1267,504],{},[1029,1269,531],{},[1029,1271,534],{},[1029,1273,1274],{},"webhook_url",[1029,1276,1277],{},"tags",[1029,1279,1280],{},"dry_run"," and ",[1029,1283,1284],{},"cache",".",[1025,1287,1288],{},"Two neighbours take the same body:",[1290,1291,1292,1303],"ul",{},[1293,1294,1295,1298,1299,1302],"li",{},[1029,1296,1297],{},"POST \u002Fv1\u002Fjobs\u002Festimate"," validates it and answers ",[1029,1300,1301],{},"{ credits_min, credits_max, tier_expected, cache }"," without creating anything.",[1293,1304,1305,1308,1309,1311,1312,1314,1315,1317,1318,1321,1322,1054,1324,1281,1326,1328],{},[1029,1306,1307],{},"POST \u002Fv1\u002Fjobs\u002Fbatch"," takes one ",[1029,1310,489],{}," (or ",[1029,1313,610],{}," + ",[1029,1316,569],{},") and up to 1 000 ",[1029,1319,1320],{},"items",", each with its own ",[1029,1323,528],{},[1029,1325,610],{},[1029,1327,1277],{},". It is all or nothing: if one item does not validate, or the balance does not cover the batch, no job is created.",[1037,1330,1332],{"id":1331},"the-envelope","The envelope",[1070,1334,1336],{"className":1072,"code":1335,"language":680,"meta":1074,"style":1074},"{\n  \"id\": \"job_…\", \"object\": \"job\", \"mode\": \"live\",\n  \"status\": \"succeeded\", \"reason\": null,\n  \"program\": { \"id\": \"prg_…\", \"name\": \"acme-report\", \"version\": 3, \"version_id\": \"pv_…\" },\n  \"inputs_hash\": \"sha256:…\",\n  \"data\": {}, \"raw\": {}, \"warnings\": [],\n  \"meta\": {},\n  \"error\": null, \"input_request\": null, \"attention\": null, \"progress\": null,\n  \"tags\": [\"customer:42\"], \"webhook_url\": null,\n  \"created_at\": \"…\", \"started_at\": \"…\", \"finished_at\": \"…\", \"expires_at\": \"…\"\n}\n",[1029,1337,1338,1343,1377,1401,1453,1466,1498,1510,1549,1575,1614],{"__ignoreMap":1074},[1078,1339,1340],{"class":1080,"line":1081},[1078,1341,1342],{"class":1084},"{\n",[1078,1344,1346,1349,1351,1354,1356,1359,1361,1364,1366,1369,1371,1374],{"class":1080,"line":1345},2,[1078,1347,1348],{"class":1088},"  \"id\"",[1078,1350,1093],{"class":1092},[1078,1352,1353],{"class":1096}," \"job_…\"",[1078,1355,1100],{"class":1092},[1078,1357,1358],{"class":1088}," \"object\"",[1078,1360,1093],{"class":1092},[1078,1362,1363],{"class":1096}," \"job\"",[1078,1365,1100],{"class":1092},[1078,1367,1368],{"class":1088}," \"mode\"",[1078,1370,1093],{"class":1092},[1078,1372,1373],{"class":1096}," \"live\"",[1078,1375,1376],{"class":1092},",\n",[1078,1378,1380,1383,1385,1388,1390,1393,1395,1399],{"class":1080,"line":1379},3,[1078,1381,1382],{"class":1088},"  \"status\"",[1078,1384,1093],{"class":1092},[1078,1386,1387],{"class":1096}," \"succeeded\"",[1078,1389,1100],{"class":1092},[1078,1391,1392],{"class":1088}," \"reason\"",[1078,1394,1093],{"class":1092},[1078,1396,1398],{"class":1397},"sHJIl"," null",[1078,1400,1376],{"class":1092},[1078,1402,1404,1407,1409,1411,1414,1416,1419,1421,1424,1426,1429,1431,1434,1436,1439,1441,1444,1446,1449,1451],{"class":1080,"line":1403},4,[1078,1405,1406],{"class":1088},"  \"program\"",[1078,1408,1093],{"class":1092},[1078,1410,1108],{"class":1084},[1078,1412,1413],{"class":1088},"\"id\"",[1078,1415,1093],{"class":1092},[1078,1417,1418],{"class":1096}," \"prg_…\"",[1078,1420,1100],{"class":1092},[1078,1422,1423],{"class":1088}," \"name\"",[1078,1425,1093],{"class":1092},[1078,1427,1428],{"class":1096}," \"acme-report\"",[1078,1430,1100],{"class":1092},[1078,1432,1433],{"class":1088}," \"version\"",[1078,1435,1093],{"class":1092},[1078,1437,1438],{"class":1397}," 3",[1078,1440,1100],{"class":1092},[1078,1442,1443],{"class":1088}," \"version_id\"",[1078,1445,1093],{"class":1092},[1078,1447,1448],{"class":1096}," \"pv_…\"",[1078,1450,1119],{"class":1084},[1078,1452,1376],{"class":1092},[1078,1454,1456,1459,1461,1464],{"class":1080,"line":1455},5,[1078,1457,1458],{"class":1088},"  \"inputs_hash\"",[1078,1460,1093],{"class":1092},[1078,1462,1463],{"class":1096}," \"sha256:…\"",[1078,1465,1376],{"class":1092},[1078,1467,1469,1472,1474,1477,1479,1482,1484,1486,1488,1491,1493,1496],{"class":1080,"line":1468},6,[1078,1470,1471],{"class":1088},"  \"data\"",[1078,1473,1093],{"class":1092},[1078,1475,1476],{"class":1084}," {}",[1078,1478,1100],{"class":1092},[1078,1480,1481],{"class":1088}," \"raw\"",[1078,1483,1093],{"class":1092},[1078,1485,1476],{"class":1084},[1078,1487,1100],{"class":1092},[1078,1489,1490],{"class":1088}," \"warnings\"",[1078,1492,1093],{"class":1092},[1078,1494,1495],{"class":1084}," []",[1078,1497,1376],{"class":1092},[1078,1499,1501,1504,1506,1508],{"class":1080,"line":1500},7,[1078,1502,1503],{"class":1088},"  \"meta\"",[1078,1505,1093],{"class":1092},[1078,1507,1476],{"class":1084},[1078,1509,1376],{"class":1092},[1078,1511,1513,1516,1518,1520,1522,1525,1527,1529,1531,1534,1536,1538,1540,1543,1545,1547],{"class":1080,"line":1512},8,[1078,1514,1515],{"class":1088},"  \"error\"",[1078,1517,1093],{"class":1092},[1078,1519,1398],{"class":1397},[1078,1521,1100],{"class":1092},[1078,1523,1524],{"class":1088}," \"input_request\"",[1078,1526,1093],{"class":1092},[1078,1528,1398],{"class":1397},[1078,1530,1100],{"class":1092},[1078,1532,1533],{"class":1088}," \"attention\"",[1078,1535,1093],{"class":1092},[1078,1537,1398],{"class":1397},[1078,1539,1100],{"class":1092},[1078,1541,1542],{"class":1088}," \"progress\"",[1078,1544,1093],{"class":1092},[1078,1546,1398],{"class":1397},[1078,1548,1376],{"class":1092},[1078,1550,1552,1555,1557,1559,1561,1564,1566,1569,1571,1573],{"class":1080,"line":1551},9,[1078,1553,1554],{"class":1088},"  \"tags\"",[1078,1556,1093],{"class":1092},[1078,1558,1129],{"class":1084},[1078,1560,1132],{"class":1096},[1078,1562,1563],{"class":1084},"]",[1078,1565,1100],{"class":1092},[1078,1567,1568],{"class":1088}," \"webhook_url\"",[1078,1570,1093],{"class":1092},[1078,1572,1398],{"class":1397},[1078,1574,1376],{"class":1092},[1078,1576,1578,1581,1583,1586,1588,1591,1593,1595,1597,1600,1602,1604,1606,1609,1611],{"class":1080,"line":1577},10,[1078,1579,1580],{"class":1088},"  \"created_at\"",[1078,1582,1093],{"class":1092},[1078,1584,1585],{"class":1096}," \"…\"",[1078,1587,1100],{"class":1092},[1078,1589,1590],{"class":1088}," \"started_at\"",[1078,1592,1093],{"class":1092},[1078,1594,1585],{"class":1096},[1078,1596,1100],{"class":1092},[1078,1598,1599],{"class":1088}," \"finished_at\"",[1078,1601,1093],{"class":1092},[1078,1603,1585],{"class":1096},[1078,1605,1100],{"class":1092},[1078,1607,1608],{"class":1088}," \"expires_at\"",[1078,1610,1093],{"class":1092},[1078,1612,1613],{"class":1096}," \"…\"\n",[1078,1615,1617],{"class":1080,"line":1616},11,[1078,1618,1619],{"class":1084},"}\n",[1621,1622,1624],"h3",{"id":1623},"what-each-status-carries","What each status carries",[1626,1627,1628,1642],"table",{},[1629,1630,1631],"thead",{},[1632,1633,1634,1639],"tr",{},[1635,1636,1637],"th",{},[1029,1638,1031],{},[1635,1640,1641],{},"Carries",[1643,1644,1645,1667,1683,1697,1714,1734,1753],"tbody",{},[1632,1646,1647,1653],{},[1648,1649,1650],"td",{},[1029,1651,1652],{},"queued",[1648,1654,1655,1658,1659,1662,1663,1666],{},[1029,1656,1657],{},"meta.blocked_reason"," when Kaabist is holding it: ",[1029,1660,1661],{},"insufficient_credits"," (the organisation is out of credits) or ",[1029,1664,1665],{},"session_locked"," (another job holds its session)",[1632,1668,1669,1674],{},[1648,1670,1671],{},[1029,1672,1673],{},"running",[1648,1675,1676,1679,1680],{},[1029,1677,1678],{},"progress",": ",[1029,1681,1682],{},"{ step, of, checkpoint }",[1632,1684,1685,1690],{},[1648,1686,1687],{},[1029,1688,1689],{},"awaiting_input",[1648,1691,1692,1694,1695],{},[1029,1693,1053],{},": what it needs and where to send it; ",[1029,1696,1678],{},[1632,1698,1699,1704],{},[1648,1700,1701],{},[1029,1702,1703],{},"needs_attention",[1648,1705,1706,1281,1709,1711,1712],{},[1029,1707,1708],{},"reason",[1029,1710,1057],{},": why it stopped, evidence, proposals and the actions it accepts; ",[1029,1713,1678],{},[1632,1715,1716,1721],{},[1648,1717,1718],{},[1029,1719,1720],{},"succeeded",[1648,1722,1723,1047,1725,1047,1728,1047,1731],{},[1029,1724,1046],{},[1029,1726,1727],{},"raw",[1029,1729,1730],{},"warnings",[1029,1732,1733],{},"meta.steps",[1632,1735,1736,1741],{},[1648,1737,1738],{},[1029,1739,1740],{},"failed",[1648,1742,1743,1745,1746,1748,1749,1752],{},[1029,1744,1050],{},"; and partial ",[1029,1747,1046],{}," when ",[1029,1750,1751],{},"policies.strict"," is false and at least one extract ran",[1632,1754,1755,1760],{},[1648,1756,1757],{},[1029,1758,1759],{},"canceled",[1648,1761,1762],{},"timings and credits; nothing else",[1025,1764,1765,1281,1767,1769,1770,1281,1772,1774,1775,1779,1780,1047,1782,1281,1784,1786],{},[1029,1766,1652],{},[1029,1768,1673],{}," are on their way; ",[1029,1771,1689],{},[1029,1773,1703],{}," are ",[1776,1777,1778],"strong",{},"parked"," and wait for you; ",[1029,1781,1720],{},[1029,1783,1740],{},[1029,1785,1759],{}," are final.",[1621,1788,1790],{"id":1789},"meta",[1029,1791,1789],{},[1025,1793,1794,1796],{},[1029,1795,1789],{}," is how the run describes itself. It is present on every status, filled in as the job progresses:",[1626,1798,1799,1809],{},[1629,1800,1801],{},[1632,1802,1803,1806],{},[1635,1804,1805],{},"Key",[1635,1807,1808],{},"Meaning",[1643,1810,1811,1824,1837,1850,1865,1878,1891,1903,1916,1927,1950,1963,1975,1993],{},[1632,1812,1813,1821],{},[1648,1814,1815,1047,1818],{},[1029,1816,1817],{},"tier",[1029,1819,1820],{},"tier_requested",[1648,1822,1823],{},"the tier the job ran at, and the one it started at",[1632,1825,1826,1831],{},[1648,1827,1828],{},[1029,1829,1830],{},"escalations[]",[1648,1832,1833,1834],{},"every move up the ladder: ",[1029,1835,1836],{},"{ from, to, reason }",[1632,1838,1839,1847],{},[1648,1840,1841,1047,1844],{},[1029,1842,1843],{},"region",[1029,1845,1846],{},"final_url",[1648,1848,1849],{},"where it ran, and the URL the last page ended on",[1632,1851,1852,1856],{},[1648,1853,1854],{},[1029,1855,1284],{},[1648,1857,1858,1054,1861,1864],{},[1029,1859,1860],{},"hit",[1029,1862,1863],{},"miss"," for the shared cache",[1632,1866,1867,1875],{},[1648,1868,1869,1047,1872],{},[1029,1870,1871],{},"duration_ms",[1029,1873,1874],{},"parked_ms",[1648,1876,1877],{},"time running, and time parked (never billed)",[1632,1879,1880,1885],{},[1648,1881,1882],{},[1029,1883,1884],{},"proxy",[1648,1886,1887,1890],{},[1029,1888,1889],{},"{ mode, pool, country }"," the traffic used",[1632,1892,1893,1897],{},[1648,1894,1895],{},[1029,1896,504],{},[1648,1898,1899,1902],{},[1029,1900,1901],{},"{ id, name, saved }"," when a session was bound",[1632,1904,1905,1910],{},[1648,1906,1907],{},[1029,1908,1909],{},"assets",[1648,1911,1912,1913],{},"at a browser tier, what asset blocking refused: ",[1029,1914,1915],{},"{ blocked_requests, blocked_bytes_estimate }",[1632,1917,1918,1922],{},[1648,1919,1920],{},[1029,1921,391],{},[1648,1923,1924],{},[1029,1925,1926],{},"{ reserved, settled, breakdown: { compute, proxy, llm, captcha } }",[1632,1928,1929,1934],{},[1648,1930,1931],{},[1029,1932,1933],{},"steps[]",[1648,1935,1936,1937,1047,1940,1047,1943,1047,1945,1281,1947],{},"each step's ",[1029,1938,1939],{},"path",[1029,1941,1942],{},"action",[1029,1944,1031],{},[1029,1946,1871],{},[1029,1948,1949],{},"healed",[1632,1951,1952,1960],{},[1648,1953,1954,1047,1957],{},[1029,1955,1956],{},"snapshot",[1029,1958,1959],{},"artifacts",[1648,1961,1962],{},"links to the final snapshot and to files the job stored",[1632,1964,1965,1969],{},[1648,1966,1967],{},[1029,1968,1280],{},[1648,1970,1971,1974],{},[1029,1972,1973],{},"true"," on a job that stopped before its first side effect",[1632,1976,1977,1982],{},[1648,1978,1979],{},[1029,1980,1981],{},"resumed_from",[1648,1983,1984,1985,1047,1988,1054,1990],{},"on a resumed run: ",[1029,1986,1987],{},"page",[1029,1989,595],{},[1029,1991,1992],{},"replay",[1632,1994,1995,2000],{},[1648,1996,1997],{},[1029,1998,1999],{},"vars",[1648,2001,2002,2003,2006],{},"the program's variables, only when ",[1029,2004,2005],{},"policies.include_raw"," is true",[1621,2008,2009],{"id":1730},[1029,2010,1730],{},[1025,2012,2013,2016,2017,2020],{},[1029,2014,2015],{},"warnings[]"," says \"you got an answer, and here is what you should know about it\": a null marker parsed as empty, a list shorter than expected, a locator that had to be healed, a job that moved up a tier. Each is ",[1029,2018,2019],{},"{ code, field?, raw?, step?, message?, detail?, count?, of? }"," from a closed set of codes. A warning about every item of a list is aggregated onto the list instead of repeated:",[1070,2022,2024],{"className":1072,"code":2023,"language":680,"meta":1074,"style":1074},"{ \"code\": \"null_marker\", \"field\": \"products[].price\", \"count\": 3, \"of\": 40 }\n",[1029,2025,2026],{"__ignoreMap":1074},[1078,2027,2028,2030,2033,2035,2038,2040,2043,2045,2048,2050,2053,2055,2057,2059,2062,2064,2067],{"class":1080,"line":1081},[1078,2029,1085],{"class":1084},[1078,2031,2032],{"class":1088},"\"code\"",[1078,2034,1093],{"class":1092},[1078,2036,2037],{"class":1096}," \"null_marker\"",[1078,2039,1100],{"class":1092},[1078,2041,2042],{"class":1088}," \"field\"",[1078,2044,1093],{"class":1092},[1078,2046,2047],{"class":1096}," \"products[].price\"",[1078,2049,1100],{"class":1092},[1078,2051,2052],{"class":1088}," \"count\"",[1078,2054,1093],{"class":1092},[1078,2056,1438],{"class":1397},[1078,2058,1100],{"class":1092},[1078,2060,2061],{"class":1088}," \"of\"",[1078,2063,1093],{"class":1092},[1078,2065,2066],{"class":1397}," 40",[1078,2068,2069],{"class":1084}," }\n",[1025,2071,2072,2073,2076,2077,1285],{},"One warning is not about the job it is on. ",[1029,2074,2075],{},"fill_rate_drop"," is attached to every job of a program version whose recent runs show a field that has stopped filling; the data in this job may look fine, and there is probably a proposal waiting in your review queue. See ",[2078,2079,53],"a",{"href":2080},"\u002Fconcepts\u002Fvalidation-and-warnings",[1621,2082,2083],{"id":1050},[1029,2084,1050],{},[1025,2086,2087,2088,2090],{},"On a ",[1029,2089,1740],{}," job:",[1070,2092,2094],{"className":1072,"code":2093,"language":680,"meta":1074,"style":1074},"{ \"code\": \"blocked\", \"message\": \"challenge page after 3 attempts\", \"tier\": \"stealth\",\n  \"retryable\": true, \"step\": \"steps[2]\", \"snapshot\": \"\u002Fv1\u002Fjobs\u002Fjob_…\u002Fsnapshot\", \"details\": {} }\n",[1029,2095,2096,2129],{"__ignoreMap":1074},[1078,2097,2098,2100,2102,2104,2107,2109,2112,2114,2117,2119,2122,2124,2127],{"class":1080,"line":1081},[1078,2099,1085],{"class":1084},[1078,2101,2032],{"class":1088},[1078,2103,1093],{"class":1092},[1078,2105,2106],{"class":1096}," \"blocked\"",[1078,2108,1100],{"class":1092},[1078,2110,2111],{"class":1088}," \"message\"",[1078,2113,1093],{"class":1092},[1078,2115,2116],{"class":1096}," \"challenge page after 3 attempts\"",[1078,2118,1100],{"class":1092},[1078,2120,2121],{"class":1088}," \"tier\"",[1078,2123,1093],{"class":1092},[1078,2125,2126],{"class":1096}," \"stealth\"",[1078,2128,1376],{"class":1092},[1078,2130,2131,2134,2136,2139,2141,2144,2146,2149,2151,2154,2156,2159,2161,2164,2166],{"class":1080,"line":1345},[1078,2132,2133],{"class":1088},"  \"retryable\"",[1078,2135,1093],{"class":1092},[1078,2137,2138],{"class":1397}," true",[1078,2140,1100],{"class":1092},[1078,2142,2143],{"class":1088}," \"step\"",[1078,2145,1093],{"class":1092},[1078,2147,2148],{"class":1096}," \"steps[2]\"",[1078,2150,1100],{"class":1092},[1078,2152,2153],{"class":1088}," \"snapshot\"",[1078,2155,1093],{"class":1092},[1078,2157,2158],{"class":1096}," \"\u002Fv1\u002Fjobs\u002Fjob_…\u002Fsnapshot\"",[1078,2160,1100],{"class":1092},[1078,2162,2163],{"class":1088}," \"details\"",[1078,2165,1093],{"class":1092},[1078,2167,2168],{"class":1084}," {} }\n",[1025,2170,2171,2173,2174,2178,2179,2182],{},[1029,2172,1029],{}," is from the closed set of ",[2078,2175,2177],{"href":2176},"\u002Freference\u002Fcodes#errors","error codes","; ",[1029,2180,2181],{},"retryable"," says whether running the same job again could succeed.",[1621,2184,2185],{"id":1053},[1029,2186,1053],{},[1025,2188,2189,2190,2192,2193,2196,2197,2200,2201,2204,2205,2208],{},"On an ",[1029,2191,1689],{}," job: ",[1029,2194,2195],{},"{ name, prompt, type, pattern, keep_alive_until, expires_at, collect, screenshot, resolve_url }",". Answer it with ",[1029,2198,2199],{},"POST \u002Fv1\u002Fjobs\u002F{id}\u002Finput"," before ",[1029,2202,2203],{},"expires_at",". ",[1029,2206,2207],{},"resolve_url"," is set when the step collects the value on a hosted page.",[1621,2210,2211],{"id":1057},[1029,2212,1057],{},[1025,2214,2087,2215,2192,2217,2204,2220,2222,2223,1047,2226,1047,2229,1047,2232,1047,2235,1281,2238,2241,2242,2244,2245,1285],{},[1029,2216,1703],{},[1029,2218,2219],{},"{ reason, step, detail, screenshot, snapshot, checkpoint, expires_at, proposals, resolve_url, actions }",[1029,2221,1708],{}," is one of ",[1029,2224,2225],{},"obstacle",[1029,2227,2228],{},"drift",[1029,2230,2231],{},"unknown_page",[1029,2233,2234],{},"session_expired",[1029,2236,2237],{},"side_effect_ambiguous",[1029,2239,2240],{},"captcha",", and is repeated at the top level of the envelope. ",[1029,2243,540],{}," lists what the job accepts. See ",[2078,2246,44],{"href":2247},"\u002Fconcepts\u002Fhuman-in-the-loop",[1037,2249,2251],{"id":2250},"worked-example","Worked example",[1025,2253,2254,2255,2258,2259,2261],{},"The site at ",[1029,2256,2257],{},"https:\u002F\u002Fportal.example.com"," signs in with an e-mail and password, asks for a one-time code, then shows a 40-row report. A program for it, with the code collected by an ",[1029,2260,592],{}," step, passes through most statuses. The envelopes below are trimmed to the keys that change.",[1025,2263,2264,2267,2268,2270],{},[1776,2265,2266],{},"Created"," (",[1029,2269,1256],{},"):",[1070,2272,2274],{"className":1072,"code":2273,"language":680,"meta":1074,"style":1074},"{ \"id\": \"job_c2\", \"object\": \"job\", \"status\": \"queued\", \"program\": { \"name\": \"portal-report\", \"version\": 1 }, \"created_at\": \"…\" }\n",[1029,2275,2276],{"__ignoreMap":1074},[1078,2277,2278,2280,2282,2284,2287,2289,2291,2293,2295,2297,2300,2302,2305,2307,2310,2312,2314,2317,2319,2322,2324,2326,2328,2331,2333,2335,2338,2340,2342],{"class":1080,"line":1081},[1078,2279,1085],{"class":1084},[1078,2281,1413],{"class":1088},[1078,2283,1093],{"class":1092},[1078,2285,2286],{"class":1096}," \"job_c2\"",[1078,2288,1100],{"class":1092},[1078,2290,1358],{"class":1088},[1078,2292,1093],{"class":1092},[1078,2294,1363],{"class":1096},[1078,2296,1100],{"class":1092},[1078,2298,2299],{"class":1088}," \"status\"",[1078,2301,1093],{"class":1092},[1078,2303,2304],{"class":1096}," \"queued\"",[1078,2306,1100],{"class":1092},[1078,2308,2309],{"class":1088}," \"program\"",[1078,2311,1093],{"class":1092},[1078,2313,1108],{"class":1084},[1078,2315,2316],{"class":1088},"\"name\"",[1078,2318,1093],{"class":1092},[1078,2320,2321],{"class":1096}," \"portal-report\"",[1078,2323,1100],{"class":1092},[1078,2325,1433],{"class":1088},[1078,2327,1093],{"class":1092},[1078,2329,2330],{"class":1397}," 1",[1078,2332,1119],{"class":1084},[1078,2334,1100],{"class":1092},[1078,2336,2337],{"class":1088}," \"created_at\"",[1078,2339,1093],{"class":1092},[1078,2341,1585],{"class":1096},[1078,2343,2069],{"class":1084},[1025,2345,2346,2349],{},[1776,2347,2348],{},"Running",", on step 3 of 8, before any checkpoint:",[1070,2351,2353],{"className":1072,"code":2352,"language":680,"meta":1074,"style":1074},"{ \"id\": \"job_c2\", \"status\": \"running\", \"progress\": { \"step\": 3, \"of\": 8, \"checkpoint\": null } }\n",[1029,2354,2355],{"__ignoreMap":1074},[1078,2356,2357,2359,2361,2363,2365,2367,2369,2371,2374,2376,2378,2380,2382,2385,2387,2389,2391,2393,2395,2398,2400,2403,2405,2407],{"class":1080,"line":1081},[1078,2358,1085],{"class":1084},[1078,2360,1413],{"class":1088},[1078,2362,1093],{"class":1092},[1078,2364,2286],{"class":1096},[1078,2366,1100],{"class":1092},[1078,2368,2299],{"class":1088},[1078,2370,1093],{"class":1092},[1078,2372,2373],{"class":1096}," \"running\"",[1078,2375,1100],{"class":1092},[1078,2377,1542],{"class":1088},[1078,2379,1093],{"class":1092},[1078,2381,1108],{"class":1084},[1078,2383,2384],{"class":1088},"\"step\"",[1078,2386,1093],{"class":1092},[1078,2388,1438],{"class":1397},[1078,2390,1100],{"class":1092},[1078,2392,2061],{"class":1088},[1078,2394,1093],{"class":1092},[1078,2396,2397],{"class":1397}," 8",[1078,2399,1100],{"class":1092},[1078,2401,2402],{"class":1088}," \"checkpoint\"",[1078,2404,1093],{"class":1092},[1078,2406,1398],{"class":1397},[1078,2408,1172],{"class":1084},[1025,2410,2411,2414,2415,2418,2419,2421],{},[1776,2412,2413],{},"Parked for the code."," The fifth step, ",[1029,2416,2417],{},"steps[4]",", is a ",[1029,2420,599],{}," block whose first step asks for the code:",[1070,2423,2425],{"className":1072,"code":2424,"language":680,"meta":1074,"style":1074},"{ \"id\": \"job_c2\", \"status\": \"awaiting_input\",\n  \"progress\": { \"step\": 5, \"of\": 8, \"checkpoint\": null },\n  \"input_request\": { \"name\": \"otp\", \"prompt\": \"Doğrulama kodu\", \"type\": \"string\", \"pattern\": \"^[0-9]{6}$\",\n    \"keep_alive_until\": \"…\", \"expires_at\": \"…\", \"collect\": \"api\",\n    \"screenshot\": \"\u002Fv1\u002Fjobs\u002Fjob_c2\u002Fscreenshot?step=steps[4].do[0]\", \"resolve_url\": null } }\n",[1029,2426,2427,2448,2484,2532,2561],{"__ignoreMap":1074},[1078,2428,2429,2431,2433,2435,2437,2439,2441,2443,2446],{"class":1080,"line":1081},[1078,2430,1085],{"class":1084},[1078,2432,1413],{"class":1088},[1078,2434,1093],{"class":1092},[1078,2436,2286],{"class":1096},[1078,2438,1100],{"class":1092},[1078,2440,2299],{"class":1088},[1078,2442,1093],{"class":1092},[1078,2444,2445],{"class":1096}," \"awaiting_input\"",[1078,2447,1376],{"class":1092},[1078,2449,2450,2453,2455,2457,2459,2461,2464,2466,2468,2470,2472,2474,2476,2478,2480,2482],{"class":1080,"line":1345},[1078,2451,2452],{"class":1088},"  \"progress\"",[1078,2454,1093],{"class":1092},[1078,2456,1108],{"class":1084},[1078,2458,2384],{"class":1088},[1078,2460,1093],{"class":1092},[1078,2462,2463],{"class":1397}," 5",[1078,2465,1100],{"class":1092},[1078,2467,2061],{"class":1088},[1078,2469,1093],{"class":1092},[1078,2471,2397],{"class":1397},[1078,2473,1100],{"class":1092},[1078,2475,2402],{"class":1088},[1078,2477,1093],{"class":1092},[1078,2479,1398],{"class":1397},[1078,2481,1119],{"class":1084},[1078,2483,1376],{"class":1092},[1078,2485,2486,2489,2491,2493,2495,2497,2500,2502,2505,2507,2510,2512,2515,2517,2520,2522,2525,2527,2530],{"class":1080,"line":1379},[1078,2487,2488],{"class":1088},"  \"input_request\"",[1078,2490,1093],{"class":1092},[1078,2492,1108],{"class":1084},[1078,2494,2316],{"class":1088},[1078,2496,1093],{"class":1092},[1078,2498,2499],{"class":1096}," \"otp\"",[1078,2501,1100],{"class":1092},[1078,2503,2504],{"class":1088}," \"prompt\"",[1078,2506,1093],{"class":1092},[1078,2508,2509],{"class":1096}," \"Doğrulama kodu\"",[1078,2511,1100],{"class":1092},[1078,2513,2514],{"class":1088}," \"type\"",[1078,2516,1093],{"class":1092},[1078,2518,2519],{"class":1096}," \"string\"",[1078,2521,1100],{"class":1092},[1078,2523,2524],{"class":1088}," \"pattern\"",[1078,2526,1093],{"class":1092},[1078,2528,2529],{"class":1096}," \"^[0-9]{6}$\"",[1078,2531,1376],{"class":1092},[1078,2533,2534,2537,2539,2541,2543,2545,2547,2549,2551,2554,2556,2559],{"class":1080,"line":1403},[1078,2535,2536],{"class":1088},"    \"keep_alive_until\"",[1078,2538,1093],{"class":1092},[1078,2540,1585],{"class":1096},[1078,2542,1100],{"class":1092},[1078,2544,1608],{"class":1088},[1078,2546,1093],{"class":1092},[1078,2548,1585],{"class":1096},[1078,2550,1100],{"class":1092},[1078,2552,2553],{"class":1088}," \"collect\"",[1078,2555,1093],{"class":1092},[1078,2557,2558],{"class":1096}," \"api\"",[1078,2560,1376],{"class":1092},[1078,2562,2563,2566,2568,2571,2573,2576,2578,2580],{"class":1080,"line":1455},[1078,2564,2565],{"class":1088},"    \"screenshot\"",[1078,2567,1093],{"class":1092},[1078,2569,2570],{"class":1096}," \"\u002Fv1\u002Fjobs\u002Fjob_c2\u002Fscreenshot?step=steps[4].do[0]\"",[1078,2572,1100],{"class":1092},[1078,2574,2575],{"class":1088}," \"resolve_url\"",[1078,2577,1093],{"class":1092},[1078,2579,1398],{"class":1397},[1078,2581,1172],{"class":1084},[1025,2583,2584,2585,2588,2589,2592,2593,2595],{},"You send ",[1029,2586,2587],{},"POST \u002Fv1\u002Fjobs\u002Fjob_c2\u002Finput"," with ",[1029,2590,2591],{},"{ \"otp\": \"123456\" }",", and the job is ",[1029,2594,1673],{}," again in the same browser page.",[1025,2597,2598,2601],{},[1776,2599,2600],{},"Succeeded",", with the report read:",[1070,2603,2605],{"className":1072,"code":2604,"language":680,"meta":1074,"style":1074},"{ \"id\": \"job_c2\", \"status\": \"succeeded\",\n  \"data\": { \"rows\": [ { \"date\": \"…\", \"description\": \"…\", \"amount\": { \"amount\": 53.5, \"currency\": \"TRY\" } } ] },\n  \"warnings\": [],\n  \"meta\": { \"tier\": \"browser\", \"session\": { \"id\": \"ses_…\", \"name\": \"portal-login\", \"saved\": true },\n    \"credits\": { \"reserved\": 12, \"settled\": 7, \"breakdown\": { \"compute\": 5, \"proxy\": 2, \"llm\": 0, \"captcha\": 0 } } } }\n",[1029,2606,2607,2627,2690,2701,2755],{"__ignoreMap":1074},[1078,2608,2609,2611,2613,2615,2617,2619,2621,2623,2625],{"class":1080,"line":1081},[1078,2610,1085],{"class":1084},[1078,2612,1413],{"class":1088},[1078,2614,1093],{"class":1092},[1078,2616,2286],{"class":1096},[1078,2618,1100],{"class":1092},[1078,2620,2299],{"class":1088},[1078,2622,1093],{"class":1092},[1078,2624,1387],{"class":1096},[1078,2626,1376],{"class":1092},[1078,2628,2629,2631,2633,2635,2638,2640,2642,2645,2647,2649,2651,2654,2656,2658,2660,2663,2665,2667,2670,2672,2675,2677,2680,2682,2685,2688],{"class":1080,"line":1345},[1078,2630,1471],{"class":1088},[1078,2632,1093],{"class":1092},[1078,2634,1108],{"class":1084},[1078,2636,2637],{"class":1088},"\"rows\"",[1078,2639,1093],{"class":1092},[1078,2641,1206],{"class":1084},[1078,2643,2644],{"class":1088},"\"date\"",[1078,2646,1093],{"class":1092},[1078,2648,1585],{"class":1096},[1078,2650,1100],{"class":1092},[1078,2652,2653],{"class":1088}," \"description\"",[1078,2655,1093],{"class":1092},[1078,2657,1585],{"class":1096},[1078,2659,1100],{"class":1092},[1078,2661,2662],{"class":1088}," \"amount\"",[1078,2664,1093],{"class":1092},[1078,2666,1108],{"class":1084},[1078,2668,2669],{"class":1088},"\"amount\"",[1078,2671,1093],{"class":1092},[1078,2673,2674],{"class":1397}," 53.5",[1078,2676,1100],{"class":1092},[1078,2678,2679],{"class":1088}," \"currency\"",[1078,2681,1093],{"class":1092},[1078,2683,2684],{"class":1096}," \"TRY\"",[1078,2686,2687],{"class":1084}," } } ] }",[1078,2689,1376],{"class":1092},[1078,2691,2692,2695,2697,2699],{"class":1080,"line":1379},[1078,2693,2694],{"class":1088},"  \"warnings\"",[1078,2696,1093],{"class":1092},[1078,2698,1495],{"class":1084},[1078,2700,1376],{"class":1092},[1078,2702,2703,2705,2707,2709,2712,2714,2717,2719,2722,2724,2726,2728,2730,2733,2735,2737,2739,2742,2744,2747,2749,2751,2753],{"class":1080,"line":1403},[1078,2704,1503],{"class":1088},[1078,2706,1093],{"class":1092},[1078,2708,1108],{"class":1084},[1078,2710,2711],{"class":1088},"\"tier\"",[1078,2713,1093],{"class":1092},[1078,2715,2716],{"class":1096}," \"browser\"",[1078,2718,1100],{"class":1092},[1078,2720,2721],{"class":1088}," \"session\"",[1078,2723,1093],{"class":1092},[1078,2725,1108],{"class":1084},[1078,2727,1413],{"class":1088},[1078,2729,1093],{"class":1092},[1078,2731,2732],{"class":1096}," \"ses_…\"",[1078,2734,1100],{"class":1092},[1078,2736,1423],{"class":1088},[1078,2738,1093],{"class":1092},[1078,2740,2741],{"class":1096}," \"portal-login\"",[1078,2743,1100],{"class":1092},[1078,2745,2746],{"class":1088}," \"saved\"",[1078,2748,1093],{"class":1092},[1078,2750,2138],{"class":1397},[1078,2752,1119],{"class":1084},[1078,2754,1376],{"class":1092},[1078,2756,2757,2760,2762,2764,2767,2769,2772,2774,2777,2779,2782,2784,2787,2789,2791,2794,2796,2798,2800,2803,2805,2808,2810,2813,2815,2818,2820,2823,2825,2827],{"class":1080,"line":1455},[1078,2758,2759],{"class":1088},"    \"credits\"",[1078,2761,1093],{"class":1092},[1078,2763,1108],{"class":1084},[1078,2765,2766],{"class":1088},"\"reserved\"",[1078,2768,1093],{"class":1092},[1078,2770,2771],{"class":1397}," 12",[1078,2773,1100],{"class":1092},[1078,2775,2776],{"class":1088}," \"settled\"",[1078,2778,1093],{"class":1092},[1078,2780,2781],{"class":1397}," 7",[1078,2783,1100],{"class":1092},[1078,2785,2786],{"class":1088}," \"breakdown\"",[1078,2788,1093],{"class":1092},[1078,2790,1108],{"class":1084},[1078,2792,2793],{"class":1088},"\"compute\"",[1078,2795,1093],{"class":1092},[1078,2797,2463],{"class":1397},[1078,2799,1100],{"class":1092},[1078,2801,2802],{"class":1088}," \"proxy\"",[1078,2804,1093],{"class":1092},[1078,2806,2807],{"class":1397}," 2",[1078,2809,1100],{"class":1092},[1078,2811,2812],{"class":1088}," \"llm\"",[1078,2814,1093],{"class":1092},[1078,2816,2817],{"class":1397}," 0",[1078,2819,1100],{"class":1092},[1078,2821,2822],{"class":1088}," \"captcha\"",[1078,2824,1093],{"class":1092},[1078,2826,2817],{"class":1397},[1078,2828,2829],{"class":1084}," } } } }\n",[1025,2831,2832,2835],{},[1776,2833,2834],{},"Needs attention"," instead, on a later run after the site moved the amount column and the healer was not confident of the new one:",[1070,2837,2839],{"className":1072,"code":2838,"language":680,"meta":1074,"style":1074},"{ \"id\": \"job_c3\", \"status\": \"needs_attention\", \"reason\": \"drift\",\n  \"attention\": { \"reason\": \"drift\", \"step\": \"steps[7]\", \"detail\": \"extract.rows[].amount: 0\u002F40 matched, landmarks ok\",\n    \"checkpoint\": \"logged_in\", \"expires_at\": \"…\",\n    \"proposals\": [ { \"id\": \"prp_2\", \"kind\": \"relocate\", \"target\": \"extract.rows[].amount\", \"confidence\": 0.86 } ],\n    \"actions\": [\"apply\", \"skip_step\", \"retry_from\", \"takeover\", \"abort\"] } }\n",[1029,2840,2841,2872,2909,2929,2980],{"__ignoreMap":1074},[1078,2842,2843,2845,2847,2849,2852,2854,2856,2858,2861,2863,2865,2867,2870],{"class":1080,"line":1081},[1078,2844,1085],{"class":1084},[1078,2846,1413],{"class":1088},[1078,2848,1093],{"class":1092},[1078,2850,2851],{"class":1096}," \"job_c3\"",[1078,2853,1100],{"class":1092},[1078,2855,2299],{"class":1088},[1078,2857,1093],{"class":1092},[1078,2859,2860],{"class":1096}," \"needs_attention\"",[1078,2862,1100],{"class":1092},[1078,2864,1392],{"class":1088},[1078,2866,1093],{"class":1092},[1078,2868,2869],{"class":1096}," \"drift\"",[1078,2871,1376],{"class":1092},[1078,2873,2874,2877,2879,2881,2884,2886,2888,2890,2892,2894,2897,2899,2902,2904,2907],{"class":1080,"line":1345},[1078,2875,2876],{"class":1088},"  \"attention\"",[1078,2878,1093],{"class":1092},[1078,2880,1108],{"class":1084},[1078,2882,2883],{"class":1088},"\"reason\"",[1078,2885,1093],{"class":1092},[1078,2887,2869],{"class":1096},[1078,2889,1100],{"class":1092},[1078,2891,2143],{"class":1088},[1078,2893,1093],{"class":1092},[1078,2895,2896],{"class":1096}," \"steps[7]\"",[1078,2898,1100],{"class":1092},[1078,2900,2901],{"class":1088}," \"detail\"",[1078,2903,1093],{"class":1092},[1078,2905,2906],{"class":1096}," \"extract.rows[].amount: 0\u002F40 matched, landmarks ok\"",[1078,2908,1376],{"class":1092},[1078,2910,2911,2914,2916,2919,2921,2923,2925,2927],{"class":1080,"line":1379},[1078,2912,2913],{"class":1088},"    \"checkpoint\"",[1078,2915,1093],{"class":1092},[1078,2917,2918],{"class":1096}," \"logged_in\"",[1078,2920,1100],{"class":1092},[1078,2922,1608],{"class":1088},[1078,2924,1093],{"class":1092},[1078,2926,1585],{"class":1096},[1078,2928,1376],{"class":1092},[1078,2930,2931,2934,2936,2938,2940,2942,2945,2947,2950,2952,2955,2957,2960,2962,2965,2967,2970,2972,2975,2978],{"class":1080,"line":1403},[1078,2932,2933],{"class":1088},"    \"proposals\"",[1078,2935,1093],{"class":1092},[1078,2937,1206],{"class":1084},[1078,2939,1413],{"class":1088},[1078,2941,1093],{"class":1092},[1078,2943,2944],{"class":1096}," \"prp_2\"",[1078,2946,1100],{"class":1092},[1078,2948,2949],{"class":1088}," \"kind\"",[1078,2951,1093],{"class":1092},[1078,2953,2954],{"class":1096}," \"relocate\"",[1078,2956,1100],{"class":1092},[1078,2958,2959],{"class":1088}," \"target\"",[1078,2961,1093],{"class":1092},[1078,2963,2964],{"class":1096}," \"extract.rows[].amount\"",[1078,2966,1100],{"class":1092},[1078,2968,2969],{"class":1088}," \"confidence\"",[1078,2971,1093],{"class":1092},[1078,2973,2974],{"class":1397}," 0.86",[1078,2976,2977],{"class":1084}," } ]",[1078,2979,1376],{"class":1092},[1078,2981,2982,2985,2987,2989,2992,2994,2997,2999,3002,3004,3007,3009,3012],{"class":1080,"line":1455},[1078,2983,2984],{"class":1088},"    \"actions\"",[1078,2986,1093],{"class":1092},[1078,2988,1129],{"class":1084},[1078,2990,2991],{"class":1096},"\"apply\"",[1078,2993,1100],{"class":1092},[1078,2995,2996],{"class":1096}," \"skip_step\"",[1078,2998,1100],{"class":1092},[1078,3000,3001],{"class":1096}," \"retry_from\"",[1078,3003,1100],{"class":1092},[1078,3005,3006],{"class":1096}," \"takeover\"",[1078,3008,1100],{"class":1092},[1078,3010,3011],{"class":1096}," \"abort\"",[1078,3013,3014],{"class":1084},"] } }\n",[1025,3016,3017,3020],{},[1776,3018,3019],{},"Failed",", on a different site that kept refusing the job:",[1070,3022,3024],{"className":1072,"code":3023,"language":680,"meta":1074,"style":1074},"{ \"id\": \"job_x\", \"status\": \"failed\",\n  \"error\": { \"code\": \"blocked\", \"message\": \"challenge page after 3 attempts\", \"tier\": \"stealth\", \"retryable\": true,\n    \"snapshot\": \"\u002Fv1\u002Fjobs\u002Fjob_x\u002Fsnapshot\" },\n  \"meta\": { \"credits\": { \"reserved\": 40, \"settled\": 25 } } }\n",[1029,3025,3026,3048,3089,3103],{"__ignoreMap":1074},[1078,3027,3028,3030,3032,3034,3037,3039,3041,3043,3046],{"class":1080,"line":1081},[1078,3029,1085],{"class":1084},[1078,3031,1413],{"class":1088},[1078,3033,1093],{"class":1092},[1078,3035,3036],{"class":1096}," \"job_x\"",[1078,3038,1100],{"class":1092},[1078,3040,2299],{"class":1088},[1078,3042,1093],{"class":1092},[1078,3044,3045],{"class":1096}," \"failed\"",[1078,3047,1376],{"class":1092},[1078,3049,3050,3052,3054,3056,3058,3060,3062,3064,3066,3068,3070,3072,3074,3076,3078,3080,3083,3085,3087],{"class":1080,"line":1345},[1078,3051,1515],{"class":1088},[1078,3053,1093],{"class":1092},[1078,3055,1108],{"class":1084},[1078,3057,2032],{"class":1088},[1078,3059,1093],{"class":1092},[1078,3061,2106],{"class":1096},[1078,3063,1100],{"class":1092},[1078,3065,2111],{"class":1088},[1078,3067,1093],{"class":1092},[1078,3069,2116],{"class":1096},[1078,3071,1100],{"class":1092},[1078,3073,2121],{"class":1088},[1078,3075,1093],{"class":1092},[1078,3077,2126],{"class":1096},[1078,3079,1100],{"class":1092},[1078,3081,3082],{"class":1088}," \"retryable\"",[1078,3084,1093],{"class":1092},[1078,3086,2138],{"class":1397},[1078,3088,1376],{"class":1092},[1078,3090,3091,3094,3096,3099,3101],{"class":1080,"line":1379},[1078,3092,3093],{"class":1088},"    \"snapshot\"",[1078,3095,1093],{"class":1092},[1078,3097,3098],{"class":1096}," \"\u002Fv1\u002Fjobs\u002Fjob_x\u002Fsnapshot\"",[1078,3100,1119],{"class":1084},[1078,3102,1376],{"class":1092},[1078,3104,3105,3107,3109,3111,3114,3116,3118,3120,3122,3124,3126,3128,3130,3133],{"class":1080,"line":1403},[1078,3106,1503],{"class":1088},[1078,3108,1093],{"class":1092},[1078,3110,1108],{"class":1084},[1078,3112,3113],{"class":1088},"\"credits\"",[1078,3115,1093],{"class":1092},[1078,3117,1108],{"class":1084},[1078,3119,2766],{"class":1088},[1078,3121,1093],{"class":1092},[1078,3123,2066],{"class":1397},[1078,3125,1100],{"class":1092},[1078,3127,2776],{"class":1088},[1078,3129,1093],{"class":1092},[1078,3131,3132],{"class":1397}," 25",[1078,3134,3135],{"class":1084}," } } }\n",[1025,3137,3138,2588,3141,1679,3144,3147],{},[1776,3139,3140],{},"Canceled",[1029,3142,3143],{},"POST \u002Fv1\u002Fjobs\u002F{id}\u002Fcancel",[1029,3145,3146],{},"status: \"canceled\"",", its timings and credits, and nothing else. The reservation is released minus what the job had already spent.",[1037,3149,3151],{"id":3150},"evidence","Evidence",[1025,3153,3154,3157,3158,1047,3161,1281,3164,3167,3168,3171,3172,3175],{},[1029,3155,3156],{},"GET \u002Fv1\u002Fjobs\u002F{id}\u002Fsteps"," is the timeline: one row per step attempt, with timings, the tier, what the healer did, warnings and links to that step's snapshot and screenshot. ",[1029,3159,3160],{},"GET \u002Fv1\u002Fjobs\u002F{id}\u002Fsnapshot",[1029,3162,3163],{},"\u002Fscreenshot",[1029,3165,3166],{},"\u002Fartifacts\u002F{name}"," each redirect (",[1029,3169,3170],{},"302",") to a link that is valid for fifteen minutes. Values of ",[1029,3173,3174],{},"secret"," inputs never appear in any of them.",[1037,3177,3179],{"id":3178},"waiting-for-a-job","Waiting for a job",[1025,3181,3182,3185,3186,3189,3190,3193,3194,3196,3197,3200,3201,3193,3204,3206,3207,3210],{},[1029,3183,3184],{},"Prefer: wait=\u003Cseconds>",", from 1 to 60, holds one request open. Beyond a minute, each SDK has a wait helper that long-polls ",[1029,3187,3188],{},"GET \u002Fv1\u002Fjobs\u002F{id}"," until the job is final, and can answer it on the way: an ",[1029,3191,3192],{},"onInput"," handler for ",[1029,3195,1689],{}," (its value is posted to ",[1029,3198,3199],{},"\u002Finput",") and an ",[1029,3202,3203],{},"onAttention",[1029,3205,1703],{}," (its action is posted to ",[1029,3208,3209],{},"\u002Fresume",", or it leaves the job to somebody else).",[3212,3213,3214,3401,3531],"code-group",{},[1070,3215,3220],{"className":3216,"code":3217,"filename":3218,"language":3219,"meta":1074,"style":1074},"language-ts shiki shiki-themes kaab-code kaab-code kaab-code","\u002F\u002F Or start it and wait separately: `jobs.wait` long-polls until the job ends.\nconst started = await kaab.jobs.create({\n  url: `${site}\u002Fp\u002F2`,\n  extract: { title: \"h1\" },\n});\nconst done = await kaab.jobs.wait(started.id, { timeoutMs: 120_000 });\nconsole.log(`${done.id}: ${done.status} ${JSON.stringify(done.data)}`);\n","TypeScript","ts",[1029,3221,3222,3228,3256,3280,3298,3303,3345],{"__ignoreMap":1074},[1078,3223,3224],{"class":1080,"line":1081},[1078,3225,3227],{"class":3226},"sKog0","\u002F\u002F Or start it and wait separately: `jobs.wait` long-polls until the job ends.\n",[1078,3229,3230,3233,3236,3239,3242,3245,3248,3250,3253],{"class":1080,"line":1345},[1078,3231,3232],{"class":1088},"const",[1078,3234,3235],{"class":1397}," started",[1078,3237,3238],{"class":1088}," =",[1078,3240,3241],{"class":1088}," await",[1078,3243,3244],{"class":1397}," kaab",[1078,3246,1285],{"class":3247},"sJugJ",[1078,3249,171],{"class":1397},[1078,3251,3252],{"class":3247},".create",[1078,3254,3255],{"class":1084},"({\n",[1078,3257,3258,3261,3263,3266,3269,3272,3275,3278],{"class":1080,"line":1379},[1078,3259,3260],{"class":1084},"  url",[1078,3262,1093],{"class":1088},[1078,3264,3265],{"class":1096}," `",[1078,3267,3268],{"class":1088},"${",[1078,3270,3271],{"class":1084},"site",[1078,3273,3274],{"class":1088},"}",[1078,3276,3277],{"class":1096},"\u002Fp\u002F2`",[1078,3279,1376],{"class":1092},[1078,3281,3282,3285,3287,3290,3292,3294,3296],{"class":1080,"line":1403},[1078,3283,3284],{"class":1084},"  extract",[1078,3286,1093],{"class":1088},[1078,3288,3289],{"class":1084}," { title",[1078,3291,1093],{"class":1088},[1078,3293,1169],{"class":1096},[1078,3295,1119],{"class":1084},[1078,3297,1376],{"class":1092},[1078,3299,3300],{"class":1080,"line":1455},[1078,3301,3302],{"class":1084},"});\n",[1078,3304,3305,3307,3310,3312,3314,3316,3318,3320,3323,3326,3329,3332,3334,3337,3339,3342],{"class":1080,"line":1468},[1078,3306,3232],{"class":1088},[1078,3308,3309],{"class":1397}," done",[1078,3311,3238],{"class":1088},[1078,3313,3241],{"class":1088},[1078,3315,3244],{"class":1397},[1078,3317,1285],{"class":3247},[1078,3319,171],{"class":1397},[1078,3321,3322],{"class":3247},".wait",[1078,3324,3325],{"class":1084},"(",[1078,3327,3328],{"class":1397},"started",[1078,3330,3331],{"class":1084},".id",[1078,3333,1100],{"class":1092},[1078,3335,3336],{"class":1084}," { timeoutMs",[1078,3338,1093],{"class":1088},[1078,3340,3341],{"class":1397}," 120_000",[1078,3343,3344],{"class":1084}," });\n",[1078,3346,3347,3350,3353,3355,3358,3360,3363,3365,3367,3369,3371,3373,3376,3378,3381,3384,3387,3389,3391,3394,3396,3398],{"class":1080,"line":1500},[1078,3348,3349],{"class":1397},"console",[1078,3351,3352],{"class":3247},".log",[1078,3354,3325],{"class":1084},[1078,3356,3357],{"class":1096},"`",[1078,3359,3268],{"class":1088},[1078,3361,3362],{"class":1397},"done",[1078,3364,3331],{"class":1084},[1078,3366,3274],{"class":1088},[1078,3368,1679],{"class":1096},[1078,3370,3268],{"class":1088},[1078,3372,3362],{"class":1397},[1078,3374,3375],{"class":1084},".status",[1078,3377,3274],{"class":1088},[1078,3379,3380],{"class":1088}," ${",[1078,3382,3383],{"class":1397},"JSON",[1078,3385,3386],{"class":3247},".stringify",[1078,3388,3325],{"class":1084},[1078,3390,3362],{"class":1397},[1078,3392,3393],{"class":1084},".data)",[1078,3395,3274],{"class":1088},[1078,3397,3357],{"class":1096},[1078,3399,3400],{"class":1084},");\n",[1070,3402,3407],{"className":3403,"code":3404,"filename":3405,"language":3406,"meta":1074,"style":1074},"language-python shiki shiki-themes kaab-code kaab-code kaab-code","# Or start it and wait separately: jobs.wait long-polls until the job ends.\nstarted = kaab.jobs.create(url=f\"{site}\u002Fp\u002F2\", extract={\"title\": \"h1\"})\ndone = kaab.jobs.wait(started.id, timeout=120)\nprint(f\"{done.id}: {done.status}\")\n","Python","python",[1029,3408,3409,3414,3471,3500],{"__ignoreMap":1074},[1078,3410,3411],{"class":1080,"line":1081},[1078,3412,3413],{"class":3226},"# Or start it and wait separately: jobs.wait long-polls until the job ends.\n",[1078,3415,3416,3419,3422,3424,3426,3428,3430,3433,3436,3438,3441,3444,3447,3449,3451,3454,3457,3459,3461,3463,3465,3468],{"class":1080,"line":1345},[1078,3417,3418],{"class":1084},"started ",[1078,3420,3421],{"class":1088},"=",[1078,3423,3244],{"class":1084},[1078,3425,1285],{"class":1092},[1078,3427,171],{"class":1084},[1078,3429,1285],{"class":1092},[1078,3431,3432],{"class":3247},"create",[1078,3434,3435],{"class":1092},"(url",[1078,3437,3421],{"class":1088},[1078,3439,3440],{"class":1088},"f",[1078,3442,3443],{"class":1096},"\"",[1078,3445,3446],{"class":1397},"{",[1078,3448,3271],{"class":1092},[1078,3450,3274],{"class":1397},[1078,3452,3453],{"class":1096},"\u002Fp\u002F2\"",[1078,3455,3456],{"class":1092},", extract",[1078,3458,3421],{"class":1088},[1078,3460,3446],{"class":1092},[1078,3462,1164],{"class":1096},[1078,3464,1679],{"class":1092},[1078,3466,3467],{"class":1096},"\"h1\"",[1078,3469,3470],{"class":1092},"})\n",[1078,3472,3473,3476,3478,3480,3482,3484,3486,3489,3492,3494,3497],{"class":1080,"line":1379},[1078,3474,3475],{"class":1084},"done ",[1078,3477,3421],{"class":1088},[1078,3479,3244],{"class":1084},[1078,3481,1285],{"class":1092},[1078,3483,171],{"class":1084},[1078,3485,1285],{"class":1092},[1078,3487,3488],{"class":3247},"wait",[1078,3490,3491],{"class":1092},"(started.id, timeout",[1078,3493,3421],{"class":1088},[1078,3495,3496],{"class":1397},"120",[1078,3498,3499],{"class":1092},")\n",[1078,3501,3502,3505,3507,3509,3511,3513,3516,3518,3520,3522,3525,3527,3529],{"class":1080,"line":1403},[1078,3503,3504],{"class":3247},"print",[1078,3506,3325],{"class":1092},[1078,3508,3440],{"class":1088},[1078,3510,3443],{"class":1096},[1078,3512,3446],{"class":1397},[1078,3514,3515],{"class":1092},"done.id",[1078,3517,3274],{"class":1397},[1078,3519,1679],{"class":1096},[1078,3521,3446],{"class":1397},[1078,3523,3524],{"class":1092},"done.status",[1078,3526,3274],{"class":1397},[1078,3528,3443],{"class":1096},[1078,3530,3499],{"class":1092},[1070,3532,3537],{"className":3533,"code":3534,"filename":3535,"language":3536,"meta":1074,"style":1074},"language-go shiki shiki-themes kaab-code kaab-code kaab-code","\u002F\u002F Or start it and wait separately: Jobs.Wait long-polls until the job ends.\nbody, _ = kaab.Body[client.CreateJobJSONBody](map[string]any{\"url\": site + \"\u002Fp\u002F2\", \"extract\": map[string]any{\"title\": \"h1\"}})\nstarted, err := c.Jobs.Create(ctx, body)\nif err != nil {\n    log.Fatal(err)\n}\ndone, err := c.Jobs.Wait(ctx, started.ID, kaab.WaitOptions{Timeout: 2 * time.Minute})\nif err != nil {\n    log.Fatal(err)\n}\nfmt.Printf(\"%s: %s\\n\", done.ID, done.Status)\n","Go","go",[1029,3538,3539,3544,3623,3640,3657,3668,3672,3706,3718,3726,3730],{"__ignoreMap":1074},[1078,3540,3541],{"class":1080,"line":1081},[1078,3542,3543],{"class":3226},"\u002F\u002F Or start it and wait separately: Jobs.Wait long-polls until the job ends.\n",[1078,3545,3546,3549,3551,3554,3557,3560,3563,3565,3568,3571,3574,3576,3579,3581,3583,3585,3587,3590,3593,3596,3598,3600,3602,3604,3606,3608,3610,3612,3614,3616,3618,3620],{"class":1080,"line":1345},[1078,3547,3548],{"class":1084},"body, _ ",[1078,3550,3421],{"class":1088},[1078,3552,3553],{"class":1084}," kaab.",[1078,3555,3556],{"class":3247},"Body",[1078,3558,3559],{"class":1084},"[",[1078,3561,3562],{"class":3247},"client",[1078,3564,1285],{"class":1084},[1078,3566,3567],{"class":3247},"CreateJobJSONBody",[1078,3569,3570],{"class":1084},"](",[1078,3572,3573],{"class":1088},"map",[1078,3575,3559],{"class":1084},[1078,3577,3578],{"class":1088},"string",[1078,3580,1563],{"class":1084},[1078,3582,634],{"class":3247},[1078,3584,3446],{"class":1084},[1078,3586,1147],{"class":1096},[1078,3588,3589],{"class":1084},": site ",[1078,3591,3592],{"class":1088},"+",[1078,3594,3595],{"class":1096}," \"\u002Fp\u002F2\"",[1078,3597,1047],{"class":1084},[1078,3599,1222],{"class":1096},[1078,3601,1679],{"class":1084},[1078,3603,3573],{"class":1088},[1078,3605,3559],{"class":1084},[1078,3607,3578],{"class":1088},[1078,3609,1563],{"class":1084},[1078,3611,634],{"class":3247},[1078,3613,3446],{"class":1084},[1078,3615,1164],{"class":1096},[1078,3617,1679],{"class":1084},[1078,3619,3467],{"class":1096},[1078,3621,3622],{"class":1084},"}})\n",[1078,3624,3625,3628,3631,3634,3637],{"class":1080,"line":1379},[1078,3626,3627],{"class":1084},"started, err ",[1078,3629,3630],{"class":1088},":=",[1078,3632,3633],{"class":1084}," c.Jobs.",[1078,3635,3636],{"class":3247},"Create",[1078,3638,3639],{"class":1084},"(ctx, body)\n",[1078,3641,3642,3645,3648,3651,3654],{"class":1080,"line":1403},[1078,3643,3644],{"class":1088},"if",[1078,3646,3647],{"class":1084}," err ",[1078,3649,3650],{"class":1088},"!=",[1078,3652,3653],{"class":1397}," nil",[1078,3655,3656],{"class":1084}," {\n",[1078,3658,3659,3662,3665],{"class":1080,"line":1455},[1078,3660,3661],{"class":1084},"    log.",[1078,3663,3664],{"class":3247},"Fatal",[1078,3666,3667],{"class":1084},"(err)\n",[1078,3669,3670],{"class":1080,"line":1468},[1078,3671,1619],{"class":1084},[1078,3673,3674,3677,3679,3681,3684,3687,3689,3691,3694,3697,3700,3703],{"class":1080,"line":1500},[1078,3675,3676],{"class":1084},"done, err ",[1078,3678,3630],{"class":1088},[1078,3680,3633],{"class":1084},[1078,3682,3683],{"class":3247},"Wait",[1078,3685,3686],{"class":1084},"(ctx, started.ID, ",[1078,3688,846],{"class":3247},[1078,3690,1285],{"class":1084},[1078,3692,3693],{"class":3247},"WaitOptions",[1078,3695,3696],{"class":1084},"{Timeout: ",[1078,3698,3699],{"class":1397},"2",[1078,3701,3702],{"class":1088}," *",[1078,3704,3705],{"class":1084}," time.Minute})\n",[1078,3707,3708,3710,3712,3714,3716],{"class":1080,"line":1512},[1078,3709,3644],{"class":1088},[1078,3711,3647],{"class":1084},[1078,3713,3650],{"class":1088},[1078,3715,3653],{"class":1397},[1078,3717,3656],{"class":1084},[1078,3719,3720,3722,3724],{"class":1080,"line":1551},[1078,3721,3661],{"class":1084},[1078,3723,3664],{"class":3247},[1078,3725,3667],{"class":1084},[1078,3727,3728],{"class":1080,"line":1577},[1078,3729,1619],{"class":1084},[1078,3731,3732,3735,3738,3740,3742,3745,3747,3749,3752],{"class":1080,"line":1616},[1078,3733,3734],{"class":1084},"fmt.",[1078,3736,3737],{"class":3247},"Printf",[1078,3739,3325],{"class":1084},[1078,3741,3443],{"class":1096},[1078,3743,3744],{"class":1397},"%s",[1078,3746,1679],{"class":1096},[1078,3748,3744],{"class":1397},[1078,3750,3751],{"class":1096},"\\n\"",[1078,3753,3754],{"class":1084},", done.ID, done.Status)\n",[1626,3756,3757,3771],{},[1629,3758,3759],{},[1632,3760,3761,3763,3765,3767,3769],{},[1635,3762],{},[1635,3764,3218],{},[1635,3766,3405],{},[1635,3768,3535],{},[1635,3770,841],{},[1643,3772,3773,3805,3833,3857,3883,3931],{},[1632,3774,3775,3778,3783,3795,3800],{},[1648,3776,3777],{},"Call",[1648,3779,3780],{},[1029,3781,3782],{},"kaab.jobs.wait(id, options)",[1648,3784,3785,1047,3788,3791,3792],{},[1029,3786,3787],{},"kaab.jobs.wait(id, …)",[1029,3789,3790],{},"await"," on ",[1029,3793,3794],{},"AsyncKaab",[1648,3796,3797],{},[1029,3798,3799],{},"c.Jobs.Wait(ctx, id, kaab.WaitOptions{…})",[1648,3801,3802],{},[1029,3803,3804],{},"kaab jobs get JOB_ID --wait N",[1632,3806,3807,3810,3816,3822,3827],{},[1648,3808,3809],{},"Time limit",[1648,3811,3812,3815],{},[1029,3813,3814],{},"timeoutMs",", default 5 minutes",[1648,3817,3818,3821],{},[1029,3819,3820],{},"timeout",", default 300 s",[1648,3823,3824,3815],{},[1029,3825,3826],{},"Timeout",[1648,3828,3829,3832],{},[1029,3830,3831],{},"N"," seconds, 1 to 60, one long-poll",[1632,3834,3835,3838,3844,3849,3854],{},[1648,3836,3837],{},"Poll spacing",[1648,3839,3840,3843],{},[1029,3841,3842],{},"pollMs",", default 1 s",[1648,3845,3846,3843],{},[1029,3847,3848],{},"poll_interval",[1648,3850,3851,3843],{},[1029,3852,3853],{},"PollInterval",[1648,3855,3856],{},"not applicable",[1632,3858,3859,3862,3868,3873,3878],{},[1648,3860,3861],{},"Answer an input",[1648,3863,3864,3867],{},[1029,3865,3866],{},"onInput(request, job)"," returns the value",[1648,3869,3870],{},[1029,3871,3872],{},"on_input(request, job)",[1648,3874,3875],{},[1029,3876,3877],{},"OnInput(ctx, job)",[1648,3879,3880],{},[1029,3881,3882],{},"kaab jobs input JOB_ID NAME=VALUE",[1632,3884,3885,3888,3897,3905,3925],{},[1648,3886,3887],{},"Decide on attention",[1648,3889,3890,3893,3894],{},[1029,3891,3892],{},"onAttention(attention, job)"," returns a resume body, or ",[1029,3895,3896],{},"\"wait\"",[1648,3898,3899,3902,3903],{},[1029,3900,3901],{},"on_attention(attention, job)",", a dict or ",[1029,3904,3896],{},[1648,3906,3907,3910,3911,2267,3914,1047,3917,3920,3921,3924],{},[1029,3908,3909],{},"OnAttention(ctx, job)"," returns a ",[1029,3912,3913],{},"ResumeAction",[1029,3915,3916],{},"kaab.SkipStep()",[1029,3918,3919],{},"kaab.Apply(id, promote)",", …), or ",[1029,3922,3923],{},"nil"," to wait",[1648,3926,3927,3930],{},[1029,3928,3929],{},"kaab jobs resume JOB_ID --skip-step"," and the other verbs",[1632,3932,3933,3936,3949,3954,3964],{},[1648,3934,3935],{},"Out of time",[1648,3937,3938,3939,2267,3942,3945,3946,3948],{},"throws ",[1029,3940,3941],{},"KaabWaitTimeoutError",[1029,3943,3944],{},"code: \"wait_timeout\"",", with the last ",[1029,3947,478],{},")",[1648,3950,3951,3952],{},"raises ",[1029,3953,3941],{},[1648,3955,3956,3957,3960,3961],{},"returns ",[1029,3958,3959],{},"*kaab.Error"," with code ",[1029,3962,3963],{},"wait_timeout",[1648,3965,3966],{},"prints the job as it is",[1025,3968,3969,3970,1047,3972,1054,3974,3976,3977,3980,3981,3983,3984,3987],{},"Every helper returns at once on ",[1029,3971,1720],{},[1029,3973,1740],{},[1029,3975,1759],{},". A parked job with no handler for its state is returned as it is, because it is a state your code has to act on. Each handler is asked once per park. With the CLI, ",[1029,3978,3979],{},"kaab jobs run … --wait"," exits ",[1029,3982,3699],{}," for a failed or canceled job and ",[1029,3985,3986],{},"3"," for a parked one.",[1037,3989,3991],{"id":3990},"pitfalls","Pitfalls",[1290,3993,3994,4013,4033,4057,4066],{},[1293,3995,3996,4001,4002,2204,4004,4006,4007,4009,4010,4012],{},[1776,3997,3998,3999,1285],{},"Switching on ",[1029,4000,1046],{}," Switch on ",[1029,4003,1031],{},[1029,4005,1046],{}," is present on ",[1029,4008,1720],{},", and on ",[1029,4011,1740],{}," only as a partial result.",[1293,4014,4015,4021,4022,1054,4025,4028,4029,4032],{},[1776,4016,4017,4018,4020],{},"Ignoring ",[1029,4019,1730],{}," on success."," A succeeded job with ",[1029,4023,4024],{},"null_marker",[1029,4026,4027],{},"list_short"," returned an answer you may not want; with ",[1029,4030,4031],{},"policies.strict: true"," any warning fails the job instead.",[1293,4034,4035,4038,4039,4041,4042,4045,4046,4049,4050,4052,4053,4056],{},[1776,4036,4037],{},"Treating parked as stuck."," An ",[1029,4040,1689],{}," job fails with ",[1029,4043,4044],{},"input_expired"," once ",[1029,4047,4048],{},"input_request.expires_at"," passes, and a ",[1029,4051,1703],{}," job fails at ",[1029,4054,4055],{},"attention.expires_at"," (seven days by default). Answer, resume or cancel it before then.",[1293,4058,4059,4062,4063,4065],{},[1776,4060,4061],{},"Long-polling forever."," A wait helper with no ",[1029,4064,3192],{}," returns a job parked for input; loop on it only after you have answered.",[1293,4067,4068,4075,4076,4079,4080,4083],{},[1776,4069,4070,4071,4074],{},"Expecting ",[1029,4072,4073],{},"409"," to be a bug."," ",[1029,4077,4078],{},"409 job_not_waiting"," means the verb does not fit the job's state; ",[1029,4081,4082],{},"409 fence_open"," means the job is inside an unconfirmed side effect and cannot be canceled or rewound past it.",[1037,4085,155],{"id":4086},"reference",[1290,4088,4089,4107,4117,4127,4143],{},[1293,4090,4091,1047,4095,1047,4099,1047,4103],{},[2078,4092,4094],{"href":4093},"\u002Freference\u002Fapi\u002Fjobs\u002Fget-job","Get a job",[2078,4096,4098],{"href":4097},"\u002Freference\u002Fapi\u002Fjobs\u002Fcreate-job","create a job",[2078,4100,4102],{"href":4101},"\u002Freference\u002Fapi\u002Fjobs\u002Festimate-job","estimate",[2078,4104,4106],{"href":4105},"\u002Freference\u002Fapi\u002Fjobs\u002Fcreate-job-batch","create a batch",[1293,4108,4109,1047,4113],{},[2078,4110,4112],{"href":4111},"\u002Freference\u002Fapi\u002Fjobs\u002Flist-job-steps","List a job's steps",[2078,4114,4116],{"href":4115},"\u002Freference\u002Fapi\u002Fjobs\u002Fcancel-job","cancel a job",[1293,4118,4119,1281,4123],{},[2078,4120,4122],{"href":4121},"\u002Freference\u002Fapi\u002Fschemas\u002Fjob","The job object",[2078,4124,4126],{"href":4125},"\u002Freference\u002Fapi\u002Fschemas\u002Fstep-record","the step record",[1293,4128,4129,1047,4133,1047,4137,1047,4140],{},[2078,4130,4132],{"href":4131},"\u002Freference\u002Fcodes#job-statuses","Job statuses",[2078,4134,4136],{"href":4135},"\u002Freference\u002Fcodes#attention-reasons","attention reasons",[2078,4138,1730],{"href":4139},"\u002Freference\u002Fcodes#warnings",[2078,4141,4142],{"href":2176},"errors",[1293,4144,4145],{},[2078,4146,4148],{"href":4147},"\u002Freference\u002Fsdks","SDK reference",[4150,4151,4152],"style",{},"html pre.shiki code .sTzsn, html code.shiki .sTzsn{--shiki-light:var(--kaab-code-foreground);--shiki-default:var(--kaab-code-foreground);--shiki-dark:var(--kaab-code-foreground)}html pre.shiki code .sqn18, html code.shiki .sqn18{--shiki-light:var(--kaab-code-token-keyword);--shiki-default:var(--kaab-code-token-keyword);--shiki-dark:var(--kaab-code-token-keyword)}html pre.shiki code .sQm2-, html code.shiki .sQm2-{--shiki-light:var(--kaab-code-token-punctuation);--shiki-default:var(--kaab-code-token-punctuation);--shiki-dark:var(--kaab-code-token-punctuation)}html pre.shiki code .suOy4, html code.shiki .suOy4{--shiki-light:var(--kaab-code-token-string-expression);--shiki-default:var(--kaab-code-token-string-expression);--shiki-dark:var(--kaab-code-token-string-expression)}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sHJIl, html code.shiki .sHJIl{--shiki-light:var(--kaab-code-token-constant);--shiki-default:var(--kaab-code-token-constant);--shiki-dark:var(--kaab-code-token-constant)}html pre.shiki code .sKog0, html code.shiki .sKog0{--shiki-light:var(--kaab-code-token-comment);--shiki-default:var(--kaab-code-token-comment);--shiki-dark:var(--kaab-code-token-comment)}html pre.shiki code .sJugJ, html code.shiki .sJugJ{--shiki-light:var(--kaab-code-token-function);--shiki-default:var(--kaab-code-token-function);--shiki-dark:var(--kaab-code-token-function)}",{"title":1074,"searchDepth":1379,"depth":1379,"links":4154},[4155,4156,4157,4165,4166,4167,4168,4169],{"id":1039,"depth":1345,"text":1040},{"id":1061,"depth":1345,"text":1062},{"id":1331,"depth":1345,"text":1332,"children":4158},[4159,4160,4161,4162,4163,4164],{"id":1623,"depth":1379,"text":1624},{"id":1789,"depth":1379,"text":1789},{"id":1730,"depth":1379,"text":1730},{"id":1050,"depth":1379,"text":1050},{"id":1053,"depth":1379,"text":1053},{"id":1057,"depth":1379,"text":1057},{"id":2250,"depth":1345,"text":2251},{"id":3150,"depth":1345,"text":3151},{"id":3178,"depth":1345,"text":3179},{"id":3990,"depth":1345,"text":3991},{"id":4086,"depth":1345,"text":155},false,null,"The one shape every job read returns, which keys each status carries, a worked example of every status, and how each SDK waits for a job.","md",{},true,"\u002Fgetting-started\u002Fenvelope",{"title":19,"description":4172},"1.getting-started\u002F04.envelope","P3ZB9jcKpqilJ8hwmzDlfDt6Lf7GpVgf0X7yIfdqjXM",[4181,4185],{"title":16,"path":4182,"stem":4183,"description":4184,"children":-1},"\u002Fgetting-started\u002Ffirst-job","1.getting-started\u002F03.first-job","Install an SDK or the kaab CLI, run one job against a product page, and read the envelope that comes back.",{"title":27,"path":23,"stem":4186,"description":4187,"children":-1},"2.concepts\u002Findex","The ideas behind Kaabist, one page each: programs, tiers, sessions, parking, healing, obstacles, validation, credits, limits and data.",1793593409298]