Help us improve
Share bugs, ideas, or general feedback.
From sinch-claude-plugin
Sends and receives omnichannel messages via Sinch Conversation API for SMS, WhatsApp, RCS, MMS, Viber, Messenger, Instagram, Telegram, and more. Use for texts, rich cards, carousels, templates, batch sends, webhooks.
npx claudepluginhub sinch/sinch-plugins --plugin sinch-claude-pluginHow this skill is triggered — by the user, by Claude, or both
Slash command
/sinch-claude-plugin:conversation-apiThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
One unified API to send and receive messages across SMS, WhatsApp, RCS, MMS, Viber Business, Facebook Messenger, Instagram, Telegram, KakaoTalk, KakaoTalkChat, LINE, WeChat, and Apple Messages for Business. The API transcodes between a generic message format and channel-specific formats automatically.
references/batch.mdreferences/channels/mms.mdreferences/channels/rcs.mdreferences/channels/sms.mdreferences/channels/whatsapp.mdreferences/templates.mdreferences/webhooks/triggers/capability.mdreferences/webhooks/triggers/contact-management.mdreferences/webhooks/triggers/conversation-lifecycle.mdreferences/webhooks/triggers/event-delivery.mdreferences/webhooks/triggers/event-inbound.mdreferences/webhooks/triggers/message-delivery.mdreferences/webhooks/triggers/message-inbound.mdreferences/webhooks/triggers/message-submit.mdreferences/webhooks/triggers/opt-inout.mdreferences/webhooks/triggers/smart-conversations.mdreferences/webhooks/triggers/system-events.mdscripts/common/list_messages.cjsscripts/common/sinch_client.cjsscripts/rcs/send_card.cjsSend/receive SMS/MMS via Telnyx REST API using curl. Handle delivery webhooks and opt-outs for notifications, 2FA, messaging apps.
Integrates with WhatsApp Business Cloud API (Meta) for sending messages, managing templates, handling HMAC-SHA256 webhooks, and automating customer service. Includes Node.js and Python boilerplates.
Creates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
One unified API to send and receive messages across SMS, WhatsApp, RCS, MMS, Viber Business, Facebook Messenger, Instagram, Telegram, KakaoTalk, KakaoTalkChat, LINE, WeChat, and Apple Messages for Business. The API transcodes between a generic message format and channel-specific formats automatically.
Auth: OAuth2 bearer token (recommended) or HTTP Basic (keyId:keySecret, testing only — heavily rate limited). See sinch-authentication for setup.
Apps — Container for channel integrations. Each app has channels, webhooks, and a processing mode. Created via dashboard or API.
Contacts — End-users with channel identities. Auto-created in CONVERSATION mode.
Conversations — Message threads between app and contact. Only exist in CONVERSATION mode.
Processing modes — DISPATCH (default): no contacts/conversations, for high-volume unidirectional SMS. CONVERSATION: auto-creates contacts/conversations, enables 2-way flows. Set per app.
Message types — text_message, media_message, card_message, carousel_message, choice_message, list_message, template_message, location_message, contact_info_message. See Message Types.
Channel fallback — Set channel_priority_order to try channels in sequence. SWITCHING_CHANNEL status indicates fallback.
Delivery statuses — QUEUED_ON_CHANNEL → DELIVERED → READ, or FAILED. SWITCHING_CHANNEL when fallback occurs.
Webhooks — Up to 5 per app. Default callback rate: 25/sec. 21 usable triggers — most common: MESSAGE_INBOUND, MESSAGE_DELIVERY, EVENT_INBOUND. See Callbacks & Webhooks for full trigger list.
HMAC validation — Signature: HMAC-SHA256(rawBody + '.' + nonce + '.' + timestamp, secret). Headers: x-sinch-webhook-signature, -timestamp, -nonce, -algorithm.
Templates — Pre-defined messages with parameter substitution. Managed at {region}.template.api.sinch.com (V2 only — V1 no longer accessible). See references/templates.md.
Batch sending — Up to 1000 recipients with ${parameter} substitution. Base URL: {region}.conversationbatch.api.sinch.com. See references/batch.md.
Supported channels: SMS, WHATSAPP, RCS, MMS, VIBERBM, MESSENGER, INSTAGRAM, TELEGRAM, KAKAOTALK, KAKAOTALKCHAT, LINE, WECHAT, APPLEBC. Channel-specific details: SMS, WhatsApp, RCS, MMS. See Channel Support.
Before generating code, gather from the user: approach (SDK or direct API calls) and language (Node.js, Python, Java, .NET/C#, curl). Do not assume defaults.
When the user chooses SDK, fetch the relevant SDK reference page linked in Quick Reference for accurate method signatures. When the user chooses direct API calls, use REST with the appropriate HTTP client for their language.
| Language | Package | Install |
|---|---|---|
| Node.js | @sinch/sdk-core | npm install @sinch/sdk-core |
| Java | com.sinch.sdk:sinch-sdk-java | Maven dependency (see below) |
| Python | sinch | pip install sinch |
| .NET | Sinch | dotnet add package Sinch |
Before generating the Maven dependency, look up the latest release version of com.sinch.sdk:sinch-sdk-java on Maven Central and use that version.
<dependency>
<groupId>com.sinch.sdk</groupId>
<artifactId>sinch-sdk-java</artifactId>
<version>LATEST_VERSION</version>
</dependency>
Regional — must match the Conversation API app region:
https://us.conversation.api.sinch.comhttps://eu.conversation.api.sinch.comhttps://br.conversation.api.sinch.comcurl -X POST "https://us.conversation.api.sinch.com/v1/projects/{PROJECT_ID}/messages:send" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-d '{
"app_id": "YOUR_APP_ID",
"recipient": {
"identified_by": {
"channel_identities": [{
"channel": "SMS",
"identity": "+15551234567"
}]
}
},
"message": {
"text_message": {
"text": "Hello from Sinch Conversation API!"
}
},
"channel_properties": {
"SMS_SENDER": "+15559876543"
}
}'
For SDK examples, see the SDK references in Quick Reference.
channel_priority_order array and list all channel identities in recipient. See Messages API Reference.{ "recipient": { "contact_id": "CONTACT_ID" } } instead of identified_by when the contact already exists.card_message, carousel_message, choice_message, list_message. See Message Types.template_message with an approved template. See references/templates.md.POST /webhooks with target, target_type: "HTTP", and triggers array. Each webhook target URL must be unique per app — attempting to register a duplicate target returns 400 INVALID_ARGUMENT. See Webhooks API Reference.POST /messages:transcode to preview how a message renders on a specific channel without actually sending it. Useful for testing rich messages.GET /v1/projects/{project_id}/messages (filter by messages_source)POST /events:send for typing indicators, composing eventsPOST /capability:query (async; result via CAPABILITY webhook)Bundled Node.js scripts in scripts/ for sending messages (SMS, RCS text/card/carousel/choice/media/location/template), listing messages, and webhook CRUD. All read credentials from environment variables and support --help.
export SINCH_PROJECT_ID="your-project-id"
export SINCH_KEY_ID="your-key-id"
export SINCH_KEY_SECRET="your-key-secret"
export SINCH_APP_ID="your-app-id"
export SINCH_REGION="us" # us|eu|br, default: us
Examples:
node scripts/sms/send_sms.cjs --to +15551234567 --message "Hello"node scripts/rcs/send_card.cjs --to +15551234567 --title "Sale" --image-url URLnode scripts/webhooks/create_webhook.cjs --app-id APP_ID --target URL --triggers MESSAGE_INBOUND,MESSAGE_DELIVERYnode scripts/common/list_messages.cjs --channel SMS --page-size 20For SDK code examples, refer to the official SDK syntax references:
For REST API payloads and field definitions, see:
Webhook trigger payloads: See references/webhooks/triggers/ for payload structure and key fields for all 21 trigger types.
404 errors. All Conversation API URLs are region-specific ({region}.conversation.api.sinch.com). If you get a 404, the most likely cause is a region mismatch — verify the app's region in the Sinch dashboard and configure the SDK/URL accordingly.400 malformed or duplicate resource (e.g., webhook with same target already exists), 401 bad credentials, 403 no access/billing limit, 404 not found/region mismatch, 429 rate limit, 500/501/503 retry with backoff.404). Check delivery status via webhook or GET /messages/{message_id}. WhatsApp: must be within 24h window or using an approved template. Channel fallback: SWITCHING_CHANNEL status means fallback occurred — each attempted channel may incur charges.target_type is HTTP, target URL must be publicly reachable and return 2xx, check triggers are correct — max 5 webhooks per app.