Get started

Introduction

Create a TEST key, POST to a simulated Ghana number, then GET the message id. LIVE uses the same states. HTTP 200 means we accepted the request. Delivery is a later report.

TEST keys

Shown once. They cannot send LIVE.

Ghana routes

Network from the prefix: MTN, Telecel, AT.

Idempotency

Same key and body returns the first response.

Message id

Poll GET /v1/messages/:id for the DLR.

Quick start

  1. 1

    Get API key

    Register, then mint sms_test_ in the console.

  2. 2

    Send a request

    POST /v1/messages with an Idempotency-Key.

  3. 3

    Check status

    GET /v1/messages/:id. QUEUED is not DELIVERED.

export API_URL=https://api.taysend.com
export KEY=sms_test_your_key

curl -X POST "$API_URL/v1/messages" \
  -H "Authorization: Bearer $KEY" \
  -H "Idempotency-Key: 11111111-1111-1111-1111-111111111111" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+233200000001",
    "sender_id": "TAYSEND",
    "message": "Hello from Taysend",
    "type": "transactional"
  }'

Try it in the sandbox

Sends a simulated TEST message. No API key and no real SMS.

Sandbox

TEST

This number ends as delivered.

Response

{
  "id": "msg_…",
  "status": "QUEUED",
  "environment": "TEST"
}

Sample response

Accepted
{
  "id": "msg_01hx...",
  "status": "QUEUED",
  "environment": "TEST",
  "to": "+233200000001"
}

200 here is acceptance. Delivery waits on a DLR.

Try the sandbox

Send a TEST message from this page. Same reserve and inspect path as LIVE — the last hop is simulated, so you can force each outcome. No API key required.

Sandbox

Simulated TEST send. No API key. No real SMS.

TEST

This number ends as delivered.

Response

{
  "id": "msg_…",
  "status": "QUEUED",
  "environment": "TEST"
}

Simulated numbers

NumberOutcome
+233200000001delivered
+233200000002failed
+233200000003expired
+233200000004rejected
+233200000005delayed (delivered after ~3s)
+233200000006timeout (UNSAFE_TO_RETRY — no failover)