Blue Reacher
Quickstart2 / 50

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.

On this page