Skip to content
iMessage APIs
All answers

Providers

What is the Linq iMessage API?

Linq sells a communications API covering iMessage, RCS, SMS and voice. It states SOC 2 Type II compliance, advertises a 99.95% uptime SLA, and lists group chats, tapbacks, read receipts, rich media, FaceTime scheduling and Find My location sharing. It does not publish pricing — access is through a sales conversation after a free sandbox.

How to read this

Linq is not in our provider comparison because we have not run a paid line with them. Everything here comes from their own public pages, checked August 2026, and is labelled as their claim where it is their claim.

What Linq actually sells

  • iMessage, RCS, SMS and voice through a single API and one contract.
  • Group chats, tapbacks, read receipts, typing indicators and rich media.
  • FaceTime scheduling and Find My location sharing — unusual, and genuinely differentiating.
  • A stated SOC 2 Type II posture and an advertised 99.95% uptime SLA.
  • A free sandbox with a temporary test number, before any sales conversation.

Pricing is not published

Linq quotes through sales. Competitor comparison pages cite figures around $250 per line plus a four-figure setup fee — that is a rival's characterisation on a page written to win the deal, so treat it as an order of magnitude rather than a quote. The published prices across the category.

The full write-up, and how to evaluate it.

What it does

  • Send and receive iMessage programmatically, with RCS and SMS fallback and automatic routing.
  • Group chat creation and management — materially harder than one-to-one, and missing or partial at several competitors.
  • Tapback reactions, read receipts and typing indicators.
  • Rich media, plus delivery of interactive iMessage apps.
  • FaceTime calling and scheduling, and Find My location sharing.
  • Real-time webhooks across all of it.

The claims worth verifying

SOC 2 Type II

Compliance posture stated on their site

Source: linqapp.com

99.95%

Uptime SLA they advertise as contractual

Source: linqapp.com

<120ms

Median latency claim

Source: linqapp.com

Vendor claims, not our measurements. Ask for the artefact: the SOC 2 Type II report under NDA, and the SLA text with its remedy clause. A report that exists will be produced within a day. How to run that evaluation.

Why it is also called Linq Blue

Linq began as a digital business card company and moved into communications infrastructure. "Blue" distinguishes the iMessage channel from the RCS, SMS and voice channels sold alongside it — but you will not find a separately priced product by that name. It is one API.

What that means practically

  • One integration, four channels. If you genuinely need iMessage *and* RCS *and* SMS *and* voice from one vendor, that consolidation is the actual pitch.
  • One contract and one compliance review, which is the point for a procurement team.
  • No à la carte iMessage pricing is published — the platform is quoted as a whole.
  • Fallback routing is theirs to handle, since they own every channel in the path.

If you only want iMessage

Buying a four-channel platform to use one channel is usually the wrong shape, and cheaper single-channel providers exist. The pricing comparison puts the options side by side.

Who it fits

SituationVerdict
Enterprise procurement with a security questionnaireStrong fit — the compliance posture is the product
Regulated industry needing a DPA and an SLAStrong fit
An AI agent product needing group threadsGood fit, and explicitly targeted
A three-van home services companyWrong end of the market — start here
You want a price before a sales callPoor fit — Photon publishes theirs

The week-long test

  1. Open the sandbox first. Linq offers one free, with a temporary test number. Do this before any sales call.
  2. Send 20 messages a day for two days to real recipients who expect them. Log every send and every delivery event with timestamps.
  3. Measure delivered rate, not API uptime. Under 95% at that volume is a warning, not a fluke.
  4. Break it deliberately — a landline, an Android number, a malformed number. Check the errors are distinguishable and documented.
  5. Test inbound. Reply from three phones and confirm every webhook arrives, verifies and is idempotent.
  6. Email support with a real question at a normal hour and time the reply. You are buying that response time as much as the API.

The questions that matter

Ask before signing

  • Send the SOC 2 Type II report under NDA — and what period does it cover?
  • Is the messaging infrastructure in scope, or only corporate systems?
  • What are the documented rate limits, in numbers per minute and per day?
  • What is the SLA remedy when it is missed, and what is excluded?
  • What happens to our numbers if we leave?
  • What is your median delivered rate, and your p10?

The caveat no vendor resolves

Apple publishes no iMessage API. A SOC 2 report attests to a company's own controls, not to Apple's permission, and every provider here — Linq included — reaches iMessage by means Apple has not sanctioned. The structural position.

Calling it from Node.js

typescript
const response = await fetch("https://api.linqapp.com/v1/messages", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.LINQ_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    to: "+19998887777",
    text: "Your 2pm window is confirmed.",
    webhook_url: "https://acme.co/webhooks/imessage",
  }),
  // Without this, a hung provider hangs your request handler with it.
  signal: AbortSignal.timeout(10_000),
});

if (!response.ok) {
  const retryable = response.status === 429 || response.status >= 500;
  throw new ImessageError(await response.text(), response.status, retryable);
}

Node 20+. The retryable flag is the important line — see below.

Calling it from Python

python
import os
import httpx

_client = httpx.Client(
    base_url="https://api.linqapp.com",
    timeout=httpx.Timeout(10.0, connect=5.0),
    headers={"Authorization": f"Bearer {os.environ['LINQ_API_KEY']}"},
)


def send_message(to: str, body: str, callback: str | None = None) -> dict:
    response = _client.post(
        "/v1/messages",
        json={"to": to, "text": body, "webhook_url": callback},
    )
    # 429 and 5xx are worth retrying; a 422 for a recipient not on iMessage
    # will fail identically forever, so route those to your SMS fallback.
    response.raise_for_status()
    return response.json()

A module-level Client reuses the TLS connection — worth it against an API you call thousands of times a day.

Names it gets confused with

Blooio, Miss Blue, Texting Blue and Project Blue are separate companies — "blue" is unsurprisingly common in this category. The directory disambiguates every name we could find.

This page also answers

  • linq blue imessage api
  • linq imessage api evaluation review
  • linq tech services company imessage api
  • linq tech services company imessage api python
  • linq tech services company imessage api node.js