Pricing API
Pricing endpoints exposed by the Devotel CPaaS API Base path:/api/v1
Endpoint count: 14
List pricing change history
GET /api/v1/pricing/changelogorganizationId; a tenant developer gets a sanitised view scoped to their own org plus global rate-card changes. Use it to explain a rate change on the billing dashboard. Cap results with limit (default 100, max 500).
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.Get your effective rate sheet
GET /api/v1/pricing/effective-ratesstring (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.Estimate the cost of a message
GET /api/v1/pricing/estimatechannel and a destination to phone number in E.164 form; the endpoint resolves the destination country and returns the matching rate, or null when no rate is published for that lane. Pass allIn=true to also get an itemized surcharge breakdown (US A2P 10DLC registration, call recording, transcription, premium support) so a sales demo can answer the ‘what does this lane REALLY cost’ question from one call; optional include filters the list to a chosen set of surcharge codes (repeatable or comma-separated). Returns 422 when channel or to is missing.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.List operator-level SMS rates
GET /api/v1/pricing/mccmnc-ratessearch (operator, country, or MCCMNC) and country, and page through results with cursor and limit. An operator with no published cost surfaces a null your_rate (the “Contact sales” row); callers without their own negotiated markup see the current platform default.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.Get messaging rates for a country
GET /api/v1/pricing/messagingcountry query param), including your organization’s effective price after any per-org overrides are applied. A channel with no published rate falls back to the platform default. Use it to preview message costs before sending. The country filter is a price-lookup key only — it does not route traffic. Returns 422 when country is missing or malformed.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.List organizations for the rate-card picker
GET /api/v1/pricing/organizationshasCustomRates flag set when the org has at least one per-org override. Use it to populate the admin rate-card editor’s org picker so an operator can switch between the global rate card and a tenant’s custom rates. Keyset-paginated by (name, id); pass all=true to load the whole roster in one request instead of walking the cursor. Super-admin only.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.List per-org pricing overrides
GET /api/v1/pricing/overridesorganizationId query param to scope the list to one tenant, or omit it to return the active overrides across all tenants. Use it to review which lanes a tenant (or the whole platform) has custom rates on. Super-admin only; the list is capped at 5000 rows.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.Get phone-number rental prices for a country
GET /api/v1/pricing/phone-numberscountry query param), grouped by number type (local, mobile, toll-free, national, short code) with the cheapest available price and how many are in stock. Only unassigned, purchasable inventory is counted. Use it to preview number costs before buying. Returns an empty list when the country has no purchasable inventory.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.List all pricing rates
GET /api/v1/pricing/ratesstring (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.Get the RTC-PaaS rate card
GET /api/v1/pricing/rtc-rate-cardstring (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.Get voice rates for a country
GET /api/v1/pricing/voicecountry query param), including the tenant’s effective price after any per-org overrides are applied. Use it to preview call costs before placing or receiving traffic. The country filter is a price-lookup key only — it does not select a carrier or route traffic. Requires a country code; returns 422 when it is missing or malformed.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.Get the published platform price list
GET /api/v1/public/pricingcountry query to get the published country-specific rates; without it you get the platform-default baseline. Exposes only publicly-listed platform rates — never a tenant’s negotiated per-org overrides.
Simulate RTC-PaaS cost
POST /api/v1/pricing/rtc-simulatetier, participant count, minutes per room, rooms per month, and any optional add-ons (extra RTMP destinations, recording storage, dedicated SFU) and get back an itemized breakdown that mirrors the line items on the eventual invoice. Use it before launch to size a video/audio deployment and predict the monthly bill. Returns 422 for out-of-range input.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the
Idempotency-Replay: true response header.string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.Simulate what-if repricing
POST /api/v1/pricing/whatif-simulatestring
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the
Idempotency-Replay: true response header.string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.