Sinch Conversation Messages & Contacts
Send, read and follow up on customer chats through one Sinch Conversation API app, whether the customer is on WhatsApp, RCS, SMS, Messenger or Viber. Check which channels a contact can receive, send text, media or choice messages, page through conversation history, and keep contact records and their channel identities up to date.
Connect this API to an AI agent Browse all specs
What you can do with Sinch Conversation Messages & Contacts via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| GET | /v1/projects/{project_id}/apps |
listApps | List the Conversation API apps in the project |
| POST | /v1/projects/{project_id}/capability:query |
queryCapability | Check which channels a contact or phone number can receive messages on |
| POST | /v1/projects/{project_id}/messages:send |
sendMessage | Send a text, media, choice or template message to a contact |
| GET | /v1/projects/{project_id}/messages |
listMessages | List messages, filtered by conversation, contact or time |
| GET | /v1/projects/{project_id}/messages/{message_id} |
getMessage | Get one message |
| GET | /v1/projects/{project_id}/conversations |
listConversations | List conversations of an app or a contact |
| GET | /v1/projects/{project_id}/conversations:recent |
listRecentConversations | List recent conversations with their latest message |
| GET | /v1/projects/{project_id}/conversations/{conversation_id} |
getConversation | Get one conversation |
| POST | /v1/projects/{project_id}/conversations/{conversation_id}:stop |
stopConversation | End an active conversation |
| GET | /v1/projects/{project_id}/contacts |
listContacts | List contacts, or find one by channel identity |
| POST | /v1/projects/{project_id}/contacts |
createContact | Create a contact with one or more channel identities |
| GET | /v1/projects/{project_id}/contacts/{contact_id} |
getContact | Get a contact and its channel identities |
| PATCH | /v1/projects/{project_id}/contacts/{contact_id} |
updateContact | Update a contact's name, email or channel identities |
Authentication
Basic
HTTP Basic
HTTP basic auth with a Sinch access key: the Key ID is the username and the Key Secret is the password.
How to get a credential
- Sign in to the Sinch Customer Dashboard (dashboard.sinch.com).
- Open Settings > Access Keys and click Create Access Key.
- Name it (e.g. VX Agents), then copy the Key ID and Key Secret; the secret is shown only once.
- Note your Project ID on the same page and the App ID of your Conversation API app (Conversation API > Apps); you pass both as parameters.
Permissions used
Access keys have no scopes; a key can use every Conversation API app in its project.
| Credential | Operations |
|---|---|
| Project access key | all operations: listApps, queryCapability, sendMessage, listMessages, getMessage, listConversations, listRecentConversations, getConversation, stopConversation, listContacts, getContact, createContact, updateContact |
Common errors
| Status | Meaning | Fix |
|---|---|---|
| 401 | Wrong key id or secret | Create a new access key and store both parts. |
| 403 | The key belongs to another project, or the region host does not match the app | Use the project's own key and the app's region (us, eu or br). |
| 400 | Invalid request, e.g. a recipient with no identity on the chosen channel | Read error.message; check the contact's channel identities. |
| 404 | Unknown project, app, contact or conversation id | Look ids up with listApps and listContacts. |
| 429 | Rate limit (per project) exceeded | Wait and retry with backoff. |
Store the key id and secret as a basic-auth credential in VX Agents; never paste them into chat.
Usage guide
Setup
- Credential: a Sinch access key (Dashboard > Settings > Access Keys): Key ID as username, Key Secret as password, stored as a basic-auth credential.
- Preset parameters worth pinning:
project_id(same page as the keys) and theapp_idof your Conversation API app. Set theregionserver variable (us,euorbr) to the region the app was created in; a mismatch fails.
Message a customer
- Find the contact:
listContactswithchannel+identity(e.g.WHATSAPPand+4915112345678) orexternal_id;getContactshows its channel identities.createContactneedschannel_identitiesandlanguage(e.g.EN_US). - Optional:
queryCapabilitywithapp_idandrecipientto check which channels can reach them. sendMessagewithapp_id,recipientandmessage:recipient:{"contact_id": "..."}or{"identified_by": {"channel_identities": [{"channel": "WHATSAPP", "identity": "+4915112345678"}]}}.message:{"text_message": {"text": "Hi!"}}, ormedia_message(url),choice_message,card_message,location_message,template_message.- Optional
channel_priority_order, e.g.["WHATSAPP", "SMS"], to fall back when a channel fails. This sends a real (billed) message: show the user the text and recipient and get a yes first.
- The response gives a
message_id; delivery status arrives by webhook, andgetMessageshows the stored message.
Read the history
listRecentConversations(needsapp_id) for the latest conversations with their last message;listConversationswithcontact_idoronly_active=true.listMessageswithconversation_idorcontact_id,start_time/end_time,direction(TO_APP= from the customer); page withpage_sizeandpage_token.getConversation;stopConversationends an active one (confirm first).
Good to know
- Ids are ULIDs (26 characters). Timestamps are RFC 3339 UTC (
2026-10-22T09:00:00Z). - Phone identities use E.164 (
+and country code). - WhatsApp only allows free text within 24 hours of the customer's last message; after that send an approved
template_message. updateContactchanges only the fields named inupdate_maskwhen given.- Carousel, list and contact-card messages and per-channel overrides are left out to keep the tool small.
Source: Sinch Conversation API reference (https://developers.sinch.com/docs/conversation/api-reference), checked 2026-10-22.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Sinch Conversation Messages & Contacts” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.