Per-channel connection mode: BYO vs platform default
When you resell Orbit to your own customers, each channel your subaccounts use — SMS, Voice, Email, WhatsApp — runs on one of two connections:- Platform default — Orbit’s shared connection. Standard usage billing; nothing to set up.
- Your own connection (BYO) — a connection you bring (your own SIP trunk, SMPP account, email domain, WhatsApp Business account, and so on). Traffic on it carries a flat per-transaction platform fee in place of the platform default rate.
- Turn on reseller mode
- Bring your own connection for a channel
- Revert a channel to the platform default
- Read the current state
What reseller mode is
Reseller mode is a capability flag on the parent organization. A whitelabel parent — an org that runs customer-facing subaccounts under its own brand — turns it on once, then manages a per-channel registry of connections it owns. Those connections are what “BYO” means here: your SIP trunk for voice termination, your SMPP account for SMS, your sending domain or SMTP relay for email, your own WhatsApp Business account or Meta app, your own LLM API keys, your own Stripe account for collections. Subaccounts never configure any of this. They simply send, and the parent’s active connection picks them up.The inheritance model
The model is deliberately simple — there is exactly one place to look, and one decision per channel:- One active BYO connection per channel. The registry holds at most one connection per provider type. Activate your SIP trunk, and that trunk is the voice connection for the whole account family.
- No per-subaccount registry. There is no subaccount-level override. A subaccount cannot pick its own connection, and you cannot give one subaccount a different SIP trunk from another — BYO inheritance is all-or-nothing per channel, from the parent down.
- Subaccounts inherit transparently. When the parent has an active BYO connection for a channel, every subaccount’s traffic on that channel rides it. When the parent has none — or reseller mode is off — every subaccount falls back to the platform default for that channel. A subaccount’s own view of the connection settings says so, and who manages it.
Provider types
The registry accepts the following provider-type keys. Each maps to one channel lane:1. Turn on reseller mode
Reseller mode is the gate. Until it is on, no BYO connection resolves — everything runs on the platform default even if you’ve saved connections."enabled": false) is a fail-safe, not a wipe: your saved connections stay on record, and every channel immediately falls back to the platform default. Turn it back on and the prior configuration picks up where it left off.
Only a parent org (an org with no parent of its own) can enable reseller mode. A subaccount calling this endpoint with
enabled: true gets 403 — nested resellers are not a supported shape, and a subaccount can never flip itself into reseller mode.2. Bring your own connection for a channel
Define — or replace — a channel’s connection withPUT /organization/reseller/providers/:providerType. Because the registry is one-connection-per-type, a PUT on an existing type overwrites the prior connection for that channel.
status— set it to"active"to put the connection in service. Anything else (pending,degraded,failed) keeps the registry entry but resolves the channel to the platform default. Onlyactiverows take traffic.credentials— a plaintext map of whatever fields that connection needs. The API encrypts every value before it persists, and never echoes a raw secret back: reads return each saved field as the masked sentinel••••••. To rotate a secret, send the new value in the same field; to clear a field, send it as an empty string. Send at most 50 fields, each value at most 2000 characters.
mode: "byo" means subaccounts’ SMS now runs on your connection. If reseller mode is off, the same save returns mode: "devotel_default" — the connection is stored, just not in service.
3. Revert a channel to the platform default
Delete the registry entry and the channel flips back immediately:4. Read the current state
One call returns the whole reseller slice:enabled— the reseller-mode flag.isSubaccount—truewhen the caller itself is a subaccount. Subaccounts always receive an emptyproviderslist; provider configuration is parent-only and never readable by a child org.effectiveResellerOrgId— the org the caller resolves against: its parent when the caller is a subaccount, itself when it is the reseller org, otherwisenull.providers— the registry with credential values masked.
GET /organization/reseller/resolve/:providerType returns { "mode": "byo" | "devotel_default", "providerType", "config": … }.
Dashboard surface
Everything above is also a point-and-click surface — resellers typically have no admin-panel access, so the whole model is dashboard-driven. Open Settings → Subaccounts and use the Channel Connection Mode panel. It shows the master toggle (reseller mode on/off), one row per channel with its current mode — Platform default, Your own connection (BYO), or a status badge such as Pending — not in service — and the buttons to activate a connection or revert a channel. Editing a saved field and re-saving rotates the credential. The same panel appears in two places:- The Subaccounts list page — manage the whole account family from one card.
- The 5-step new-subaccount wizard — decide the connection mode at onboarding, in the same flow that sets plan, pricing, funding, and branding.
Per-channel behavior
Only two channels have named termination routes under this model today; the rest follow the same registry contract as their integrations land:- SMS — when
smppis active on the parent’s registry, subaccount SMS terminates on your SMPP account. Delete or deactivate it and SMS falls back to the platform default route. - Voice — when
sip_trunkis active, outbound calls from every subaccount terminate on your SIP trunk. Otherwise they run on the platform default.
Limits and rules
- Exactly one active BYO connection per provider type. A second
PUTto the same type replaces the first — there is no multi-carrier mode. - Reseller mode is a capability gate. Off means off: every channel resolves to the platform default regardless of saved connections.
- No per-subaccount override. Inheritance is all-or-nothing per channel from the parent. The only exception-free reading of “a subaccount wants its own connection” is: it wants its parent to bring one for the whole family.
- Secrets are masked, never returned.
GETshows••••••per saved field. Loss of the plaintext is yours to handle — rotate by re-saving. - Parent-only management. Provider config and the mode toggle reject subaccount callers with
403. - Subaccount-created channels are unaffected. A subaccount with no reseller-mode parent sees zero behavior change — everything it does resolves to the platform default, exactly as before.
Related
- Subaccounts API — create, fund, price, and brand child orgs
- Organization API — own-org profile, branding, and domains
- SMS channel and Voice channel — the two channels with live BYO termination today