Sandbox Testing
Test your SMS integration without sending real messages or using credits.
How It Works
- Use a test API key (sk_test_*) instead of a live key
- Send to magic phone numbers that simulate different scenarios
- Receive realistic responses without actual SMS delivery
Magic Phone Numbers
| Phone Number | Behavior |
|---|---|
| +15005550000 | Always succeeds - simulates successful delivery |
| +15005550001 | Invalid number error |
| +15005550002 | Cannot route error |
| +15005550003 | Insufficient credits error |
| +15005550004 | Rate limited error |
| +15005550005 | Delivery delayed (webhook sent after 30s) |
| +15005550006 | Carrier rejected error |
Example Test Request
curl -X POST https://sendly.live/api/v1/messages \
-H "Authorization: Bearer sk_test_YOUR_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+15005550000",
"text": "Test message",
"messageType": "transactional"
}'
Test vs Live Keys
| Feature | Test Keys (sk_test_*) | Live Keys (sk_live_*) |
|---|---|---|
| Real SMS sent | No | Yes |
| Credits used | No | Yes |
| Magic numbers work | Yes | No |
| Webhooks fired | Yes (simulated) | Yes (real) |
Testing Webhooks
Use the CLI to test webhooks locally:
npx @sendly/cli webhooks listen
This creates a tunnel and forwards webhook events to your local server.