Sign in

Create your Telephony setup

View as Markdown
PUT/v1/provisioning/tenants/{tenant_id}

Connect your PBX as a trunk and create your Telephony setup. `tenant_id` is your setup ID — the `_id` from Get your account.

Auth

Authentication required.

Parameters

NameInRequiredTypeDescription
tenant_idpathYesstringYour setup ID — the `_id` returned by `GET /me`.

Request body

RequiredContent-TypeShape
Yesapplication/jsonobject { bot, pbx, transfer_targets, outbound, inbound, transfer_policy }
NameTypeRequiredDescription
botobjectYesSend `{}`. Which agent answers is set per number, when you bind an agent to it.
pbxobjectYesYour trunk: where your PBX is and how it connects.
pbx.modeenum(register | ip)No`register`: we register to your PBX with a username and password. `ip` (Fixed IP): your PBX sends to us from the addresses in `source_ips`.
pbx.transportenum(udp | tls)NoDefault "udp". TLS is the only alternative to UDP; there is no TCP.
pbx.addressstringNoYour PBX as `host` or `host:port`, e.g. `pbx.example.com:5060`.
pbx.source_ipsarray<string>NoIP addresses or CIDR ranges your PBX sends from. Required for Fixed IP; send `[]` for register.
pbx.authobjectNoRegister mode only: how we sign in to your PBX.
pbx.auth.usernamestringYes, if pbx.auth is sent1–64 characters.
pbx.auth.passwordstringwrite-onlyNoSent once and stored as a secret; never returned. Required when you create a register trunk; leave it out on update to keep the stored one.
pbx.auth.registrarstringYes, if pbx.auth is sentWhere we register, as `host` or `host:port`.
pbx.auth.auth_usernamestringNoUp to 64 characters. Optional. The identity your PBX answers the digest challenge with, when it is not `username`.
pbx.auth.expiresintegerNo60–3600, default 3600.
transfer_targetsobjectYesName → number for transfers your agents make by name. Send `{}` for none.
outboundobject | nullYesOutbound calling. `null` for an inbound-only setup.
outbound.enabledbooleanNo—
outbound.default_pathenum(pbx | pstn)NoWhich way calls leave: through your trunk or the phone network.
outbound.caller_idobjectNoThe number calls present, per path.
outbound.caller_id.pbxstringNo—
outbound.caller_id.pstnstringNo—
inboundobjectYesLimits on incoming calls. Send `{}` for the defaults.
inbound.limitsobjectNo—
inbound.limits.max_concurrent_callsintegerNoAt least 1.
inbound.budgetobjectNo—
inbound.budget.daily_minute_limitintegerNoAt least 1.
inbound.budget.daily_session_limitintegerNoAt least 1.
inbound.max_session_secondsintegerNoAt least 1.
transfer_policyobject | nullNoWhether agents may transfer calls to outside numbers.
transfer_policy.externalobjectNo—
transfer_policy.external.enabledbooleanNo—
transfer_policy.external.destination_patternsarray<string>NoRegular expressions an outside number must match.

Examples

Register trunk

{
  "bot": {},
  "pbx": {
    "mode": "register",
    "transport": "udp",
    "address": "pbx.example.com:5060",
    "source_ips": [],
    "auth": {
      "username": "acme-trunk",
      "password": "<trunk password>",
      "registrar": "pbx.example.com:5060"
    }
  },
  "transfer_targets": {},
  "outbound": null,
  "inbound": {}
}

Fixed IP trunk

{
  "bot": {},
  "pbx": {
    "mode": "ip",
    "transport": "udp",
    "address": "pbx.example.com:5060",
    "source_ips": [
      "203.0.113.10"
    ]
  },
  "transfer_targets": {},
  "outbound": null,
  "inbound": {}
}

Responses

StatusDescriptionContent-TypeShape
200Successful Responseapplication/jsonunknown
422Validation Errorapplication/jsonHTTPValidationError