SMS
Transactional only, from a template we have approved, with the consent basis attested on every send.
Send an SMScurl -X POST https://api.transmit.dev/v1/sms \
-H "Authorization: Bearer $TRANSMIT_API_KEY" \
-H "Idempotency-Key: login-8841" \
-H "Content-Type: application/json" \
-d '{
"from": "+18885550100",
"to": "+12025550100",
"template": "otp",
"variables": { "code": "483920" },
"consent_basis": "transactional"
}'There is no free-text body
You name an approved template and pass the values that fill it. That is the whole message surface: no arbitrary body, no media. It is a real constraint, and it is the reason our numbers stay deliverable — carriers judge a sender by what the sender has already sent.
What a variable may contain
Short plain text: at most 64 characters, no line breaks, no links, no domains. A value that looks like a URL is refused. Variable names are letters, digits and underscores, starting with a letter.
Consent
Every send carries consent_basis: "transactional" — your attestation that the recipient asked for this message by doing something in your product. Marketing SMS is not a thing we carry, at any price.
Numbers and segments
from is one of your numbers in E.164. The receipt tells you how many segments the rendered message took and what it cost in credits, so the price is known at accept time rather than reconciled later.
Templates are submitted for carrier registration before they can be used. The dashboard shows where each one is in that queue.