Call Config schema
Per-provider auth shapes for the callConfig block on POST /call. Discriminated by provider.
The callConfig object on POST /call is a discriminated union: callConfig.provider selects which auth shape Pydantic uses. This page is the canonical reference for every provider.
Common fields
| Field | Type | Required | Notes |
|---|---|---|---|
provider | string | ✓ | Discriminator. One of twilio, vobiz, plivo, vonage, telnyx, smartflo. |
phoneNumber | string (E.164) | ✓ | The number on your side. For outbound, it's the from-number. For inbound, the number you're registering. |
auth | object | ✓ | Provider-specific — see below. Exception: smartflo carries no inline auth (a stray auth key is rejected); its credentials are resolved server-side from the saved configuration that owns phoneNumber. |
auth per provider
twilio
{ "accountSid": "AC...", "authToken": "..." }| Field | Required | Notes |
|---|---|---|
accountSid | ✓ | Twilio Account SID (AC prefix). |
authToken | ✓ | Twilio Auth Token. |
Outbound: wired. Inbound: wired.
vobiz
{
"authId": "MA_...",
"authToken": "...",
"applicationId": "30378500269436896"
}| Field | Required | Notes |
|---|---|---|
authId | ✓ | Vobiz Account ID. |
authToken | ✓ | Vobiz Auth Token. |
applicationId | — | Optional. For inbound, omit to fall back to the account's default_app. Vobiz outbound ignores this. |
Outbound: wired. Inbound: wired.
plivo
{ "authId": "MA...", "authToken": "..." }Outbound / Inbound: schema only — calls return 501 Not Implemented.
vonage
{
"apiKey": "...",
"apiSecret": "...",
"applicationId": "...",
"privateKey": "..."
}| Field | Required |
|---|---|
apiKey | ✓ |
apiSecret | ✓ |
applicationId | — |
privateKey | — |
Outbound / Inbound: schema only — 501.
telnyx
{ "apiKey": "KEY...", "connectionId": "..." }| Field | Required |
|---|---|
apiKey | ✓ |
connectionId | — |
Outbound / Inbound: schema only — 501.
smartflo
Smartflo carries no inline auth — the account is streaming-native and configured once as a telephony configuration (portal WSS). Credentials are resolved server-side from the saved config that owns phoneNumber.
{ "provider": "smartflo", "phoneNumber": "+91..." }| Field | Required | Notes |
|---|---|---|
phoneNumber | ✓ | The Smartflo DID. A stray auth key returns 400 extra_forbidden. |
Outbound: wired — the dial routes through the saved Smartflo configuration that owns phoneNumber (the number must be added and active there, otherwise 400 phone_number_not_configured). Inbound: wired — registers a binding using the saved Smartflo configuration.
Validation rules
accountSid/authId/apiKeylength ≥ 2.authToken/apiSecretlength ≥ 2.- Unknown fields on
authcause422 extra_forbidden(the schema usesextra="forbid"). phoneNumberis not strictly validated as E.164 at the schema layer — the provider's lookup will reject malformed numbers with400 invalid_credentialsat register/dial time.
Provider matrix
| Provider | Outbound dial | Inbound register |
|---|---|---|
twilio | ✓ | ✓ |
vobiz | ✓ | ✓ |
plivo | 501 | 501 |
vonage | 501 | 501 |
telnyx | 501 | 501 |
smartflo | 501 | ✓ |