Messaging

Phone numbers

Provision a Brazilian WhatsApp-ready number through Salvy, or connect one you already own. One row per number, one provider forever (ADR-011).

Two sources

SourcePathDDD required
salvyTyxter provisions the number via SalvyYes
byonYou bring your own Meta-connected numberNo

List available regions

GET/v1/phone-numbers/available-regions

Returns DDDs Salvy currently has stock for, with the monthly BRL rental fee for each.

Provision (Salvy)

POST/v1/phone-numbers/provision
curl https://api.tyxter.com/v1/phone-numbers/provision \
  -H "authorization: Bearer $TYXTER_API_KEY" \
  -H "content-type: application/json" \
  -d '{ "ddd": "11", "display_name": "ACME Suporte" }'

Returns 202. The actual Salvy call runs on the provider.phone worker pool. Watch the status transitions:

requested  →  provisioning  →  provisioned  →  verifying  →  active

Salvy forwards the SMS verification code via webhook and we stash it on the row. Fetch with GET /v1/phone-numbers/:id to read verification_code and verification_code_received_at.

Connect (BYON)

POST/v1/phone-numbers/connect
curl https://api.tyxter.com/v1/phone-numbers/connect \
  -H "authorization: Bearer $TYXTER_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "phone": "+5511999999999",
    "meta_phone_number_id": "109...",
    "display_name": "ACME Vendas"
  }'

BYON numbers skip Salvy and jump straight to verifying. You complete WhatsApp verification on your side; Tyxter transitions the row to active when that finishes.

Release a number

POST/v1/phone-numbers/{'{id}'}/release

Returns 202. Salvy numbers move to release_requested while the worker calls Salvy; the row reaches released when Salvy confirms by webhook. BYON numbers move directly to released.

Billing

The first time a number reaches active we emit usage_event.created for the phone.number.month meter. Recurring monthly billing for long-lived numbers is a scheduled follow-up — see the roadmap.

Webhooks

There is intentionally no transparent failover between Salvy and another provider. A number is always served by the provider that provisioned it. Fallback means releasing the row and provisioning a new one.