Limited offer

Build with our iMessage API/MCP. Get our sandbox for free.

Integrations

Send iMessages with Python

The short answer

Yes, Python can send iMessages. The Blue Reacher API is plain HTTPS with a bearer key, so one requests call sends a blue-bubble text from your dedicated line, and a small Flask or FastAPI route receives replies and delivery states. No SDK to install, no A2P registration required, and unlimited iMessages per line. Lines pace at 50 opted-in / 30 cold new contacts a day; replies never metered.

$249 per line per month, published No A2P registration required 50 opted-in / 30 cold new contacts a day, unlimited replies
Languages

5 tools in this group

Trigger

Python

Under 9 seconds

Send iMessage

Result

Reply back in Python

iMessage

Hi Alex, following up on your demo request. Worth a quick chat this week?

Sent from your Python workflow

Yeah, tomorrow works.

Key takeaways

  • Python needs three lines of setup and one POST.
  • Webhooks do the inbound side: register your HTTPS endpoint once and Blue Reacher posts every reply, delivery state and STOP opt-out there, signed with an HMAC header your code verifies.
  • Pricing is flat: $249 per line per month with unlimited iMessages (50 opted-in / 30 cold new contacts a day) and no per-message metering, so volume never changes the bill.

How a message falls back

How a message falls backEvery message is attempted as iMessage first, falls back to RCS if the number cannot receive iMessage, and falls back to SMS if it cannot receive RCS, so the message arrives either way.iMessageBlue bubble, read in minutesRCSIf the number is Android and RCS-...SMSIf neither, so it still arrives
Every message is attempted as iMessage first, falls back to RCS if the number cannot receive iMessage, and falls back to SMS if it cannot receive RCS, so the message arrives either way.

How do you send an iMessage from Python?

Python needs three lines of setup and one POST. The requests library is enough; there is no SDK to install because the API is standard HTTPS with JSON.

import os, requests

r = requests.post(
    "https://api.bluereacher.com/v1/messages",
    headers={"Authorization": f"Bearer {os.environ['BLUEREACHER_API_KEY']}"},
    json={
        "to": "+15551234567",
        "message": "Hi Alex, worth a quick chat this week?",
    },
)
message = r.json()
  • The response carries a message id. Poll https://api.bluereacher.com/v1/status/{message_id} for pending, sent or failed, or skip polling and let the webhook push delivery events to you.

How does Python receive replies and delivery states?

Webhooks do the inbound side: register your HTTPS endpoint once and Blue Reacher posts every reply, delivery state and STOP opt-out there, signed with an HMAC header your code verifies.

import hashlib, hmac, os
from fastapi import FastAPI, Request, HTTPException

app = FastAPI()

@app.post("/webhook")
async def webhook(req: Request):
    raw = await req.body()
    expected = "sha256=" + hmac.new(
        os.environ["BLUEREACHER_WEBHOOK_SECRET"].encode(),
        raw, hashlib.sha256,
    ).hexdigest()
    if req.headers.get("X-BlueReacher-Signature") != expected:
        raise HTTPException(401)
    event = await req.json()
    # event["event"] == "message.received" carries the reply
    return {"ok": True}
  • From there the reply routes wherever your stack wants it: a CRM update, a Slack ping, or straight back into an agent that drafts the answer.

What do Python teams pay to run this?

Pricing is flat: $249 per line per month with unlimited iMessages (50 opted-in / 30 cold new contacts a day) and no per-message metering, so volume never changes the bill.

  • $1,949 per line per year comes to about $162.50 a month with the $449 activation waived. No A2P registration required, so nothing sits between your script and the first real send.
  • White-glove onboarding covers the line, the API key, and the webhook registration, and a brk_test_ sandbox key lets the whole flow run before anything real sends.

Frequently asked questions

Is there a Python SDK for iMessage?

No SDK is needed. The Blue Reacher API is standard HTTPS with JSON and bearer auth, so the requests library covers it in a few lines: one POST to send, one GET for status, and a webhook route for replies. Full schemas live in the OpenAPI spec at docs.bluereacher.com.

Can Python send iMessages from any server?

Yes. Sends run through Blue Reacher's platform over the API, so your Python code runs anywhere: a server, a cron job, a notebook. Messages leave a dedicated iMessage line you own, with automatic RCS then SMS fallback.

How do I check whether a number can receive iMessage from Python?

POST up to 100 numbers to https://api.bluereacher.com/v1/capability and the response says iMessage or SMS per number. Checking before a batch keeps green bubbles out of a blue-bubble campaign.

Do I need A2P registration to text from Python?

No A2P registration required: no brand vetting, no campaign approval, no carrier queue. Pacing applies instead: 50 opted-in / 30 cold new contacts per line per day, with replies unmetered.

What does the API cost?

$249 per line per month, unlimited iMessages, or $1,949 per year (about $162.50/month, $449 activation waived). Lines pace at 50 opted-in / 30 cold new contacts a day; replies never metered. API, MCP server and webhooks are all included.

Send your first Python iMessage today

Book a demo and we'll issue your sandbox key on the call: you run the requests snippet yourself and watch the delivery states come back live.