Give your AI agent a real messaging line
AI receptionists, sales agents, support agents, and appointment agents all hit the same wall: the model can decide what to say, but it still needs a real, managed channel to say it on — and a way to hear the customer's answer. SendiMessage is that channel.
The loop is simple: your application decides a customer should be contacted and calls POST /send-message. The message goes out on your dedicated managed line — iMessage where supported, SMS fallback where configured. When the customer replies, the receive webhook delivers the event to your application, your agent generates the next response, and the conversation continues — every turn is one API call plus one webhook.
SendiMessage is the communications infrastructure in this architecture, not the intelligence. Your agent's reasoning, guardrails, and hand-off-to-human logic live in your application; SendiMessage provides the lines, delivery, incoming messages, conversation history, and a team inbox where a person can take over the thread.
What this integration enables
Architecture
- Lead or trigger eventA customer submits a form, books a call, or goes quiet — your application notices
- Your AI agent decidesYour application (and its model) chooses whether and what to send
- SendiMessage APIPOST /send-message — the message is validated and queued on your line
- Managed messaging lineDelivery over iMessage where supported, SMS fallback where configured
- Customer repliesThe answer arrives on the same line and thread
- Signed receive webhookSendiMessage posts the reply event to your endpoint (verify X-SMSBridge-Signature)
- Agent generates the next turnYour application builds context from the thread and calls POST /send-message again
Example request
curl -sS https://api.sendimessage.com/v1/send-message \-H "X-API-Key: $SENDIMESSAGE_API_KEY" \-H "X-API-Secret: $SENDIMESSAGE_API_SECRET" \-H "Content-Type: application/json" \-d '{"number": "+15555550123","content": "Your appointment is tomorrow at 10:00 AM."}'# → {# "status": "QUEUED",# "message_handle": "4e828182-a640-483f-bfe9-17ffcaa51d48",# "to": "+14155550123",# "service": null,# "is_outbound": true,# "error_message": null,# "date_sent": null# }
Delivery events and incoming replies
The receive webhook is the agent's ear: verify the signature, look up the conversation, hand the thread to your model, and send the next message. Acknowledge the webhook fast and generate the reply asynchronously.
// "outbound" event → your your agent application endpoint// Verify the X-SMSBridge-Signature header (HMAC-SHA256 of the raw body// with your webhook secret), then use GET /v2/messages/{message_handle}// for authoritative state and match it to your conversation in your agent application.
Limitations and honest notes
- iMessage delivery is available on supported messaging lines and destinations. Recipients without iMessage receive SMS when fallback is configured — never assume universal iMessage availability.
- Messages are accepted asynchronously — the API returns status QUEUED and final status arrives via webhook or the message endpoints.
- No official SDK for this ecosystem yet — the example uses plain HTTP against the REST API. Official SDKs are published for JavaScript/TypeScript (npm: sendimessage), Python (PyPI: sendimessage), PHP (Composer: sendimessage/sdk), and Go (github.com/sendimessage/sendimessage-go). Every SDK is dependency-free and covers the full public API surface.
- Send messages only to recipients who expect them. Transactional and operational messaging is the primary use case — unsolicited bulk marketing is not.
- SendiMessage does not provide the AI: no model, prompts, or autonomous behavior are included. Your application owns the agent's decisions and safeguards.
- Lines carry reasonable-use new-conversation limits that protect deliverability — an agent that opens unbounded new threads will hit them; replies within existing conversations are the designed pattern.
Security considerations
- Keep API credentials in your agent backend's secret store — never in prompts, model context, or client-side code.
- Verify the X-SMSBridge-Signature header on every webhook before feeding the content to your model.
- Rate-limit and review what your agent sends: you are responsible for message content and consent.
Frequently asked questions
Does SendiMessage include an AI agent?
How does my agent keep conversation context?
Can a human take over from the agent?
Is iMessage guaranteed for agent messages?
Related integrations
Ready to connect AI Agent Messaging?
Request a messaging line and a SendiMessage integration specialist will review your AI Agent Messaging workflow and guide the setup.