[{"data":1,"prerenderedAt":1568},["ShallowReactive",2],{"navigation":3,"page:\u002Fconcepts\u002Fdata-retention":1019,"surround:\u002Fconcepts\u002Fdata-retention":1559},[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":77,"body":1021,"breaking":1549,"date":1550,"description":1551,"extension":1552,"generated":1549,"meta":1553,"navigation":1554,"path":1555,"seo":1556,"stem":1557,"version":1550,"__hash__":1558},"docs\u002F2.concepts\u002F17.data-retention.md",{"type":1022,"value":1023,"toc":1534},"minimark",[1024,1028,1033,1042,1046,1175,1179,1186,1189,1193,1203,1207,1210,1214,1217,1221,1232,1261,1265,1272,1294,1319,1328,1358,1361,1395,1398,1401,1410,1414,1421,1458,1462,1497,1500,1530],[1025,1026,1027],"p",{},"Everything Kaabist keeps about your work lives in one of three places: the transactional database, object storage, and the append-only ledger and audit log. This page says what goes where and for how long, so you know what you can read back later, what you cannot, and what an erasure request removes.",[1029,1030,1032],"h2",{"id":1031},"when-to-use-it","When to use it",[1025,1034,1035,1036,1041],{},"Read this page before you automate a site whose pages hold personal or confidential data, when you answer a data-protection questionnaire about Kaabist, when you need to know whether last quarter's snapshots are still there, or when you want your organisation's data erased. The customer-facing summary of how that data is protected is in ",[1037,1038,1040],"a",{"href":1039},"\u002Fguides\u002Fsecurity-and-data","Security and data",".",[1029,1043,1045],{"id":1044},"at-a-glance","At a glance",[1047,1048,1049,1065],"table",{},[1050,1051,1052],"thead",{},[1053,1054,1055,1059,1062],"tr",{},[1056,1057,1058],"th",{},"What",[1056,1060,1061],{},"Where",[1056,1063,1064],{},"Kept for",[1066,1067,1068,1080,1090,1100,1115,1125,1135,1145,1155,1164],"tbody",{},[1053,1069,1070,1074,1077],{},[1071,1072,1073],"td",{},"Jobs: inputs (encrypted), result, warnings, metadata",[1071,1075,1076],{},"database",[1071,1078,1079],{},"13 months; results stay readable whatever your credit balance",[1053,1081,1082,1085,1087],{},[1071,1083,1084],{},"A job's timeline and step records",[1071,1086,1076],{},[1071,1088,1089],{},"13 months",[1053,1091,1092,1095,1097],{},[1071,1093,1094],{},"Test-mode job results",[1071,1096,1076],{},[1071,1098,1099],{},"24 hours",[1053,1101,1102,1105,1108],{},[1071,1103,1104],{},"Page snapshots, screenshots, downloaded artifacts, attention bundles",[1071,1106,1107],{},"object storage",[1071,1109,1110,1111,1114],{},"your plan's retention: 7, 30 or 90 days (",[1037,1112,1008],{"href":1113},"\u002Freference\u002Fplans",")",[1053,1116,1117,1120,1122],{},[1071,1118,1119],{},"Ground-truth snapshots of a program version",[1071,1121,1107],{},[1071,1123,1124],{},"as long as the version is in use",[1053,1126,1127,1130,1132],{},[1071,1128,1129],{},"A builder draft's own timeline",[1071,1131,1107],{},[1071,1133,1134],{},"7 days",[1053,1136,1137,1140,1143],{},[1071,1138,1139],{},"Usage statistics per job (counts, durations, credits; never page content)",[1071,1141,1142],{},"analytics store",[1071,1144,1089],{},[1053,1146,1147,1150,1152],{},[1071,1148,1149],{},"Credit ledger",[1071,1151,1076],{},[1071,1153,1154],{},"never deleted",[1053,1156,1157,1160,1162],{},[1071,1158,1159],{},"Audit log",[1071,1161,1076],{},[1071,1163,1154],{},[1053,1165,1166,1169,1172],{},[1071,1167,1168],{},"Live view frames",[1071,1170,1171],{},"nowhere",[1071,1173,1174],{},"never stored",[1029,1176,1178],{"id":1177},"jobs-and-their-timeline","Jobs and their timeline",[1025,1180,1181,1182,1185],{},"A job carries its inputs, its result, the tier it ran at and the credits it cost. Every status change appends a row to its timeline, and each step records its own attempt, so a retry that succeeded on the second try still shows the first one. Timelines and step records are kept for ",[1183,1184,1089],"strong",{},", after which the month they belong to is dropped as a whole.",[1025,1187,1188],{},"Running out of credits never makes a result unreadable: reads keep working when the balance is zero.",[1029,1190,1192],{"id":1191},"snapshots-and-screenshots","Snapshots and screenshots",[1025,1194,1195,1196,1198,1199,1202],{},"Page snapshots, screenshots, downloaded files and attention bundles live in object storage under a key that starts with your organisation, so nothing is shared between customers by accident. Retention follows your plan: 7, 30 or 90 days, see ",[1037,1197,1008],{"href":1113},". The snapshots a program's fields were confirmed against, its ground truth, are exempt: they are the reference healing works from, and they live as long as the program version is in use. ",[1037,1200,65],{"href":1201},"\u002Fconcepts\u002Fsnapshots"," describes what one of them holds and what it never holds.",[1029,1204,1206],{"id":1205},"secrets","Secrets",[1025,1208,1209],{},"Session storage state, stored passwords, secret inputs, webhook signing secrets and bring-your-own provider credentials are encrypted before they are written, with a key per organisation that is itself wrapped by a key Kaabist never stores next to the data. No plaintext secret is written to the database, to a snapshot, to a screenshot, to a webhook or to a log line. API keys are stored only as a hash: the key itself is shown once, when it is created.",[1029,1211,1213],{"id":1212},"credits-and-the-audit-log","Credits and the audit log",[1025,1215,1216],{},"The credit ledger is append-only. A reservation, a settlement, a refund and an expiry are each their own entry, and the balance is derived from them. Nothing rewrites history, so an invoice can always be traced back to the jobs behind it. The audit log records every approval, takeover, key change, role change, session change, billing change and data-deletion request, with who did it, from which address and with which browser. Ledger entries and the audit log are never deleted.",[1029,1218,1220],{"id":1219},"getting-your-data-out","Getting your data out",[1025,1222,1223,1224,1227,1228,1231],{},"An owner or admin can ask for everything at once: ",[1183,1225,1226],{},"Export data"," under ",[1183,1229,1230],{},"Organisation settings"," in the panel. It needs two-factor authentication on your account and a sign-in in the last fifteen minutes. Kaabist builds a zip and e-mails you a link that works for seven days. The archive holds your programs and every version of them, your sessions' names, origins and validity (never their stored state), the last ninety days of jobs with their results, the credit ledger and the audit log as CSV, and your schedules and webhook endpoints. It never holds a key, a signing secret, a provider credential or a stored input. One export is built at a time; asking again while one is being built returns that one.",[1025,1233,1234,1235,1239,1240,1243,1244,1239,1247,1250,1251,1239,1254,1257,1258,1260],{},"Anything else you read back through the API while it is retained: ",[1236,1237,1238],"code",{},"GET \u002Fv1\u002Fjobs"," and ",[1236,1241,1242],{},"GET \u002Fv1\u002Fjobs\u002F{id}"," for results, ",[1236,1245,1246],{},"GET \u002Fv1\u002Fjobs\u002F{id}\u002Fsteps",[1236,1248,1249],{},"GET \u002Fv1\u002Fjobs\u002F{id}\u002Fsnapshot"," for steps and pages, ",[1236,1252,1253],{},"GET \u002Fv1\u002Fledger",[1236,1255,1256],{},"GET \u002Fv1\u002Fusage"," for credits. The panel's ",[1183,1259,390],{}," page exports the ledger rows it has loaded as CSV.",[1029,1262,1264],{"id":1263},"erasing-your-data","Erasing your data",[1025,1266,1267,1268,1271],{},"An admin, or an ",[1236,1269,1270],{},"admin"," API key, asks for everything to be erased:",[1273,1274,1279],"pre",{"className":1275,"code":1276,"language":1277,"meta":1278,"style":1278},"language-http shiki shiki-themes kaab-code kaab-code kaab-code","POST \u002Fv1\u002Forg\u002Fdata-deletion\n","http","",[1236,1280,1281],{"__ignoreMap":1278},[1282,1283,1286,1290],"span",{"class":1284,"line":1285},"line",1,[1282,1287,1289],{"class":1288},"sqn18","POST",[1282,1291,1293],{"class":1292},"sTzsn"," \u002Fv1\u002Forg\u002Fdata-deletion\n",[1273,1295,1298],{"className":1296,"code":1297,"language":680,"meta":1278,"style":1278},"language-json shiki shiki-themes kaab-code kaab-code kaab-code","{ \"confirm\": \"acme-pricing\" }\n",[1236,1299,1300],{"__ignoreMap":1278},[1282,1301,1302,1305,1308,1312,1316],{"class":1284,"line":1285},[1282,1303,1304],{"class":1292},"{ ",[1282,1306,1307],{"class":1288},"\"confirm\"",[1282,1309,1311],{"class":1310},"sQm2-",":",[1282,1313,1315],{"class":1314},"suOy4"," \"acme-pricing\"",[1282,1317,1318],{"class":1292}," }\n",[1025,1320,1321,1324,1325,1311],{},[1236,1322,1323],{},"confirm"," must be your organisation's slug, typed back. The answer is ",[1236,1326,1327],{},"202",[1273,1329,1331],{"className":1296,"code":1330,"language":680,"meta":1278,"style":1278},"{ \"id\": \"exp_01J…\", \"scheduled_for\": \"2026-10-08T09:00:00Z\" }\n",[1236,1332,1333],{"__ignoreMap":1278},[1282,1334,1335,1337,1340,1342,1345,1348,1351,1353,1356],{"class":1284,"line":1285},[1282,1336,1304],{"class":1292},[1282,1338,1339],{"class":1288},"\"id\"",[1282,1341,1311],{"class":1310},[1282,1343,1344],{"class":1314}," \"exp_01J…\"",[1282,1346,1347],{"class":1310},",",[1282,1349,1350],{"class":1288}," \"scheduled_for\"",[1282,1352,1311],{"class":1310},[1282,1354,1355],{"class":1314}," \"2026-10-08T09:00:00Z\"",[1282,1357,1318],{"class":1292},[1025,1359,1360],{},"The request is carried out within minutes, and always within 24 hours, in this order:",[1362,1363,1364,1371,1377,1383,1389],"ol",{},[1365,1366,1367,1370],"li",{},[1183,1368,1369],{},"Stopped."," The organisation is disabled, its API keys revoked, its schedules paused, its unfinished jobs canceled and its live sessions ended.",[1365,1372,1373,1376],{},[1183,1374,1375],{},"Files."," Every snapshot, screenshot, result, downloaded file, attention bundle, asset and export of the organisation is deleted from object storage.",[1365,1378,1379,1382],{},[1183,1380,1381],{},"Records."," Programs and their versions, sessions (state and refresh inputs), provider settings, webhooks and their deliveries, schedules, members, invitations and API keys are deleted. Job records are emptied (inputs, results, warnings, errors, everything but the id, the times and the cost) and removed thirty days later.",[1365,1384,1385,1388],{},[1183,1386,1387],{},"What stays."," The credit ledger and payment records, because tax and commercial law require them; the audit log, because it is the security record, with every person in it replaced by a pseudonym that cannot be traced back; the usage statistics, under a random token that no longer names your organisation.",[1365,1390,1391,1394],{},[1183,1392,1393],{},"Confirmation."," The person who asked (or, when an API key asked, the owners) receives an e-mail when it is done.",[1025,1396,1397],{},"Backups are not edited by an erasure: data already copied into a backup stays there until the backup expires, within 35 days.",[1025,1399,1400],{},"The request is recorded with what you typed, and only one can be outstanding at a time: asking again before it is done returns the first request rather than starting a second.",[1025,1402,1403,1404,1227,1407,1409],{},"In the panel, an owner can instead use ",[1183,1405,1406],{},"Delete organisation",[1183,1408,1230],{},": it asks for the organisation's name and carries out the same deletion.",[1029,1411,1413],{"id":1412},"worked-example","Worked example",[1025,1415,1416,1417,1420],{},"An organisation on the developer plan (30 days' retention) runs a job against ",[1236,1418,1419],{},"https:\u002F\u002Fshop.example.com\u002Fp\u002F1"," on 1 October.",[1422,1423,1424,1435,1448,1451],"ul",{},[1365,1425,1426,1427,1430,1431,1434],{},"Until 31 October, ",[1236,1428,1429],{},"GET \u002Fv1\u002Fjobs\u002F{id}\u002Fsnapshot?step=steps[1]"," returns the stored page, and the panel's ",[1183,1432,1433],{},"Open the stored page"," shows it.",[1365,1436,1437,1438,1440,1441,1444,1445,1447],{},"After that, the snapshot is gone, but ",[1236,1439,1242],{}," still returns the job and its ",[1236,1442,1443],{},"data",", and ",[1236,1446,1246],{}," the step records, until the job's month is dropped thirteen months later.",[1365,1449,1450],{},"The job's ledger entries (its reservation, settlement and release) remain for good.",[1365,1452,1453,1454,1457],{},"If the organisation asks for erasure on 5 October with ",[1236,1455,1456],{},"{ \"confirm\": \"\u003Cits slug>\" }",", the job, its result and its snapshots are destroyed within 24 hours; its ledger entries and the audit row for the request remain.",[1029,1459,1461],{"id":1460},"pitfalls","Pitfalls",[1422,1463,1464,1470,1479,1485,1491],{},[1365,1465,1466,1469],{},[1183,1467,1468],{},"Plan retention applies to stored pages."," If you need a page for longer, read what you need from it while it exists.",[1365,1471,1472,1475,1476,1478],{},[1183,1473,1474],{},"A downgrade shortens retention."," Snapshots are kept for the plan's period; check ",[1037,1477,1008],{"href":1113}," before you change plan.",[1365,1480,1481,1484],{},[1183,1482,1483],{},"Erasure cannot be undone."," And it removes sessions too, so scheduled programs that rely on them fail until you sign in again.",[1365,1486,1487,1490],{},[1183,1488,1489],{},"Do not put personal data in tags or program names."," They are part of the job record and are kept with it.",[1365,1492,1493,1496],{},[1183,1494,1495],{},"Test mode is not a sandbox for real data."," Test jobs run for real against real sites; only their results expire sooner.",[1029,1498,155],{"id":1499},"reference",[1422,1501,1502,1507,1522,1526],{},[1365,1503,1504],{},[1037,1505,387],{"href":1506},"\u002Freference\u002Fapi\u002Forg\u002Frequest-data-deletion",[1365,1508,1509,1513,1514,1513,1518],{},[1037,1510,1512],{"href":1511},"\u002Freference\u002Fapi\u002Fjobs\u002Fget-job","Get a job",", ",[1037,1515,1517],{"href":1516},"\u002Freference\u002Fapi\u002Fjobs\u002Flist-job-steps","list a job's steps",[1037,1519,1521],{"href":1520},"\u002Freference\u002Fapi\u002Fledger\u002Flist-ledger-entries","list ledger entries",[1365,1523,1524],{},[1037,1525,1008],{"href":1113},[1365,1527,1528],{},[1037,1529,1040],{"href":1039},[1531,1532,1533],"style",{},"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 .sTzsn, html code.shiki .sTzsn{--shiki-light:var(--kaab-code-foreground);--shiki-default:var(--kaab-code-foreground);--shiki-dark:var(--kaab-code-foreground)}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 .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)}",{"title":1278,"searchDepth":1535,"depth":1535,"links":1536},3,[1537,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548],{"id":1031,"depth":1538,"text":1032},2,{"id":1044,"depth":1538,"text":1045},{"id":1177,"depth":1538,"text":1178},{"id":1191,"depth":1538,"text":1192},{"id":1205,"depth":1538,"text":1206},{"id":1212,"depth":1538,"text":1213},{"id":1219,"depth":1538,"text":1220},{"id":1263,"depth":1538,"text":1264},{"id":1412,"depth":1538,"text":1413},{"id":1460,"depth":1538,"text":1461},{"id":1499,"depth":1538,"text":155},false,null,"What Kaabist stores about your work, where it lives, when it is deleted, and how to ask for everything to be erased.","md",{},true,"\u002Fconcepts\u002Fdata-retention",{"title":77,"description":1551},"2.concepts\u002F17.data-retention","miWD_4-0Cd6MJzenkFLhbedprHBkZnXX0d21u5uGHE8",[1560,1564],{"title":74,"path":1561,"stem":1562,"description":1563,"children":-1},"\u002Fconcepts\u002Faccounts-and-roles","2.concepts\u002F16.accounts-and-roles","Signing in to the panel, organisations and invitations, the five roles and what each may do, API key scopes, and two-factor authentication.",{"title":80,"path":1565,"stem":1566,"description":1567,"children":-1},"\u002Fconcepts\u002Fdocuments-and-pdfs","2.concepts\u002F18.documents-and-pdfs","How Kaabist handles PDFs: the gate every PDF passes before it is stored or read, the limits it enforces, and the codes you get when a file is refused.",1793593414202]