Add Bolna Providers
Endpoints
- Add provider:
POST https://api.bolna.ai/providers
- List providers:
GET https://api.bolna.ai/providers
- Remove provider:
DELETE https://api.bolna.ai/providers/{provider_key_name}
Use Authorization: Bearer $BOLNA_API_KEY. Use Content-Type: application/json for add.
Provider categories
- Telephony: Twilio, Plivo, Exotel, Vobiz, SIP trunking, and other supported calling providers.
- LLM: OpenAI, Azure OpenAI, Anthropic, OpenRouter, DeepSeek, custom LiteLLM-compatible models.
- Transcriber: Deepgram, Sarvam, AssemblyAI, Azure, ElevenLabs Scribe, Gladia, Pixa.
- Voice/TTS: ElevenLabs, Cartesia, Deepgram, Azure TTS, AWS Polly, Rime, Sarvam, Smallest.
Check Bolna's current provider docs before choosing exact credential fields because provider schemas can change.
Safe workflow
- Identify provider type and exact provider name.
- Ask the user to confirm the credentials exist.
- Never paste secrets into committed files.
- Add provider through API or dashboard.
- List providers to capture returned provider IDs.
- Use provider IDs or provider names in agent configuration as required by Bolna docs.
- Test with a dry agent or call before rolling into production batches.
Add provider shape
Bolna stores provider credentials as named keys. Use the provider key name expected by Bolna, then the secret value.
{
"provider_name": "OPENAI",
"provider_value": "sk-0123456789az"
}
Common provider key names map to the relevant integration, for example API keys for OpenAI, Anthropic, ElevenLabs, Deepgram, Sarvam, Cartesia, or telephony credentials for Twilio, Plivo, Exotel, and Vobiz. Check the current Bolna provider page before writing a new key name.
curl --request POST \
--url https://api.bolna.ai/providers \
--header "Authorization: Bearer $BOLNA_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"provider_name": "OPENAI",
"provider_value": "sk-0123456789az"
}'
List providers
curl --request GET \
--url https://api.bolna.ai/providers \
--header "Authorization: Bearer $BOLNA_API_KEY"
Remove provider
curl --request DELETE \
--url "https://api.bolna.ai/providers/$PROVIDER_KEY_NAME" \
--header "Authorization: Bearer $BOLNA_API_KEY"
Confirm removal first. Existing agents may fail if their configured provider key is removed.
Common credential key names
| Provider |
Property |
| OpenAI |
OPENAI |
| OpenRouter |
OPENROUTER |
| Google Gemini |
GOOGLE |
| Azure OpenAI |
AZURE_OPENAI_API_KEY, AZURE_OPENAI_MODEL, AZURE_OPENAI_API_BASE, AZURE_OPENAI_API_VERSION |
| ElevenLabs |
ELEVENLABS |
| Cartesia |
CARTESIA |
| Sarvam |
SARVAM |
| Smallest |
SMALLEST |
| Deepgram |
DEEPGRAM |
| Twilio |
TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_PHONE_NUMBER |
| Plivo |
PLIVO_AUTH_ID, PLIVO_AUTH_TOKEN, PLIVO_PHONE_NUMBER |
| Vobiz |
VOBIZ_AUTH_ID, VOBIZ_AUTH_TOKEN, VOBIZ_PHONE_NUMBER |
| Exotel |
EXOTEL_API_KEY, EXOTEL_API_TOKEN, EXOTEL_ACCOUNT_SID, EXOTEL_DOMAIN, EXOTEL_PHONE_NUMBER, EXOTEL_OUTBOUND_APP_ID, EXOTEL_INBOUND_APP_ID |
| Custom LLM |
Use provider: "custom" in the agent's llm_agent with an OpenAI-compatible base_url, then POST /user/model/custom to register the model name. |
Full per-provider matrix (including which language/use case each suits) is in ../references/providers-matrix.md.
See also
../references/providers-matrix.md — latency rules-of-thumb, language coverage, common pairings.
setup-sip-trunk — SIP trunk providers (different endpoints, not the credential vault).
create-agent — wiring provider names into llm_agent, synthesizer, transcriber.
1---2name: add-provider3description: Add, list, and remove Bolna providers for telephony, LLM, speech-to-text, and text-to-speech services such as Twilio, Plivo, Exotel, OpenAI, Anthropic, Azure, ElevenLabs, Deepgram, Sarvam, Cartesia, Polly, and others. Use when the user wants to bring their own credentials.4license: MIT5---67# Add Bolna Providers89## Endpoints1011- Add provider: `POST https://api.bolna.ai/providers`12- List providers: `GET https://api.bolna.ai/providers`13- Remove provider: `DELETE https://api.bolna.ai/providers/{provider_key_name}`1415Use `Authorization: Bearer $BOLNA_API_KEY`. Use `Content-Type: application/json` for add.1617## Provider categories1819- Telephony: Twilio, Plivo, Exotel, Vobiz, SIP trunking, and other supported calling providers.20- LLM: OpenAI, Azure OpenAI, Anthropic, OpenRouter, DeepSeek, custom LiteLLM-compatible models.21- Transcriber: Deepgram, Sarvam, AssemblyAI, Azure, ElevenLabs Scribe, Gladia, Pixa.22- Voice/TTS: ElevenLabs, Cartesia, Deepgram, Azure TTS, AWS Polly, Rime, Sarvam, Smallest.2324Check Bolna's current provider docs before choosing exact credential fields because provider schemas can change.2526## Safe workflow27281. Identify provider type and exact provider name.292. Ask the user to confirm the credentials exist.303. Never paste secrets into committed files.314. Add provider through API or dashboard.325. List providers to capture returned provider IDs.336. Use provider IDs or provider names in agent configuration as required by Bolna docs.347. Test with a dry agent or call before rolling into production batches.3536## Add provider shape3738Bolna stores provider credentials as named keys. Use the provider key name expected by Bolna, then the secret value.3940```json41{42 "provider_name": "OPENAI",43 "provider_value": "sk-0123456789az"44}45```4647Common provider key names map to the relevant integration, for example API keys for OpenAI, Anthropic, ElevenLabs, Deepgram, Sarvam, Cartesia, or telephony credentials for Twilio, Plivo, Exotel, and Vobiz. Check the current Bolna provider page before writing a new key name.4849```bash50curl --request POST \51 --url https://api.bolna.ai/providers \52 --header "Authorization: Bearer $BOLNA_API_KEY" \53 --header "Content-Type: application/json" \54 --data '{55 "provider_name": "OPENAI",56 "provider_value": "sk-0123456789az"57 }'58```5960## List providers6162```bash63curl --request GET \64 --url https://api.bolna.ai/providers \65 --header "Authorization: Bearer $BOLNA_API_KEY"66```6768## Remove provider6970```bash71curl --request DELETE \72 --url "https://api.bolna.ai/providers/$PROVIDER_KEY_NAME" \73 --header "Authorization: Bearer $BOLNA_API_KEY"74```7576Confirm removal first. Existing agents may fail if their configured provider key is removed.7778## Common credential key names7980| Provider | Property |81|---|---|82| OpenAI | `OPENAI` |83| OpenRouter | `OPENROUTER` |84| Google Gemini | `GOOGLE` |85| Azure OpenAI | `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_MODEL`, `AZURE_OPENAI_API_BASE`, `AZURE_OPENAI_API_VERSION` |86| ElevenLabs | `ELEVENLABS` |87| Cartesia | `CARTESIA` |88| Sarvam | `SARVAM` |89| Smallest | `SMALLEST` |90| Deepgram | `DEEPGRAM` |91| Twilio | `TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN`, `TWILIO_PHONE_NUMBER` |92| Plivo | `PLIVO_AUTH_ID`, `PLIVO_AUTH_TOKEN`, `PLIVO_PHONE_NUMBER` |93| Vobiz | `VOBIZ_AUTH_ID`, `VOBIZ_AUTH_TOKEN`, `VOBIZ_PHONE_NUMBER` |94| Exotel | `EXOTEL_API_KEY`, `EXOTEL_API_TOKEN`, `EXOTEL_ACCOUNT_SID`, `EXOTEL_DOMAIN`, `EXOTEL_PHONE_NUMBER`, `EXOTEL_OUTBOUND_APP_ID`, `EXOTEL_INBOUND_APP_ID` |95| Custom LLM | Use `provider: "custom"` in the agent's `llm_agent` with an OpenAI-compatible `base_url`, then `POST /user/model/custom` to register the model name. |9697Full per-provider matrix (including which language/use case each suits) is in `../references/providers-matrix.md`.9899## See also100101- `../references/providers-matrix.md` — latency rules-of-thumb, language coverage, common pairings.102- `setup-sip-trunk` — SIP trunk providers (different endpoints, not the credential vault).103- `create-agent` — wiring provider names into `llm_agent`, `synthesizer`, `transcriber`.