List BYOK Keys
curl --request GET \
--url https://app.thinnest.ai/api/v1/byok/credentials \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/byok/credentials', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/byok/credentials"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"kind": "llm",
"provider": "openai",
"label": "OpenAI",
"key": "…Qw7m",
"fields": {
"model": "gpt-5.4-nano"
},
"model": "gpt-5.4-nano",
"models": [
"gpt-5.4",
"gpt-5.4-mini",
"gpt-5.4-nano",
"gpt-4.1-mini"
],
"verifiedAt": "2026-10-06T10:01:40.902Z",
"updatedAt": "2026-10-06T10:01:40.902Z"
},
{
"kind": "tts",
"provider": "azure",
"label": "Azure Speech",
"key": "…a81f",
"fields": {
"region": "centralindia"
},
"model": null,
"models": [],
"verifiedAt": "2026-10-06T10:04:33.560Z",
"updatedAt": "2026-10-06T10:04:33.560Z"
}
]
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"error": "Over 240 requests a minute. Slow down and retry."
}Bring your own keys
List BYOK Keys
Your workspace’s own provider keys, one per job, masked to their last four characters, with the model each runs and every model its provider offered it.
GET
/
byok
/
credentials
List BYOK Keys
curl --request GET \
--url https://app.thinnest.ai/api/v1/byok/credentials \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/byok/credentials', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/byok/credentials"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"kind": "llm",
"provider": "openai",
"label": "OpenAI",
"key": "…Qw7m",
"fields": {
"model": "gpt-5.4-nano"
},
"model": "gpt-5.4-nano",
"models": [
"gpt-5.4",
"gpt-5.4-mini",
"gpt-5.4-nano",
"gpt-4.1-mini"
],
"verifiedAt": "2026-10-06T10:01:40.902Z",
"updatedAt": "2026-10-06T10:01:40.902Z"
},
{
"kind": "tts",
"provider": "azure",
"label": "Azure Speech",
"key": "…a81f",
"fields": {
"region": "centralindia"
},
"model": null,
"models": [],
"verifiedAt": "2026-10-06T10:04:33.560Z",
"updatedAt": "2026-10-06T10:04:33.560Z"
}
]
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"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.
Headers
Developers only: the customer workspace this request acts in — its org_… id from POST /customers. Leave it out to act in your own workspace.
Example:
"org_3fKq9TzQ1mN8vB2xR7cLpA"
Response
The keys, in the order speech-to-text, LLM, voice. Not paged.
Your keys: at most one per job.
Show child attributes
Show child attributes