List Customer Keys
curl --request GET \
--url https://app.thinnest.ai/api/v1/customers/{id}/keys \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/customers/{id}/keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/customers/{id}/keys"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"id": "0c7e4a92-3d1b-4f6a-8e25-91b7c3d4f5a6",
"name": "Sunrise front-desk dashboard",
"prefix": "ta_live_Xk3pQ9",
"scope": "read",
"createdAt": "2026-10-03T08:22:10.511Z",
"lastUsedAt": "2026-10-06T09:58:47.090Z",
"revokedAt": null
},
{
"id": "7f1b9d20-6c4e-4a83-b5d7-2e9f0a1c3b48",
"name": "Old CRM sync",
"prefix": "ta_live_m2Rt8w",
"scope": "build",
"createdAt": "2026-09-12T14:05:33.004Z",
"lastUsedAt": "2026-09-30T18:41:02.776Z",
"revokedAt": "2026-10-01T05:00:00.000Z"
}
],
"nextCursor": null
}{
"error": "Manage customers without the Thinnest-Workspace header: they belong to your own workspace."
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"error": "Customer not found."
}{
"error": "This workspace resells the console under white label: its workspaces are clients, managed in White label → Clients, not API customers."
}{
"error": "Over 240 requests a minute. Slow down and retry."
}Customers
List Customer Keys
Every API key made for this customer, newest first, revoked ones included: name, prefix, access level and when it was last used. Never the key itself. Not paged. A deleted customer answers 404.
GET
/
customers
/
{id}
/
keys
List Customer Keys
curl --request GET \
--url https://app.thinnest.ai/api/v1/customers/{id}/keys \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/customers/{id}/keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/customers/{id}/keys"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"id": "0c7e4a92-3d1b-4f6a-8e25-91b7c3d4f5a6",
"name": "Sunrise front-desk dashboard",
"prefix": "ta_live_Xk3pQ9",
"scope": "read",
"createdAt": "2026-10-03T08:22:10.511Z",
"lastUsedAt": "2026-10-06T09:58:47.090Z",
"revokedAt": null
},
{
"id": "7f1b9d20-6c4e-4a83-b5d7-2e9f0a1c3b48",
"name": "Old CRM sync",
"prefix": "ta_live_m2Rt8w",
"scope": "build",
"createdAt": "2026-09-12T14:05:33.004Z",
"lastUsedAt": "2026-09-30T18:41:02.776Z",
"revokedAt": "2026-10-01T05:00:00.000Z"
}
],
"nextCursor": null
}{
"error": "Manage customers without the Thinnest-Workspace header: they belong to your own workspace."
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"error": "Customer not found."
}{
"error": "This workspace resells the console under white label: its workspaces are clients, managed in White label → Clients, not API customers."
}{
"error": "Over 240 requests a minute. Slow down and retry."
}Authorizations
Your API key (ta_live_…) from Settings → API keys, sent as Authorization: Bearer <key>. Keep it on a server: it can message every customer you have. A key is full, build or read-only; a request its level does not allow is refused with 403.
Path Parameters
The customer's id (org_…), as Create Customer answered.