iMessage API

The iMessage API that just works.

Send iMessages programmatically with a REST API. Real-time webhooks, typed SDKs, and CRM sync. One POST request to delivered — no Apple hardware required.

Read the DocsGet API Keys

$0.01/message · No setup fees · Free sandbox

Quick Start

Three languages. One API.

Send your first iMessage in under 30 seconds. Here's how.

cURL
curl -X POST \
  https://api.tuco.ai/v1/messages \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+15550123456",
    "body": "Your order shipped!"
  }'
Python
import requests

requests.post(
  "https://api.tuco.ai/v1/messages",
  headers={
    "Authorization": "Bearer sk_live_..."
  },
  json={
    "to": "+15550123456",
    "body": "Your order shipped!"
  }
)
Node.js
import Tuco from '@tuco-ai/sdk'

const tuco = new Tuco('sk_live_...')

await tuco.messages.send({
  to: '+15550123456',
  body: 'Your order shipped!'
})

Authentication

API key. Bearer token. Done.

Every request uses a Bearer token in the Authorization header. You get a live key and a sandbox key from the dashboard.

Authorization Header
// Live key — sends real messages
Authorization: Bearer sk_live_abc123...

// Sandbox key — simulates everything
Authorization: Bearer sk_test_xyz789...

Platform

Everything you need to ship.

🌐

REST API

Send iMessages, check availability, manage contacts, and retrieve delivery status with simple HTTP calls. JSON in, JSON out.

🔔

Real-time Webhooks

Subscribe to message.sent, message.delivered, message.read, message.replied, and message.failed. Push data to your system the instant it happens.

📦

TypeScript SDK

npm install @tuco-ai/sdk — first-class TypeScript support with autocomplete, type safety, and built-in retry logic.

🔄

CRM Sync

Push reply state, delivery receipts, and opt-outs directly into HubSpot, Salesforce, or GoHighLevel in real time.

📨

Bulk Send

Queue messages to hundreds of contacts with a single API call. Tuco handles throttling, retries, and compliance automatically.

🎥

Rich Media

Send images, videos (up to 25MB), PDFs, contacts, and audio files. Attachments are cached for instant re-delivery.

Webhooks

Real-time event callbacks.

Register a webhook URL and we'll POST event data within 2-3 seconds. No polling. No cron jobs.

message.sentMessage accepted and queued for delivery
message.deliveredMessage delivered to recipient's device
message.readRecipient opened and read the message
message.repliedRecipient sent a reply (body included in payload)
message.failedDelivery failed — reason code included

SDK

npm install and go.

First-class TypeScript SDK with autocomplete, type safety, and built-in retry logic.

Terminal
# Install the SDK
npm install @tuco-ai/sdk

# Or with yarn
yarn add @tuco-ai/sdk

# Check iMessage availability
const { available } = await tuco.lookup('+15550123456')
// { available: true, platform: 'imessage' }

Rate Limits

Built for deliverability.

Rate limits protect your sender reputation. Need more throughput? Stack additional lines.

150

Messages / Day / Line

Resets at midnight UTC

25

New Contacts / Day / Line

Existing contacts don't count

Pricing

80% cheaper. Same delivery.

Per-message pricing with no hidden fees, no per-contact charges, and no minimum commitments.

Tuco AI

$0.01

per message

Linq

$0.03

per message

SendBlue

$0.05

per message

Same iMessage infrastructure. Fraction of the cost. See full pricing →

FAQ

Questions. Answered.

What are the rate limits on the Tuco iMessage API?

Each line supports 150 messages per day and 25 new contacts per day. Need more throughput? Add additional lines. Rate limits exist to protect deliverability and keep your sender reputation clean.

Does Tuco fall back to SMS if the recipient doesn't have iMessage?

Yes. If the recipient isn't reachable via iMessage, Tuco automatically falls back to SMS so your message still gets delivered. You can also check iMessage availability before sending with our lookup endpoint.

Can I send bulk iMessages through the API?

Absolutely. Use the bulk send endpoint to queue up to 150 messages per line per day. Tuco handles throttling, retry logic, and delivery tracking automatically.

What file types and sizes are supported for attachments?

Tuco supports images (JPEG, PNG, GIF, HEIC), videos (up to 25MB), PDFs, contacts (.vcf), and audio files. Attachments are cached for fast re-delivery across recipients.

How do I test the API without sending real messages?

Use your sandbox API key to send test messages. Sandbox mode simulates the full send-deliver-webhook lifecycle without actually delivering to a real device.

How fast are webhook deliveries?

Webhooks fire within 2-3 seconds of the event. You'll get real-time callbacks for sent, delivered, read, replied, and failed events — no polling required.

Do I need a Mac or iPhone to use the API?

No. Tuco runs on dedicated Apple infrastructure that we manage. You interact with a standard REST API — no Apple hardware on your end.

How does Tuco compare to SendBlue and Linq on pricing?

Tuco charges $0.01 per message. SendBlue charges $0.05 and Linq charges $0.03. Same iMessage delivery, fraction of the cost. No hidden fees, no per-contact charges.

Start shipping iMessage today.

Get your API keys, send your first message, and validate delivery in under five minutes.

Get API KeysRead the Docs
PricingDeveloper DocsAgentic APIIntegrations
Book a Demo3x reply rates