Skip to content
Markets open

Developers

API changelog

Changes to the REST API that can affect an integration, newest first. Where a change replaces something, the old behaviour keeps working during a stated transition.

  • Added

    Verify API and voice passcodes

    POST /verify/start sends a one-time code by SMS or by a voice call that reads the digits aloud, and POST /verify/check answers approved, denied, expired or max_attempts (5 attempts, single use, 10-minute default expiry). Only a hash of the code is stored. POST /comms/voice-otp places the voice call on its own. Billed as the SMS or call, with no per-verification fee. Needs the new verify:write scope (voice-otp uses voice:send); test keys simulate and return testCode.

    • POST/verify/start
    • POST/verify/check
    • GET/verify/{id}
    • POST/comms/voice-otp
  • Added

    Price a number across the marketplace

    Give a phone number and get every route that serves it, at the rate that route would actually charge for that number (its longest matching rate-sheet row, or its flat price), cheapest first. Works signed out; seller identities are never included.

    • GET/routes/price-number
  • Added

    Routing order for your purchased routes

    When several of your voice purchases cover a number equally well, your routing order now decides which carries the call, then the cheaper rate, then the older purchase. Set the whole order or one position, and ask which of your routes would carry a given number, ranked exactly as the live call path ranks them.

    • GET/purchases/routing-order
    • PUT/purchases/routing-order
    • PATCH/purchases/{id}/routing-priority
    • DELETE/purchases/{id}/routing-priority
    • GET/purchases/route-for
  • Added

    Scheduled rate changes with advance notice

    Rate increases from a rate sheet, and flat price changes, can now be scheduled for a future date after a notice period instead of applying at once. Sellers can list and cancel scheduled changes, schedule a flat price change, and set when a sheet's increases take effect with increaseEffectiveAt. Buyers can list the scheduled changes on a route they bought and accept one in advance by passing its changeId to accept-rate, so their purchase keeps running on the date instead of pausing for re-consent.

    • GET/purchases/{id}/upcoming-rate-changes
    • POST/purchases/{id}/accept-rate
    • GET/routes/{id}/rate-changes
    • POST/routes/{id}/rate-changes/flat
    • POST/routes/{id}/rate-changes/{changeId}/cancel
  • Added

    Rate-change notice for Switch customers

    Set a notice period per Switch customer: a sell-rate increase is then queued and takes effect that many days out, while decreases and new destinations still apply at once. Review the queued changes as JSON or CSV, and email the customer a notice under your own brand.

    • GET/switch/customers/{id}/sell-rates/notice
    • PUT/switch/customers/{id}/sell-rates/notice
    • GET/switch/customers/{id}/sell-rates/notice/changes
    • GET/switch/customers/{id}/sell-rates/notice/changes.csv
    • POST/switch/customers/{id}/sell-rates/notice/send
  • Added

    Route liveness tests

    Test 2 to 20 voice routes in one go: each gets a real test call to a handset in its destination country, and you see which rang and what caller ID was displayed. Preview the cost first; a route is charged only if it rang, and cancelling stops every route not yet called.

    • POST/cli-tests/batches/preview
    • POST/cli-tests/batches
    • GET/cli-tests/batches
    • GET/cli-tests/batches/{id}
    • POST/cli-tests/batches/{id}/cancel
  • Added

    Do Not Call on the Switch

    Turn "Honor Do Not Call" on per Switch customer or per trunk, and calls from them are checked against your Do Not Call list and the platform list. Also new: check a single number, scrub an uploaded file of up to 500,000 numbers, import and export your list, and see the calls that matched. The list is the same one managed under /dnc.

    • GET/switch/dnc/summary
    • GET/switch/dnc/entries
    • GET/switch/dnc/hits
    • GET/switch/dnc/check
    • GET/switch/dnc/customers
    • GET/switch/dnc/honor
    • PATCH/switch/dnc/honor
    • POST/switch/dnc/scrub
    • GET/switch/dnc/scrub/{id}
    • POST/switch/dnc/import
    • GET/switch/dnc/export
  • Added

    Listing health and bulk endpoint changes

    See how many of your listed routes are live on the marketplace and why the rest are hidden, then fix them in one call: set one SMS delivery method or one SIP endpoint on a list of routes or on every route matching a filter (up to 5,000). A dry run shows what would change, and the endpoint is checked once before anything is written. The My routes list gains search, filters, sorting and offset paging with a total.

    • GET/routes/my/listing-health
    • POST/routes/my/bulk-sms-delivery
    • POST/routes/my/bulk-sip-endpoint
    • GET/routes/my/list
  • Added

    Labels on saved SIP endpoints

    Give a saved SIP endpoint a label (up to 60 characters) when you save it, or rename it later, so you can tell your switches apart in the endpoint pickers. An empty label clears it.

    • POST/routes/my-endpoints
    • PATCH/routes/my-endpoints/{id}
  • Changed

    Route resolve returns price as a decimal string

    The price on each resolved route is now a USD decimal string with 6 places ("0.012500"), like every other money field in the API. It was a JSON number. Parse it with a decimal type rather than floating point.

    • GET/routes/resolve
  • Added

    keyPrefix on API key creation

    Creating an API key now returns keyPrefix, the same field name the list and update responses use. The original prefix field is still returned for existing clients.

    • POST/account/api-keys
  • Changed

    X-Request-Id is a UUID

    Every response carries an X-Request-Id that is now a UUID, unique across all API nodes. Quote it when contacting support.

  • Added

    Timestamped webhook signatures

    Deliveries now carry X-PX-Timestamp (Unix seconds) and X-PX-Signature: v1=<HMAC-SHA256 of "timestamp.body">, so a receiver can reject replayed deliveries. The legacy X-Webhook-Signature (HMAC of the body alone) is still sent during the transition, so existing receivers keep working.

  • Added

    Webhook delivery history, resend and per-key API usage

    List deliveries across all your webhook endpoints (filter by endpoint, status or event), read one delivery with its payload, and resend it. API usage can now be filtered to one API key with keyId.

    • GET/account/webhooks/deliveries
    • GET/account/webhooks/deliveries/{deliveryId}
    • POST/account/webhooks/deliveries/{deliveryId}/resend
    • GET/account/api-usage
  • Added

    Complete OpenAPI reference

    The API reference now documents request and response schemas for the customer-facing API, rate limits generated from the live route configuration, and the full error-code list, including INVALID_INPUT.