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