Your account needs an approved sender ID and available wallet funds. For a new setup, an operations administrator must approve the sender and credit the wallet.
1. Create an account
Create your organization through the customer dashboard or call POST /auth/register. The response includes a session token for account setup.
POST /auth/register
Content-Type: application/json
{
"organizationName": "Acme Stores",
"email": "owner@acme.example",
"password": "a-unique-password-of-12-or-more-characters"
}2. Get an approved sender ID
List available sender IDs with GET /senders. To request one for your business, submit POST /senders with a value of up to 11 letters or digits. A pending sender cannot be used until approved.
POST /senders
Authorization: Bearer YOUR_SESSION_TOKEN
Content-Type: application/json
{ "value": "ACMESTORE" }3. Create an API key
Use your owner session to create a key. Save the raw key when it appears: Textly stores only its hash and cannot show it again.
POST /api-keys
Authorization: Bearer YOUR_SESSION_TOKEN
Content-Type: application/json
{ "name": "Production integration" }4. Send a message
Send an array of 1–1000 messages to POST /messages. Use the UUID of an approved sender and a new Idempotency-Key for each campaign or send request.
POST /messages
Authorization: Bearer YOUR_API_KEY
Idempotency-Key: acme-order-10482
Content-Type: application/json
{
"senderId": "YOUR_APPROVED_SENDER_UUID",
"messages": [
{ "recipient": "0712345678", "text": "Your order is on its way." }
]
}The response includes a request ID, reserved total, and a message ID for each recipient. A queued response means Textly accepted the request for processing; it does not mean the phone has received the SMS.
5. Check delivery
Poll GET /messages/:id or configure a delivery webhook. An upstream timeout may leave a message in unknown state while operations reconcile it; avoid submitting that message again with a new key until the outcome is known.