Delivering on iMessage in 41 countries

Give your agent
a phone number.

Not a chat widget nobody opens. A real number your customers already know how to text, answered by your agent on iMessage, with typing indicators, read receipts and tapbacks that behave exactly the way people expect.

Read the docs

First number free. No card.

The difference

Blue bubbles, or nobody replies.

SMS looks like spam and gets treated like spam. iMessage is the channel people actually read, and it carries the signals a conversation needs: your agent can see when someone is typing, know the message was read, and react to it. Your customers cannot tell it is not a person, because structurally it is not different.

typing indicatorsread receipts tapbacksattachments group threadsSMS + RCS fallback
Ada+1 (415) 555-0142 iMessage
hey, order 8812 still hasn't shipped
Found it. Warehouse flagged it this morning, one item was out of stock. Want me to ship what is ready now and send the rest Thursday? Delivered
yeah do that
Done. Two parcels, both tracked. You will get the numbers here. Read 9:41 AM
41Countries
380msp50 send
99.98%Delivery rate
0Apple hardware to run

Platform

Everything a real conversation needs.

Most messaging APIs give you a send endpoint and wish you luck. Agents need the rest of it: state, identity, fallback, and a way to hand off to a human without the thread restarting.

Real numbers, in minutes

Provision a local number in 41 countries from one API call. Each agent gets its own, or share a pool and let us route by conversation.

localtoll-freeshort code

Native iMessage

Blue bubbles, not a bridge that drops to green. Typing indicators, read receipts, tapbacks and inline attachments, sent and received as first-class events.

tapbacksreceiptseffects

Fallback that is invisible

Android, an iPhone with iMessage off, a landline. We detect the capability per recipient and fall through to RCS then SMS without your code branching.

RCSSMSauto-detect

Inbound as webhooks

Every message, receipt, reaction and delivery failure arrives at your endpoint signed and ordered, with the full thread id so your agent keeps context.

signedorderedthreaded

Handoff to a human

Escalate a thread to a person and the number stays the same. The customer sees one continuous conversation, because it is one.

shared inboxtakeover

Compliant by default

STOP and HELP handled for you, consent recorded per recipient, 10DLC registration managed, and quiet hours enforced in the recipient's own timezone.

10DLCopt-outquiet hours

Numbers

One agent, one identity.

A number is not a channel, it is who your agent is. Keep one per agent so customers build a thread with something consistent, or pool them and let us hold the mapping so a returning customer always reaches the same place.

Dedicated

One number, one agent, forever. Best for support lines and anything a customer might save to their contacts.

Pooled

A block of numbers shared across many agents, with sticky routing so a conversation always returns to the number it started on.

Bring your own

Port an existing number in and keep it. Your customers never notice the change, and the history comes with it.

Build

Send a message in four lines.

One SDK call, one webhook. Everything else is ours to worry about: capability detection, fallback, retries, receipts and compliance.

agent.ts
import { Defeated } from "defeated"; const d = new Defeated(process.env.DEFEATED_KEY); await d.send({ from: "+14155550142", // this agent's number to: "+447700900812", text: "Shipped. Tracking to follow.", // imessage, then rcs, then sms. we pick. }); // inbound arrives at your webhook, signed and threaded: // { type:"message.received", thread:"th_9c1", text:"thanks" } // { type:"message.read", thread:"th_9c1", at:"09:41:02Z" } // { type:"reaction.added", thread:"th_9c1", emoji:"๐Ÿ‘" }

Pricing

Per number, per message. Nothing else.

No seats, no platform fee, no annual minimum. Inbound is always free, because charging someone to be replied to is absurd.

Solo $0 1 number ยท 500 messages / mo
  • Native iMessage
  • SMS and RCS fallback
  • Inbound webhooks
Most teams Fleet $79 / mo 25 numbers ยท 50,000 messages
  • Everything in Solo
  • Number pooling and sticky routing
  • Human handoff and shared inbox
  • 10DLC registration handled
Scale $499 / mo 250 numbers ยท 1M messages
  • Everything in Fleet
  • Number porting
  • Dedicated throughput
  • Regional data residency