Limited offer

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

Integrations

Send iMessages with Go

The short answer

Yes, Go can send iMessages. The Blue Reacher API is plain HTTPS with a bearer key, so net/http sends a blue-bubble text from your dedicated line with zero dependencies, and one handler receives replies and delivery states. No SDK to install, no A2P registration required, 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

Golang

Under 9 seconds

Send iMessage

Result

Reply back in Golang

iMessage

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

Sent from your Golang workflow

Yeah, tomorrow works.

Key takeaways

  • Go's standard library covers the whole integration: marshal the body, set the bearer header, post.
  • Webhooks carry the inbound side: register your HTTPS endpoint once and every reply, delivery state and STOP opt-out arrives as a signed JSON envelope.
  • 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 Go?

Go's standard library covers the whole integration: marshal the body, set the bearer header, post. No client package to import or version.

package main

import (
    "bytes"
    "encoding/json"
    "net/http"
    "os"
)

func main() {
    body, _ := json.Marshal(map[string]string{
        "to":      "+15551234567",
        "message": "Hi Alex, worth a quick chat this week?",
    })
    req, _ := http.NewRequest("POST",
        "https://api.bluereacher.com/v1/messages",
        bytes.NewReader(body))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("BLUEREACHER_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    http.DefaultClient.Do(req)
}
  • The response carries a message id. Poll https://api.bluereacher.com/v1/status/{message_id} for pending, sent or failed, or let the webhook push delivery events to your handler.

How does Go receive replies and delivery states?

Webhooks carry the inbound side: register your HTTPS endpoint once and every reply, delivery state and STOP opt-out arrives as a signed JSON envelope.

func webhook(w http.ResponseWriter, r *http.Request) {
    raw, _ := io.ReadAll(r.Body)
    mac := hmac.New(sha256.New, []byte(os.Getenv("BLUEREACHER_WEBHOOK_SECRET")))
    mac.Write(raw)
    expected := "sha256=" + hex.EncodeToString(mac.Sum(nil))
    if r.Header.Get("X-BlueReacher-Signature") != expected {
        w.WriteHeader(http.StatusUnauthorized)
        return
    }
    var event struct {
        Event string          `json:"event"`
        Data  json.RawMessage `json:"data"`
    }
    json.Unmarshal(raw, &event)
    // event.Event == "message.received" carries the reply
    w.WriteHeader(http.StatusOK)
}
  • The handler drops into net/http, chi or gin unchanged; the signature check on the raw body is the only part that must not be skipped.

What do Go 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 deploy and the first real send.
  • White-glove onboarding covers the line, the API key and the webhook registration, and a brk_test_ sandbox key runs the whole flow with nothing real sent.

Frequently asked questions

Is there a Go SDK for iMessage?

No SDK is needed. The Blue Reacher API is standard HTTPS with JSON and bearer auth, so net/http covers it: one POST to send, one GET for status, one handler for replies. The OpenAPI 3.1 spec at docs.bluereacher.com generates a typed client where a team wants one.

Does this suit a Go worker or queue consumer?

Yes. Sends queue through the drip pipeline by default, so a worker can submit steadily while lines pace at 50 opted-in / 30 cold new contacts a day. Delivery states stream back per message over the webhook, and replies are never metered.

How do I check iMessage availability from Go?

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 Go?

No A2P registration required: no brand vetting, no campaign approval, no carrier queue. Messages leave a dedicated iMessage line with automatic RCS then SMS fallback for contacts who cannot receive iMessage.

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 Go iMessage today

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