Skip to main content
POST
Create SMPP or HTTP-API carrier

Authorizations

Authorization
string
header
required

Dashboard JWT token from Clerk

Headers

Idempotency-Key
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.

Required string length: 1 - 255
X-Test-Mode
enum<string>

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.

Available options:
true,
false

Body

application/json
label
any

Human-readable name, 1–64 characters (required).

type
any

Carrier type: smpp (SMPP bind, default) or http (HTTP API).

remoteHost
any

SMPP: upstream host — hostname, IPv4 or IPv6 literal, no scheme or port (required for type='smpp').

remotePort
any

SMPP: upstream port, 1–65535 (required for type='smpp').

remoteSystemId
any

SMPP: bind system_id, 1–15 characters per SMPP 3.4 (required for type='smpp').

remotePassword
any

SMPP: bind password, 1–8 characters (SMPP 3.4 C-Octet cap); encrypted at rest, never echoed back (required for type='smpp').

httpUrl
any

HTTP: upstream endpoint, HTTPS-only (required for type='http').

httpAuthType
any

HTTP: auth scheme — basic, bearer or custom (required for type='http').

httpCredentials
any

HTTP: opaque credential material the auth scheme consumes; encrypted at rest (required for type='http').

scope
any

Routing scope: all (default) or by_country_mcc.

scopeFilter
any

Routing filter { mccs: string[] } of 1–50 three-digit MCCs; required when scope='by_country_mcc'.

priority
any

Route priority, 0–10000 (lower wins; default 100).

status
any

Initial lifecycle status — active, suspended or inactive; submit inactive to stage before going live.

Response

The created carrier — with the assigned id, credential material redacted to remotePasswordSet / httpCredentialsSet — wrapped in the standard { data, meta } envelope. Returns 422 when the body is invalid (a missing connection block for the declared type, or scope='by_country_mcc' without scopeFilter.mccs).

The created carrier — with the assigned id, credential material redacted to remotePasswordSet / httpCredentialsSet — wrapped in the standard { data, meta } envelope. Returns 422 when the body is invalid (a missing connection block for the declared type, or scope='by_country_mcc' without scopeFilter.mccs).