zoxaAI
Homepage
API ReferenceSchemas

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

FieldTypeRequiredNotes
providerstring✓Discriminator. One of twilio, vobiz, plivo, vonage, telnyx, smartflo.
phoneNumberstring (E.164)✓The number on your side. For outbound, it's the from-number. For inbound, the number you're registering.
authobject✓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": "..." }
FieldRequiredNotes
accountSid✓Twilio Account SID (AC prefix).
authToken✓Twilio Auth Token.

Outbound: wired. Inbound: wired.

vobiz

{
  "authId":        "MA_...",
  "authToken":     "...",
  "applicationId": "30378500269436896"
}
FieldRequiredNotes
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":    "..."
}
FieldRequired
apiKey✓
apiSecret✓
applicationId—
privateKey—

Outbound / Inbound: schema only — 501.

telnyx

{ "apiKey": "KEY...", "connectionId": "..." }
FieldRequired
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..." }
FieldRequiredNotes
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 / apiKey length ≥ 2.
  • authToken / apiSecret length ≥ 2.
  • Unknown fields on auth cause 422 extra_forbidden (the schema uses extra="forbid").
  • phoneNumber is not strictly validated as E.164 at the schema layer — the provider's lookup will reject malformed numbers with 400 invalid_credentials at register/dial time.

Provider matrix

ProviderOutbound dialInbound register
twilio✓✓
vobiz✓✓
plivo501501
vonage501501
telnyx501501
smartflo501✓

On this page