API reference
Providers
Store your own provider credentials for language models and telephony.
Provider keys are named secrets that belong to your account: the credentials of the telephony or model providers you bring yourself. Each key has a name and a value. Values are encrypted at rest and are never returned in full; reads show seven x characters followed by the last two characters of the value.
All routes need Authorization: Bearer <key>. Adding and removing keys needs the admin role; listing needs viewer.
| Operation | Method and path |
|---|---|
| Add or replace a provider key | POST /providers |
| List provider keys | GET /providers |
| Remove a provider key | DELETE /providers/{provider_key_name} |
Names the platform reads
Any name is accepted and stored. These are the names the platform looks up:
| Name | Used for |
|---|---|
DEEPGRAM_API_KEY | Speech-to-text on calls of agents whose transcriber is Deepgram. |
SARVAM_API_KEY | Speech-to-text or voice on calls of agents that pick Sarvam. |
ELEVENLABS_API_KEY | The voice on calls of agents whose synthesizer is ElevenLabs. |
GROQ_API_KEY | The language model on calls of agents whose LLM provider is Groq. |
OPENAI_API_KEY | The language model on calls of agents whose LLM provider is OpenAI (without it they run on the platform's own model), plus the Ask assistant, test chat, knowledge search and post-call extraction. |
OPENROUTER_API_KEY | The language model on calls of agents whose LLM provider is OpenRouter, with the agent's model. |
AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT | The language model on calls of agents whose LLM provider is Azure OpenAI. The endpoint is the resource URL (for example https://name.openai.azure.com); private addresses are refused. |
OPENAI_BASE_URL | Base URL of that OpenAI-compatible endpoint, when it is not the default. |
TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN | Calls and number purchase through Twilio. |
PLIVO_AUTH_ID, PLIVO_AUTH_TOKEN | Calls and number purchase through Plivo. |
EXOTEL_API_KEY, EXOTEL_API_TOKEN, EXOTEL_ACCOUNT_SID, EXOTEL_APP_ID | Calls through Exotel. |
EXOTEL_SUBDOMAIN | Optional Exotel API subdomain. |
An account's own key takes precedence over a credential the operator configured for the whole platform.
Note: Telephony credentials are only used when the operator runs the platform with
TELEPHONY_MODE=live. Otherwise calls go to the built-in stand-in and no provider is contacted.
Operations
Add or replace a provider key
POST /providers
Stores a key. If a key with the same name exists, its value is replaced.
Auth: API key or session token. Role: admin and up.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
provider_name | body | string | yes | The key's name, for example TWILIO_AUTH_TOKEN. |
provider_value | body | string | yes | The secret value. |
Request
curl -X POST https://api.sevennadi.si/providers \
-H "Authorization: Bearer vk-0123456789abcdef0123456789abcdef" \
-H "Content-Type: application/json" \
-d '{"provider_name": "OPENAI_API_KEY", "provider_value": "<your key>"}'Response 200 OK
{"message": "successful", "status": "added"}Errors
| Status | Message |
|---|---|
| 400 | provider_name and provider_value are required |
| 403 | Your role (member) can't change provider keys. It needs admin access; ask an owner or admin of the workspace. |
List provider keys
GET /providers
Returns the account's keys, oldest first, with masked values.
Auth: API key or session token. Role: viewer and up.
No parameters.
Request
curl https://api.sevennadi.si/providers \
-H "Authorization: Bearer vk-0123456789abcdef0123456789abcdef"Response 200 OK
[
{
"provider_id": "7c6b5a49-3827-4161-a5b4-c3d2e1f0a9b8",
"provider_name": "OPENAI_API_KEY",
"provider_value": "xxxxxxxQ9",
"humanized_created_at": "just now",
"created_at": "2026-10-13T08:10:00Z"
}
]Remove a provider key
DELETE /providers/{provider_key_name}
Deletes a key by its name.
Auth: API key or session token. Role: admin and up.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
provider_key_name | path | string | yes | The provider_name of the key, not its provider_id. |
Request
curl -X DELETE https://api.sevennadi.si/providers/OPENAI_API_KEY \
-H "Authorization: Bearer vk-0123456789abcdef0123456789abcdef"Response 200 OK
{"message": "successful", "status": "removed"}Errors
| Status | Message |
|---|---|
| 404 | Provider not found |