Beam
Open Beam
Messages

Send a message

Current documentation

One endpoint sends everything. Beam picks the best channel per contact, paces the send, and delivers.

POST https://beam.aisync.link/v1/messages

FieldTypeDescription
tostring, requiredThe recipient's phone number.
messagestring, requiredWhat to say. Plain text; sent exactly as written.
first_namestring, optionalSaved to the contact the first time you message them.
attachmentsstring[], optionalPublic HTTPS file links. Up to 10 on blue bubbles, 3 on texts. See Photos & attachments.
effectstring, optionalFull-screen effect on blue bubbles: confetti, lasers, balloons, fireworks, celebration, love, slam, loud, gentle, spotlight, echo, invisible_ink, shooting_star. Ignored on texts.
curl -X POST https://beam.aisync.link/v1/messages \
  -H "x-api-key: YOUR_WORKSPACE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+15551234567",
    "message": "Hey Sarah, you are booked for Tuesday at 2. See you then!",
    "effect": "confetti"
  }'

Response

{
  "id": "41",
  "status": "queued",
  "to": "+15551234567"
}
Queued means protected, not slowBeam sends from a live queue that paces every number: warm-up limits, business hours, human-like spacing. Most messages go out within minutes. If the recipient has opted out you get a 403 and nothing sends.

How the channel is chosen

Beam checks whether the recipient supports blue bubbles. If yes, the message goes as iMessage, with automatic text fallback if a blue-bubble delivery fails mid-flight. If not, it goes as a text. Either way it comes from the contact's pinned number, so their whole conversation lives in one thread.