[{"data":1,"prerenderedAt":1487},["ShallowReactive",2],{"docs-nav":3,"content:\u002Fapi\u002Fapi-tokens":78},[4,18,29,35,46,63,66,69,72,75],{"path":5,"title":6,"navTitle":6,"order":7,"subnav":8},"\u002Fapi\u002Fapi-tokens","API tokens",3,[9,12,15],{"title":10,"anchor":11},"Create an API key","create-an-api-key",{"title":13,"anchor":14},"List API keys","list-api-keys",{"title":16,"anchor":17},"Revoke an API key","revoke-an-api-key",{"path":19,"title":20,"navTitle":20,"order":21,"subnav":22},"\u002Fapi\u002Fbalances","Balances",4,[23,26],{"title":24,"anchor":25},"The balance object","the-balance-object",{"title":27,"anchor":28},"List balances","list-balances",{"path":30,"title":31,"navTitle":32,"order":33,"subnav":34},"\u002Fapi","API overview","Overview",1,null,{"path":36,"title":37,"navTitle":37,"order":38,"subnav":39},"\u002Fapi\u002Fsender-ids","Sender IDs",5,[40,43],{"title":41,"anchor":42},"The sender identity object","the-sender-identity-object",{"title":44,"anchor":45},"List sender IDs","list-sender-ids",{"path":47,"title":48,"navTitle":48,"order":49,"subnav":50},"\u002Fapi\u002Fsms","SMS",2,[51,54,57,60],{"title":52,"anchor":53},"The message object","the-message-object",{"title":55,"anchor":56},"Send an SMS","send-an-sms",{"title":58,"anchor":59},"Retrieve an SMS","retrieve-an-sms",{"title":61,"anchor":62},"Send bulk SMS","send-bulk-sms",{"path":64,"title":65,"navTitle":65,"order":49,"subnav":34},"\u002Fguides\u002Fauthentication","Authentication",{"path":67,"title":68,"navTitle":68,"order":7,"subnav":34},"\u002Fguides\u002Fbulk-sms","Bulk SMS",{"path":70,"title":71,"navTitle":71,"order":38,"subnav":34},"\u002Fguides\u002Fmcp","AI agents (MCP)",{"path":73,"title":74,"navTitle":74,"order":33,"subnav":34},"\u002Fguides\u002Fquickstart","Quickstart",{"path":76,"title":77,"navTitle":77,"order":21,"subnav":34},"\u002Fguides\u002Fwebhooks","Webhooks",{"id":79,"path":5,"title":6,"description":80,"navTitle":6,"order":7,"wide":81,"body":82,"seo":1483,"stem":1484,"extension":1485,"meta":1486,"navigation":81},"content\u002Fapi\u002Fapi-tokens.md","Create, list, and revoke the API keys that authenticate every request. The key secret is returned once, at creation, and never again.",true,{"type":83,"value":84,"toc":1478},"minimark",[85,98,109,112,117,708,710,713,1156,1158,1162,1474],[86,87,88,89,93,94,97],"p",{},"API keys are the only credential on the API. Create your first key in the dashboard under\n",[90,91,92],"strong",{},"Settings → Developer","; once you hold one, you can manage keys over the API itself. For\nrotation runbooks and safe handling, see ",[95,96,65],"a",{"href":64},".",[86,99,100,101,104,105,108],{},"There is no single canonical token object: the ",[90,102,103],{},"create"," response is a snake_case object\ncarrying the secret once, while the ",[90,106,107],{},"list"," response serialises the internal record with\nPascalCase field names. Each shape is documented with its operation below rather than\npretended into one.",[110,111,10],"h2",{"id":11},[113,114],"endpoint",{"method":115,"path":116},"POST","\u002Fapi\u002Fv1\u002Fapi-tokens",[118,119,120,220],"row",{},[121,122,123,134,139,151,155,171,175],"column",{},[86,124,125,126,133],{},"Creates a key. ",[90,127,128,132],{},[129,130,131],"code",{},"data.token"," is the secret and is returned only here"," — Sendai stores a\nhash, so a lost key cannot be recovered; revoke it and create another.",[135,136,138],"h3",{"id":137},"request-body","Request body",[140,141,142],"properties",{},[143,144,148],"property",{":required":145,"name":146,"type":147},"true","name","string",[86,149,150],{},"Identifies the key. Name it for the service that will use it — you will be glad of it when\nyou come to rotate.",[135,152,154],{"id":153},"response","Response",[86,156,157,160,161,164,165,167,168,170],{},[129,158,159],{},"data.id"," is what you pass to the revoke endpoint — keep it alongside the key. ",[129,162,163],{},"account_id","\nis the account the key authenticates as; the account-scoped\n",[95,166,20],{"href":19}," and ",[95,169,37],{"href":36}," endpoints take it in their path.",[135,172,174],{"id":173},"errors","Errors",[176,177,178,191],"table",{},[179,180,181],"thead",{},[182,183,184,188],"tr",{},[185,186,187],"th",{},"Status",[185,189,190],{},"When",[192,193,194,210],"tbody",{},[182,195,196,202],{},[197,198,199],"td",{},[129,200,201],{},"400",[197,203,204,206,207,97],{},[129,205,146],{}," is missing — listed in ",[129,208,209],{},"error.validation_errors",[182,211,212,217],{},[197,213,214],{},[129,215,216],{},"401",[197,218,219],{},"Missing, malformed, or revoked API key.",[121,221,222,595],{":sticky":145},[223,224,227,293,461],"code-group",{"title":225,"label":226},"Request","POST \u002Fapi\u002Fv1\u002Fapi-tokens",[228,229,235],"pre",{"className":230,"code":231,"filename":232,"language":233,"meta":234,"style":234},"language-bash shiki shiki-themes github-light github-dark","curl -X POST https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens \\\n  -H \"Authorization: Bearer $SENDAI_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"name\": \"orders-service\" }'\n","cURL","bash","",[129,236,237,259,276,285],{"__ignoreMap":234},[238,239,241,245,249,253,256],"span",{"class":240,"line":33},"line",[238,242,244],{"class":243},"sScJk","curl",[238,246,248],{"class":247},"sj4cs"," -X",[238,250,252],{"class":251},"sZZnC"," POST",[238,254,255],{"class":251}," https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens",[238,257,258],{"class":247}," \\\n",[238,260,261,264,267,271,274],{"class":240,"line":49},[238,262,263],{"class":247},"  -H",[238,265,266],{"class":251}," \"Authorization: Bearer ",[238,268,270],{"class":269},"sVt8B","$SENDAI_API_KEY",[238,272,273],{"class":251},"\"",[238,275,258],{"class":247},[238,277,278,280,283],{"class":240,"line":7},[238,279,263],{"class":247},[238,281,282],{"class":251}," \"Content-Type: application\u002Fjson\"",[238,284,258],{"class":247},[238,286,287,290],{"class":240,"line":21},[238,288,289],{"class":247},"  -d",[238,291,292],{"class":251}," '{ \"name\": \"orders-service\" }'\n",[228,294,299],{"className":295,"code":296,"filename":297,"language":298,"meta":234,"style":234},"language-js shiki shiki-themes github-light github-dark","const res = await fetch('https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens', {\n  method: 'POST',\n  headers: {\n    'Authorization': `Bearer ${process.env.SENDAI_API_KEY}`,\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ name: 'orders-service' }),\n})\n\nconst { data } = await res.json()\n\u002F\u002F data.token is shown only in this response — store it now\n","Node.js","js",[129,300,301,328,339,344,373,385,391,414,420,426,454],{"__ignoreMap":234},[238,302,303,307,310,313,316,319,322,325],{"class":240,"line":33},[238,304,306],{"class":305},"szBVR","const",[238,308,309],{"class":247}," res",[238,311,312],{"class":305}," =",[238,314,315],{"class":305}," await",[238,317,318],{"class":243}," fetch",[238,320,321],{"class":269},"(",[238,323,324],{"class":251},"'https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens'",[238,326,327],{"class":269},", {\n",[238,329,330,333,336],{"class":240,"line":49},[238,331,332],{"class":269},"  method: ",[238,334,335],{"class":251},"'POST'",[238,337,338],{"class":269},",\n",[238,340,341],{"class":240,"line":7},[238,342,343],{"class":269},"  headers: {\n",[238,345,346,349,352,355,358,360,363,365,368,371],{"class":240,"line":21},[238,347,348],{"class":251},"    'Authorization'",[238,350,351],{"class":269},": ",[238,353,354],{"class":251},"`Bearer ${",[238,356,357],{"class":269},"process",[238,359,97],{"class":251},[238,361,362],{"class":269},"env",[238,364,97],{"class":251},[238,366,367],{"class":247},"SENDAI_API_KEY",[238,369,370],{"class":251},"}`",[238,372,338],{"class":269},[238,374,375,378,380,383],{"class":240,"line":38},[238,376,377],{"class":251},"    'Content-Type'",[238,379,351],{"class":269},[238,381,382],{"class":251},"'application\u002Fjson'",[238,384,338],{"class":269},[238,386,388],{"class":240,"line":387},6,[238,389,390],{"class":269},"  },\n",[238,392,394,397,400,402,405,408,411],{"class":240,"line":393},7,[238,395,396],{"class":269},"  body: ",[238,398,399],{"class":247},"JSON",[238,401,97],{"class":269},[238,403,404],{"class":243},"stringify",[238,406,407],{"class":269},"({ name: ",[238,409,410],{"class":251},"'orders-service'",[238,412,413],{"class":269}," }),\n",[238,415,417],{"class":240,"line":416},8,[238,418,419],{"class":269},"})\n",[238,421,423],{"class":240,"line":422},9,[238,424,425],{"emptyLinePlaceholder":81},"\n",[238,427,429,431,434,437,440,443,445,448,451],{"class":240,"line":428},10,[238,430,306],{"class":305},[238,432,433],{"class":269}," { ",[238,435,436],{"class":247},"data",[238,438,439],{"class":269}," } ",[238,441,442],{"class":305},"=",[238,444,315],{"class":305},[238,446,447],{"class":269}," res.",[238,449,450],{"class":243},"json",[238,452,453],{"class":269},"()\n",[238,455,457],{"class":240,"line":456},11,[238,458,460],{"class":459},"sJ8bj","\u002F\u002F data.token is shown only in this response — store it now\n",[228,462,467],{"className":463,"code":464,"filename":465,"language":466,"meta":234,"style":234},"language-python shiki shiki-themes github-light github-dark","import os\nimport requests\n\nres = requests.post(\n    \"https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens\",\n    headers={\"Authorization\": f\"Bearer {os.environ['SENDAI_API_KEY']}\"},\n    json={\"name\": \"orders-service\"},\n)\n\ndata = res.json()[\"data\"]\n# data[\"token\"] is shown only in this response — store it now\n","Python","python",[129,468,469,477,484,488,498,505,546,565,570,574,590],{"__ignoreMap":234},[238,470,471,474],{"class":240,"line":33},[238,472,473],{"class":305},"import",[238,475,476],{"class":269}," os\n",[238,478,479,481],{"class":240,"line":49},[238,480,473],{"class":305},[238,482,483],{"class":269}," requests\n",[238,485,486],{"class":240,"line":7},[238,487,425],{"emptyLinePlaceholder":81},[238,489,490,493,495],{"class":240,"line":21},[238,491,492],{"class":269},"res ",[238,494,442],{"class":305},[238,496,497],{"class":269}," requests.post(\n",[238,499,500,503],{"class":240,"line":38},[238,501,502],{"class":251},"    \"https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens\"",[238,504,338],{"class":269},[238,506,507,511,513,516,519,521,524,527,529,532,535,538,541,543],{"class":240,"line":387},[238,508,510],{"class":509},"s4XuR","    headers",[238,512,442],{"class":305},[238,514,515],{"class":269},"{",[238,517,518],{"class":251},"\"Authorization\"",[238,520,351],{"class":269},[238,522,523],{"class":305},"f",[238,525,526],{"class":251},"\"Bearer ",[238,528,515],{"class":247},[238,530,531],{"class":269},"os.environ[",[238,533,534],{"class":251},"'SENDAI_API_KEY'",[238,536,537],{"class":269},"]",[238,539,540],{"class":247},"}",[238,542,273],{"class":251},[238,544,545],{"class":269},"},\n",[238,547,548,551,553,555,558,560,563],{"class":240,"line":393},[238,549,550],{"class":509},"    json",[238,552,442],{"class":305},[238,554,515],{"class":269},[238,556,557],{"class":251},"\"name\"",[238,559,351],{"class":269},[238,561,562],{"class":251},"\"orders-service\"",[238,564,545],{"class":269},[238,566,567],{"class":240,"line":416},[238,568,569],{"class":269},")\n",[238,571,572],{"class":240,"line":422},[238,573,425],{"emptyLinePlaceholder":81},[238,575,576,579,581,584,587],{"class":240,"line":428},[238,577,578],{"class":269},"data ",[238,580,442],{"class":305},[238,582,583],{"class":269}," res.json()[",[238,585,586],{"class":251},"\"data\"",[238,588,589],{"class":269},"]\n",[238,591,592],{"class":240,"line":456},[238,593,594],{"class":459},"# data[\"token\"] is shown only in this response — store it now\n",[223,596,597],{"title":154},[228,598,602],{"className":599,"code":600,"filename":601,"language":450,"meta":234,"style":234},"language-json shiki shiki-themes github-light github-dark","{\n  \"status\": \"success\",\n  \"message\": \"api token created — save this token, it will not be shown again\",\n  \"data\": {\n    \"id\": \"9f2a4c8e-6b21-4d0f-a97b-5e8c1d2f6a3b\",\n    \"name\": \"orders-service\",\n    \"token\": \"sk_live_4c8e6b21d0f34a97b5e8c1d2f6a3b904\",\n    \"account_id\": \"2d6f4b8e-1a90-4e21-8b7d-3f1a5c2e9a0c\",\n    \"created_at\": \"2026-07-06T09:12:03Z\"\n  }\n}\n","201 Created",[129,603,604,609,621,633,641,653,664,676,688,698,703],{"__ignoreMap":234},[238,605,606],{"class":240,"line":33},[238,607,608],{"class":269},"{\n",[238,610,611,614,616,619],{"class":240,"line":49},[238,612,613],{"class":247},"  \"status\"",[238,615,351],{"class":269},[238,617,618],{"class":251},"\"success\"",[238,620,338],{"class":269},[238,622,623,626,628,631],{"class":240,"line":7},[238,624,625],{"class":247},"  \"message\"",[238,627,351],{"class":269},[238,629,630],{"class":251},"\"api token created — save this token, it will not be shown again\"",[238,632,338],{"class":269},[238,634,635,638],{"class":240,"line":21},[238,636,637],{"class":247},"  \"data\"",[238,639,640],{"class":269},": {\n",[238,642,643,646,648,651],{"class":240,"line":38},[238,644,645],{"class":247},"    \"id\"",[238,647,351],{"class":269},[238,649,650],{"class":251},"\"9f2a4c8e-6b21-4d0f-a97b-5e8c1d2f6a3b\"",[238,652,338],{"class":269},[238,654,655,658,660,662],{"class":240,"line":387},[238,656,657],{"class":247},"    \"name\"",[238,659,351],{"class":269},[238,661,562],{"class":251},[238,663,338],{"class":269},[238,665,666,669,671,674],{"class":240,"line":393},[238,667,668],{"class":247},"    \"token\"",[238,670,351],{"class":269},[238,672,673],{"class":251},"\"sk_live_4c8e6b21d0f34a97b5e8c1d2f6a3b904\"",[238,675,338],{"class":269},[238,677,678,681,683,686],{"class":240,"line":416},[238,679,680],{"class":247},"    \"account_id\"",[238,682,351],{"class":269},[238,684,685],{"class":251},"\"2d6f4b8e-1a90-4e21-8b7d-3f1a5c2e9a0c\"",[238,687,338],{"class":269},[238,689,690,693,695],{"class":240,"line":422},[238,691,692],{"class":247},"    \"created_at\"",[238,694,351],{"class":269},[238,696,697],{"class":251},"\"2026-07-06T09:12:03Z\"\n",[238,699,700],{"class":240,"line":428},[238,701,702],{"class":269},"  }\n",[238,704,705],{"class":240,"line":456},[238,706,707],{"class":269},"}\n",[110,709,13],{"id":14},[113,711],{"method":712,"path":116},"GET",[118,714,715,784],{},[121,716,717,728,752,761,764],{},[86,718,719,720,723,724,727],{},"Lists the keys on your account. ",[90,721,722],{},"This response is not normalised",": it serialises the\ninternal record directly, so field names are ",[90,725,726],{},"PascalCase"," rather than snake_case and\ninclude storage columns.",[86,729,730,731,734,735,734,738,734,741,167,744,747,748,751],{},"Read ",[129,732,733],{},"ID",", ",[129,736,737],{},"Name",[129,739,740],{},"Active",[129,742,743],{},"CreatedAt",[129,745,746],{},"LastUsedAt","; treat everything else (such as\n",[129,749,750],{},"TokenHash",") as unstable and do not build against it. Key material is never returned.",[86,753,754,756,757,760],{},[129,755,746],{}," is the useful one for cleanup: ",[129,758,759],{},"null"," means never used, and a key untouched for\nmonths is usually one you can revoke.",[135,762,174],{"id":763},"errors-1",[176,765,766,774],{},[179,767,768],{},[182,769,770,772],{},[185,771,187],{},[185,773,190],{},[192,775,776],{},[182,777,778,782],{},[197,779,780],{},[129,781,216],{},[197,783,219],{},[121,785,786,991],{":sticky":145},[223,787,789,813,900],{"title":225,"label":788},"GET \u002Fapi\u002Fv1\u002Fapi-tokens",[228,790,792],{"className":230,"code":791,"filename":232,"language":233,"meta":234,"style":234},"curl https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens \\\n  -H \"Authorization: Bearer $SENDAI_API_KEY\"\n",[129,793,794,802],{"__ignoreMap":234},[238,795,796,798,800],{"class":240,"line":33},[238,797,244],{"class":243},[238,799,255],{"class":251},[238,801,258],{"class":247},[238,803,804,806,808,810],{"class":240,"line":49},[238,805,263],{"class":247},[238,807,266],{"class":251},[238,809,270],{"class":269},[238,811,812],{"class":251},"\"\n",[228,814,816],{"className":295,"code":815,"filename":297,"language":298,"meta":234,"style":234},"const res = await fetch('https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens', {\n  headers: { 'Authorization': `Bearer ${process.env.SENDAI_API_KEY}` },\n})\n\nconst { data: keys } = await res.json() \u002F\u002F PascalCase fields — ID, Name, Active…\n",[129,817,818,836,863,867,871],{"__ignoreMap":234},[238,819,820,822,824,826,828,830,832,834],{"class":240,"line":33},[238,821,306],{"class":305},[238,823,309],{"class":247},[238,825,312],{"class":305},[238,827,315],{"class":305},[238,829,318],{"class":243},[238,831,321],{"class":269},[238,833,324],{"class":251},[238,835,327],{"class":269},[238,837,838,841,844,846,848,850,852,854,856,858,860],{"class":240,"line":49},[238,839,840],{"class":269},"  headers: { ",[238,842,843],{"class":251},"'Authorization'",[238,845,351],{"class":269},[238,847,354],{"class":251},[238,849,357],{"class":269},[238,851,97],{"class":251},[238,853,362],{"class":269},[238,855,97],{"class":251},[238,857,367],{"class":247},[238,859,370],{"class":251},[238,861,862],{"class":269}," },\n",[238,864,865],{"class":240,"line":7},[238,866,419],{"class":269},[238,868,869],{"class":240,"line":21},[238,870,425],{"emptyLinePlaceholder":81},[238,872,873,875,877,879,881,884,886,888,890,892,894,897],{"class":240,"line":38},[238,874,306],{"class":305},[238,876,433],{"class":269},[238,878,436],{"class":509},[238,880,351],{"class":269},[238,882,883],{"class":247},"keys",[238,885,439],{"class":269},[238,887,442],{"class":305},[238,889,315],{"class":305},[238,891,447],{"class":269},[238,893,450],{"class":243},[238,895,896],{"class":269},"() ",[238,898,899],{"class":459},"\u002F\u002F PascalCase fields — ID, Name, Active…\n",[228,901,903],{"className":463,"code":902,"filename":465,"language":466,"meta":234,"style":234},"import os\nimport requests\n\nres = requests.get(\n    \"https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens\",\n    headers={\"Authorization\": f\"Bearer {os.environ['SENDAI_API_KEY']}\"},\n)\n\nkeys = res.json()[\"data\"]  # PascalCase fields — ID, Name, Active…\n",[129,904,905,911,917,921,930,936,966,970,974],{"__ignoreMap":234},[238,906,907,909],{"class":240,"line":33},[238,908,473],{"class":305},[238,910,476],{"class":269},[238,912,913,915],{"class":240,"line":49},[238,914,473],{"class":305},[238,916,483],{"class":269},[238,918,919],{"class":240,"line":7},[238,920,425],{"emptyLinePlaceholder":81},[238,922,923,925,927],{"class":240,"line":21},[238,924,492],{"class":269},[238,926,442],{"class":305},[238,928,929],{"class":269}," requests.get(\n",[238,931,932,934],{"class":240,"line":38},[238,933,502],{"class":251},[238,935,338],{"class":269},[238,937,938,940,942,944,946,948,950,952,954,956,958,960,962,964],{"class":240,"line":387},[238,939,510],{"class":509},[238,941,442],{"class":305},[238,943,515],{"class":269},[238,945,518],{"class":251},[238,947,351],{"class":269},[238,949,523],{"class":305},[238,951,526],{"class":251},[238,953,515],{"class":247},[238,955,531],{"class":269},[238,957,534],{"class":251},[238,959,537],{"class":269},[238,961,540],{"class":247},[238,963,273],{"class":251},[238,965,545],{"class":269},[238,967,968],{"class":240,"line":393},[238,969,569],{"class":269},[238,971,972],{"class":240,"line":416},[238,973,425],{"emptyLinePlaceholder":81},[238,975,976,979,981,983,985,988],{"class":240,"line":422},[238,977,978],{"class":269},"keys ",[238,980,442],{"class":305},[238,982,583],{"class":269},[238,984,586],{"class":251},[238,986,987],{"class":269},"]  ",[238,989,990],{"class":459},"# PascalCase fields — ID, Name, Active…\n",[223,992,993],{"title":154},[228,994,997],{"className":599,"code":995,"filename":996,"language":450,"meta":234,"style":234},"{\n  \"status\": \"success\",\n  \"message\": \"\",\n  \"data\": [\n    {\n      \"ID\": \"9f2a4c8e-6b21-4d0f-a97b-5e8c1d2f6a3b\",\n      \"CreatedAt\": \"2026-07-06T09:12:03Z\",\n      \"UpdatedAt\": null,\n      \"DeletedAt\": null,\n      \"Name\": \"orders-service\",\n      \"TokenHash\": \"9b74c9897bac770ffc029102a200c5de0d3d2a2f4b2b6c9a2f0b4b2c1d8e3f7a\",\n      \"AccountId\": \"2d6f4b8e-1a90-4e21-8b7d-3f1a5c2e9a0c\",\n      \"Active\": true,\n      \"LastUsedAt\": \"2026-08-06T11:04:19Z\"\n    }\n  ]\n}\n","200 OK",[129,998,999,1003,1013,1024,1031,1036,1047,1059,1070,1081,1092,1104,1116,1128,1139,1145,1151],{"__ignoreMap":234},[238,1000,1001],{"class":240,"line":33},[238,1002,608],{"class":269},[238,1004,1005,1007,1009,1011],{"class":240,"line":49},[238,1006,613],{"class":247},[238,1008,351],{"class":269},[238,1010,618],{"class":251},[238,1012,338],{"class":269},[238,1014,1015,1017,1019,1022],{"class":240,"line":7},[238,1016,625],{"class":247},[238,1018,351],{"class":269},[238,1020,1021],{"class":251},"\"\"",[238,1023,338],{"class":269},[238,1025,1026,1028],{"class":240,"line":21},[238,1027,637],{"class":247},[238,1029,1030],{"class":269},": [\n",[238,1032,1033],{"class":240,"line":38},[238,1034,1035],{"class":269},"    {\n",[238,1037,1038,1041,1043,1045],{"class":240,"line":387},[238,1039,1040],{"class":247},"      \"ID\"",[238,1042,351],{"class":269},[238,1044,650],{"class":251},[238,1046,338],{"class":269},[238,1048,1049,1052,1054,1057],{"class":240,"line":393},[238,1050,1051],{"class":247},"      \"CreatedAt\"",[238,1053,351],{"class":269},[238,1055,1056],{"class":251},"\"2026-07-06T09:12:03Z\"",[238,1058,338],{"class":269},[238,1060,1061,1064,1066,1068],{"class":240,"line":416},[238,1062,1063],{"class":247},"      \"UpdatedAt\"",[238,1065,351],{"class":269},[238,1067,759],{"class":247},[238,1069,338],{"class":269},[238,1071,1072,1075,1077,1079],{"class":240,"line":422},[238,1073,1074],{"class":247},"      \"DeletedAt\"",[238,1076,351],{"class":269},[238,1078,759],{"class":247},[238,1080,338],{"class":269},[238,1082,1083,1086,1088,1090],{"class":240,"line":428},[238,1084,1085],{"class":247},"      \"Name\"",[238,1087,351],{"class":269},[238,1089,562],{"class":251},[238,1091,338],{"class":269},[238,1093,1094,1097,1099,1102],{"class":240,"line":456},[238,1095,1096],{"class":247},"      \"TokenHash\"",[238,1098,351],{"class":269},[238,1100,1101],{"class":251},"\"9b74c9897bac770ffc029102a200c5de0d3d2a2f4b2b6c9a2f0b4b2c1d8e3f7a\"",[238,1103,338],{"class":269},[238,1105,1107,1110,1112,1114],{"class":240,"line":1106},12,[238,1108,1109],{"class":247},"      \"AccountId\"",[238,1111,351],{"class":269},[238,1113,685],{"class":251},[238,1115,338],{"class":269},[238,1117,1119,1122,1124,1126],{"class":240,"line":1118},13,[238,1120,1121],{"class":247},"      \"Active\"",[238,1123,351],{"class":269},[238,1125,145],{"class":247},[238,1127,338],{"class":269},[238,1129,1131,1134,1136],{"class":240,"line":1130},14,[238,1132,1133],{"class":247},"      \"LastUsedAt\"",[238,1135,351],{"class":269},[238,1137,1138],{"class":251},"\"2026-08-06T11:04:19Z\"\n",[238,1140,1142],{"class":240,"line":1141},15,[238,1143,1144],{"class":269},"    }\n",[238,1146,1148],{"class":240,"line":1147},16,[238,1149,1150],{"class":269},"  ]\n",[238,1152,1154],{"class":240,"line":1153},17,[238,1155,707],{"class":269},[110,1157,16],{"id":17},[113,1159],{"method":1160,"path":1161},"DELETE","\u002Fapi\u002Fv1\u002Fapi-tokens\u002F{id}",[118,1163,1164,1239],{},[121,1165,1166,1171,1175,1187,1190,1205,1208],{},[86,1167,1168,1169,97],{},"Revokes immediately — the next request using that key gets a ",[129,1170,216],{},[135,1172,1174],{"id":1173},"path-parameters","Path parameters",[140,1176,1177],{},[143,1178,1181],{":required":145,"name":1179,"type":1180},"id","string (uuid)",[86,1182,1183,1184,1186],{},"The key's ",[129,1185,733],{},", from the create or list response.",[135,1188,154],{"id":1189},"response-1",[86,1191,1192,1193,1196,1197,1200,1201,1204],{},"Note that revoking an id that does not exist does ",[90,1194,1195],{},"not"," return ",[129,1198,1199],{},"404"," — treat a ",[129,1202,1203],{},"200"," as\n\"this key is now not valid\" rather than as proof the key existed.",[135,1206,174],{"id":1207},"errors-2",[176,1209,1210,1218],{},[179,1211,1212],{},[182,1213,1214,1216],{},[185,1215,187],{},[185,1217,190],{},[192,1219,1220,1231],{},[182,1221,1222,1226],{},[197,1223,1224],{},[129,1225,201],{},[197,1227,1228,1230],{},[129,1229,1179],{}," is not a valid UUID.",[182,1232,1233,1237],{},[197,1234,1235],{},[129,1236,216],{},[197,1238,219],{},[121,1240,1241,1442],{":sticky":145},[223,1242,1244,1273,1349],{"title":225,"label":1243},"DELETE \u002Fapi\u002Fv1\u002Fapi-tokens\u002F{id}",[228,1245,1247],{"className":230,"code":1246,"filename":232,"language":233,"meta":234,"style":234},"curl -X DELETE https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens\u002F9f2a4c8e-6b21-4d0f-a97b-5e8c1d2f6a3b \\\n  -H \"Authorization: Bearer $SENDAI_API_KEY\"\n",[129,1248,1249,1263],{"__ignoreMap":234},[238,1250,1251,1253,1255,1258,1261],{"class":240,"line":33},[238,1252,244],{"class":243},[238,1254,248],{"class":247},[238,1256,1257],{"class":251}," DELETE",[238,1259,1260],{"class":251}," https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens\u002F9f2a4c8e-6b21-4d0f-a97b-5e8c1d2f6a3b",[238,1262,258],{"class":247},[238,1264,1265,1267,1269,1271],{"class":240,"line":49},[238,1266,263],{"class":247},[238,1268,266],{"class":251},[238,1270,270],{"class":269},[238,1272,812],{"class":251},[228,1274,1276],{"className":295,"code":1275,"filename":297,"language":298,"meta":234,"style":234},"const id = '9f2a4c8e-6b21-4d0f-a97b-5e8c1d2f6a3b'\n\nawait fetch(`https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens\u002F${id}`, {\n  method: 'DELETE',\n  headers: { 'Authorization': `Bearer ${process.env.SENDAI_API_KEY}` },\n})\n",[129,1277,1278,1290,1294,1312,1321,1345],{"__ignoreMap":234},[238,1279,1280,1282,1285,1287],{"class":240,"line":33},[238,1281,306],{"class":305},[238,1283,1284],{"class":247}," id",[238,1286,312],{"class":305},[238,1288,1289],{"class":251}," '9f2a4c8e-6b21-4d0f-a97b-5e8c1d2f6a3b'\n",[238,1291,1292],{"class":240,"line":49},[238,1293,425],{"emptyLinePlaceholder":81},[238,1295,1296,1299,1301,1303,1306,1308,1310],{"class":240,"line":7},[238,1297,1298],{"class":305},"await",[238,1300,318],{"class":243},[238,1302,321],{"class":269},[238,1304,1305],{"class":251},"`https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens\u002F${",[238,1307,1179],{"class":269},[238,1309,370],{"class":251},[238,1311,327],{"class":269},[238,1313,1314,1316,1319],{"class":240,"line":21},[238,1315,332],{"class":269},[238,1317,1318],{"class":251},"'DELETE'",[238,1320,338],{"class":269},[238,1322,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343],{"class":240,"line":38},[238,1324,840],{"class":269},[238,1326,843],{"class":251},[238,1328,351],{"class":269},[238,1330,354],{"class":251},[238,1332,357],{"class":269},[238,1334,97],{"class":251},[238,1336,362],{"class":269},[238,1338,97],{"class":251},[238,1340,367],{"class":247},[238,1342,370],{"class":251},[238,1344,862],{"class":269},[238,1346,1347],{"class":240,"line":387},[238,1348,419],{"class":269},[228,1350,1352],{"className":463,"code":1351,"filename":465,"language":466,"meta":234,"style":234},"import os\nimport requests\n\nkey_id = \"9f2a4c8e-6b21-4d0f-a97b-5e8c1d2f6a3b\"\n\nrequests.delete(\n    f\"https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens\u002F{key_id}\",\n    headers={\"Authorization\": f\"Bearer {os.environ['SENDAI_API_KEY']}\"},\n)\n",[129,1353,1354,1360,1366,1370,1380,1384,1389,1408,1438],{"__ignoreMap":234},[238,1355,1356,1358],{"class":240,"line":33},[238,1357,473],{"class":305},[238,1359,476],{"class":269},[238,1361,1362,1364],{"class":240,"line":49},[238,1363,473],{"class":305},[238,1365,483],{"class":269},[238,1367,1368],{"class":240,"line":7},[238,1369,425],{"emptyLinePlaceholder":81},[238,1371,1372,1375,1377],{"class":240,"line":21},[238,1373,1374],{"class":269},"key_id ",[238,1376,442],{"class":305},[238,1378,1379],{"class":251}," \"9f2a4c8e-6b21-4d0f-a97b-5e8c1d2f6a3b\"\n",[238,1381,1382],{"class":240,"line":38},[238,1383,425],{"emptyLinePlaceholder":81},[238,1385,1386],{"class":240,"line":387},[238,1387,1388],{"class":269},"requests.delete(\n",[238,1390,1391,1394,1397,1399,1402,1404,1406],{"class":240,"line":393},[238,1392,1393],{"class":305},"    f",[238,1395,1396],{"class":251},"\"https:\u002F\u002Fapi.sendai.co.zw\u002Fapi\u002Fv1\u002Fapi-tokens\u002F",[238,1398,515],{"class":247},[238,1400,1401],{"class":269},"key_id",[238,1403,540],{"class":247},[238,1405,273],{"class":251},[238,1407,338],{"class":269},[238,1409,1410,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436],{"class":240,"line":416},[238,1411,510],{"class":509},[238,1413,442],{"class":305},[238,1415,515],{"class":269},[238,1417,518],{"class":251},[238,1419,351],{"class":269},[238,1421,523],{"class":305},[238,1423,526],{"class":251},[238,1425,515],{"class":247},[238,1427,531],{"class":269},[238,1429,534],{"class":251},[238,1431,537],{"class":269},[238,1433,540],{"class":247},[238,1435,273],{"class":251},[238,1437,545],{"class":269},[238,1439,1440],{"class":240,"line":422},[238,1441,569],{"class":269},[223,1443,1444],{"title":154},[228,1445,1447],{"className":599,"code":1446,"filename":996,"language":450,"meta":234,"style":234},"{ \"status\": \"success\", \"message\": \"api token revoked\" }\n",[129,1448,1449],{"__ignoreMap":234},[238,1450,1451,1454,1457,1459,1461,1463,1466,1468,1471],{"class":240,"line":33},[238,1452,1453],{"class":269},"{ ",[238,1455,1456],{"class":247},"\"status\"",[238,1458,351],{"class":269},[238,1460,618],{"class":251},[238,1462,734],{"class":269},[238,1464,1465],{"class":247},"\"message\"",[238,1467,351],{"class":269},[238,1469,1470],{"class":251},"\"api token revoked\"",[238,1472,1473],{"class":269}," }\n",[1475,1476,1477],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":234,"searchDepth":49,"depth":49,"links":1479},[1480,1481,1482],{"id":11,"depth":49,"text":10},{"id":14,"depth":49,"text":13},{"id":17,"depth":49,"text":16},{"title":6,"description":80},"api\u002Fapi-tokens","md",{},1786390037580]