Quickstart
From a test key to a delivered message and a verified webhook, in five minutes, without sending anything real.
Everything below runs on a brk_test_ key against the simulator: identical requests and responses to production, zero real messages. Swap the key at the end.
No account yet? Every example on this page uses the shared public sandbox key brk_test_Dc815ar0WQChF5odYSeB8k2ovmVf1zG2 and runs as-is. It is simulator-only and can never send a real message; it is shared, so its rate limits are shared too. Create your own key in the dashboard when you want a private one.
1. Send a message
curl -X POST https://api.bluereacher.com/v1/messages \
-H "Authorization: Bearer brk_test_Dc815ar0WQChF5odYSeB8k2ovmVf1zG2" \
-H "Content-Type: application/json" \
-d '{ "to": "+13035550101", "message": "First send from the API" }'{
"success": true,
"message_id": "sim_d_1788116691413_milvzs",
"mode": "drip",
"queued": true,
"scheduled_for": "2026-08-31T09:14:51.413Z",
"sandbox": true
}The default lane is drip: paced, capacity-aware, scheduled about 10 minutes out in production. "sandbox": true and the X-BlueReacher-Sandbox: true header confirm nothing real happened.
2. Track it
curl https://api.bluereacher.com/v1/status/sim_d_1788116691413_milvzs \
-H "Authorization: Bearer brk_test_Dc815ar0WQChF5odYSeB8k2ovmVf1zG2"Sandbox ids progress on a timer: pending, then sent after about 5 seconds. Production behaves the same way, on real time scales, and the message.sent webhook beats polling.
3. Read the conversation
curl "https://api.bluereacher.com/v1/conversations?phone=%2B13035550101" \
-H "Authorization: Bearer brk_test_Dc815ar0WQChF5odYSeB8k2ovmVf1zG2"The simulator returns a realistic thread with delivery channels and a reaction, so your rendering code has something true-to-shape to chew on.
4. Check your lines
curl https://api.bluereacher.com/v1/devices \
-H "Authorization: Bearer brk_test_Dc815ar0WQChF5odYSeB8k2ovmVf1zG2"daily_cap, cold_outreach_today and available_today are the capacity model in numbers: what counts and what is unlimited.
5. Reply instantly, like a conversation
curl -X POST https://api.bluereacher.com/v1/messages \
-H "Authorization: Bearer brk_test_Dc815ar0WQChF5odYSeB8k2ovmVf1zG2" \
-H "Content-Type: application/json" \
-d '{ "to": "+13035550101", "message": "Got it, sending the doc now", "send_mode": "instant" }'Instant is the conversational lane: dispatches now, 10/min and 75/day per key.
6. Wire webhooks
Register your endpoint in the dashboard (or with us during onboarding), then verify the signature on every delivery before parsing:
X-BlueReacher-Signature: sha256=<HMAC-SHA256(secret, raw_body)>Full verification code and the event catalogue are in Webhooks.
7. Go live
Swap brk_test_ for brk_live_. Same endpoints, same shapes, real lines. Before the first campaign, read Rate limits and sending capacity once; it is the difference between a program that compounds and a line that needs a cooldown in week one.
If your integration is an AI agent, skip the HTTP layer entirely and point it at the MCP server.

