For developers
The hard parts of communications,already done.
One API across voice, messaging, mail, calendar, CRM and commerce. Identity, threading, consent, idempotency and signed webhooks are built in, so the code you write is about your product.
The shape of it
Person first. Channel second.
You don’t send to a phone number and hope it matches someone. You resolve a person, and the engine works out the channel, the consent and the thread.
Samples are illustrative. The full reference is shared with approved partners.
// Every call is scoped to one of your clients.
const client = autochat.client(clinic.autochatClientId);
// Find the person, not the phone number.
const maya = await client.contacts.resolve({ phone: "+14035550142" });
// Consent is checked before it sends. A retry never double-texts.
await client.messages.send({
to: maya.id,
channel: "sms",
template: "booking.confirmed",
data: { when: booking.startsAt },
idempotencyKey: `booking-${booking.id}`,
});
Primitives
Eight nouns cover most of it.
- clients
- The businesses you serve. Every request targets exactly one.
- contacts
- People, resolved across phone, email and social handles.
- threads
- One ordered history per person, across every channel.
- messages
- Texts, rich messages and social replies: sent, scheduled or cancelled.
- calls
- Numbers, routing, recordings and transcripts.
- bookings
- Availability, holds, confirmations and reschedules.
- invoices
- Estimates, invoices, payments and receipts.
- webhooks
- Signed events for everything above.
Built in
Things you won’t have to build.
These are the parts that take a quarter to get right and a year to stop breaking.
Idempotent sends
Pass a key with every send. Retry as often as your queue likes, and the person gets one message.
Signed webhooks
Every event is signed, so you can verify it came from AutoChat before acting on it.
A real sandbox
Test keys run the real delivery pipeline, with signed webhooks included, without contacting a real person.
Capability-scoped keys
Issue a key that can send but can't read contacts, or read but never send. Grant the least it needs.
Client scoping, enforced
Every request names one client. Asking for another workspace's client is refused, not filtered.
Consent that fails closed
The engine checks consent before every send. If it can't check, it doesn't send.
Scheduled sends
Schedule messages ahead and cancel them by ID or by attribute. A send that misses its moment is skipped, not sent late.
Threading for free
Everything you send, and every reply, lands on the right person's thread without you tracking a thing.
Agents with context
The context your AI agents read is the same thread your code reads: one source, never out of sync.
Also building on AutoChat
- AgenciesStop reselling someone else's platform.Launch a communications product under your own name, package it your way, and give every client their own data, numbers and billing.Autograf Digital runs its own client base on AutoChat.
- Software platformsYou didn't set out to become a phone company.Stop stitching together vendors for numbers, texting, email and consent. Put one engine underneath your product and get back to building your product.Barberi and Huddles build on the engine.
Build on the thread, not the plumbing.
API access comes with test keys and the full reference. Tell us what you're building.