API docs
Sandbox
Test your integration without sending anything or spending credits.
A sandbox key (ws_test_…) uses the same base URL, the same checks and the same answers as a live key. The difference is that nothing is delivered and no credits are charged. Every answer is marked sandbox: true.
The sandbox needs no DAN verification, base fee or credit balance, and keeps working after the trial ends. You can build the integration while the paperwork is still in progress.
Create a key
In the dashboard under API keys, choose Create key and pick Sandbox key.
curl -X POST https://dev-api.wesend.mn/v1/sms \
-H "Authorization: Bearer $WESEND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "99112233",
"text": "Sain baina uu? WeSend-ees ilgeev."
}'{
"id": "0b9c1a52-6f0e-4d8b-9a3c-2f1e5d7c8a90",
"status": "sent",
"channel": "sms",
"to": "99112233",
"parts": 1,
"rate_multiplier": 1,
"credits": 80,
"batch_id": null,
"error": null,
"sandbox": true,
"created_at": "2026-10-06T08:15:30.000Z",
"sent_at": "2026-10-06T08:15:30.000Z",
"balance": 400
}credits is what the message would cost live. balance does not change.
Recipients and outcomes
An SMS is sent or failed at once. Email and bulk sends start queued and settle within a second, so you can test your status polling too.
Verify
In the sandbox a verification code is always zeros: 000000 for six digits, 0000 for four. Wrong codes, the attempt limit and expiry work as they do live. Start one to 99000001 to test the switch to fallback_email.
Rules
- A project can create up to 1,000 sandbox messages in 24 hours. Past that, requests answer
429 rate_limited. - The per-recipient limits are the same as live, but counted separately.
- A sandbox key reads only sandbox messages, batches and verifications. A live key likewise reads only live ones.
- Do not use one
Idempotency-Keywith both a sandbox and a live key. - Sandbox messages appear in the dashboard under Messages with the Sandbox switch on, and are deleted after 30 days.
When you are ready to send for real, put a live key in WESEND_API_KEY. No code changes are needed.