{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["tabs","tab"]},"type":"markdown"},"seo":{"title":"RCS","description":"Warp is the groundbreaking API that allows you to navigate, manipulate, and control time."},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"id":"rcs","level":2,"__idx":0},"children":["RCS "]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide walks you through sending your first RCS message using the InstaMessage Messaging API."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["RCS (Rich Communication Services) is the next generation of SMS. It shows your verified brand name and logo, and supports images, video, files, rich cards and suggested reply buttons, all in the recipient's native messaging app."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You'll learn how to authenticate, send RCS text, media and rich messages, personalise content using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["injected_fields"]},", and understand the API response."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"before-you-begin","__idx":1},"children":["Before you begin"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To send RCS messages through InstaMessage, you'll need the following:"]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"1-an-instamessage-account","__idx":2},"children":["1. An InstaMessage account"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you're new to InstaMessage, contact our sales team to set up your account:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:sales@instamessage.co.uk"},"children":["sales@instamessage.co.uk"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"2-a-verified-rcs-agent","__idx":3},"children":["2. A verified RCS agent"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["RCS messages are sent from an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["RCS agent"]}," (your verified brand sender), not a phone number."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each agent must be registered and approved by Google and the mobile carriers before it can send messages. This includes your brand name, logo, colour, description and use case."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To get your RCS agent set up, contact our team:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:support@instamessage.co.uk"},"children":["support@instamessage.co.uk"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once approved, the agent is connected to your InstaMessage account and becomes the sender for all RCS messages sent via the API. You don't pass a sender in your requests."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Carrier approval and country availability apply. RCS can only be delivered to recipients whose device and carrier support RCS."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"3-your-api-key","__idx":4},"children":["3. Your API key"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can find your API key in the InstaMessage dashboard:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Go to ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://app.instamessage.co.uk/settings/api/","target":"_blank","rel":"noopener noreferrer"},"children":["Admin → API"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Show Key"]}," under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["API Live Key"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Copy your API Key"]}]},{"$$mdtype":"Tag","name":"div","attributes":{"style":{"margin":"24px 0"}},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/api-key.8705c10cdb76963ae2ea14d81f365816ad735fea6fe49057cbdf30612fd1a6e6.9c1bb791.png","alt":"Where to find your API key in the InstaMessage dashboard","style":{"maxWidth":"100%"}},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your API key is tied to your InstaMessage account and authorises access to all InstaMessage APIs."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Important: Treat your API key like a password. Never share it publicly or commit it to source control."]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each account has a single active API key. Subaccounts and environments will be supported in future."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"authentication-method","__idx":5},"children":["Authentication method"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["InstaMessage uses ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["API key authentication"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each API request must include a valid API key issued to your account."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Authorization: Bearer YOUR_API_KEY\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"rcs-endpoint","__idx":6},"children":["RCS Endpoint"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All RCS messages are sent using the unified messaging endpoint:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"POST https://api.instamessage.co.uk/v1/messages\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"4-required-fields-for-sending-rcs","__idx":7},"children":["4. Required fields for sending RCS"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Required fields"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["channel"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Must be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"rcs\""]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["to"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["E.164 formatted number (Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["+447123456789"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"text\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"image\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"video\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"file\""]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"custom\""]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Conditional fields"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Required when"},"children":["Required when"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["text"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type = text"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Body of the message. Up to 3,000 characters; longer text is rejected with error ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4043"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["image"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type = image"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Object containing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["url"]},". JPEG, PNG or GIF."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["video"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type = video"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Object containing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["url"]},". MP4, M4V, MPEG, WEBM or H.263."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["file"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type = file"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Object containing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["url"]},". PDF only."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["custom"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type = custom"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Rich content object (rich cards, carousels, suggestions). See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#rich-messages-custom"},"children":["Rich messages"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Media URLs must be publicly accessible over HTTPS and up to 2,000 characters; longer URLs are rejected with error ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4045"]},". Media files can be up to 100 MB. Captions are not supported on RCS media messages; send a separate text message if you need one."]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Templates (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type: \"template\""]},") and audio messages are not supported on RCS."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example--image","__idx":8},"children":["Example — Image"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"channel\": \"rcs\",\n  \"to\": \"+447123456789\",\n  \"message_type\": \"image\",\n  \"image\": {\n    \"url\": \"https://example.com/images/order-12345.png\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example--video","__idx":9},"children":["Example — Video"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"channel\": \"rcs\",\n  \"to\": \"+447123456789\",\n  \"message_type\": \"video\",\n  \"video\": {\n    \"url\": \"https://example.com/videos/how-to-return.mp4\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example--file","__idx":10},"children":["Example — File"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"channel\": \"rcs\",\n  \"to\": \"+447123456789\",\n  \"message_type\": \"file\",\n  \"file\": {\n    \"url\": \"https://example.com/invoices/INV-12345.pdf\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"id":"rich-messages-custom","level":3,"__idx":11},"children":["Rich messages (custom) "]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type: \"custom\""]}," to send rich cards, carousels and suggested replies or actions."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["custom"]}," object must contain a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contentMessage"]},", following the Google RCS Business Messaging (RBM) ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://developers.google.com/business-communications/rcs-business-messaging/reference/rest/v1/phones.agentMessages#AgentContentMessage","target":"_blank","rel":"noopener noreferrer"},"children":["AgentContentMessage"]}," format. InstaMessage checks it against the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#rich-content-limits"},"children":["rich content limits"]},", then passes it through to the recipient unchanged."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"text-with-suggested-replies","__idx":12},"children":["Text with suggested replies"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A message can carry up to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["11 suggestions"]},". When the recipient taps a suggested reply, it arrives as an inbound message."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"channel\": \"rcs\",\n  \"to\": \"+447123456789\",\n  \"message_type\": \"custom\",\n  \"custom\": {\n    \"contentMessage\": {\n      \"text\": \"Your delivery is booked for tomorrow. Does that work?\",\n      \"suggestions\": [\n        { \"reply\": { \"text\": \"Yes, thanks\", \"postbackData\": \"CONFIRM\" } },\n        { \"reply\": { \"text\": \"Reschedule\", \"postbackData\": \"RESCHEDULE\" } },\n        {\n          \"action\": {\n            \"text\": \"Track order\",\n            \"postbackData\": \"TRACK\",\n            \"openUrlAction\": { \"url\": \"https://example.com/track/12345\" }\n          }\n        }\n      ]\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"rich-card","__idx":13},"children":["Rich card"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"channel\": \"rcs\",\n  \"to\": \"+447123456789\",\n  \"message_type\": \"custom\",\n  \"custom\": {\n    \"contentMessage\": {\n      \"richCard\": {\n        \"standaloneCard\": {\n          \"cardOrientation\": \"VERTICAL\",\n          \"cardContent\": {\n            \"title\": \"Your order is on its way\",\n            \"description\": \"Order 12345 will arrive today between 10:00 and 12:00.\",\n            \"media\": {\n              \"height\": \"MEDIUM\",\n              \"contentInfo\": {\n                \"fileUrl\": \"https://example.com/images/van.png\",\n                \"forceRefresh\": false\n              }\n            },\n            \"suggestions\": [\n              {\n                \"action\": {\n                  \"text\": \"Track order\",\n                  \"postbackData\": \"TRACK\",\n                  \"openUrlAction\": { \"url\": \"https://example.com/track/12345\" }\n                }\n              }\n            ]\n          }\n        }\n      }\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"carousel","__idx":14},"children":["Carousel"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"channel\": \"rcs\",\n  \"to\": \"+447123456789\",\n  \"message_type\": \"custom\",\n  \"custom\": {\n    \"contentMessage\": {\n      \"richCard\": {\n        \"carouselCard\": {\n          \"cardWidth\": \"MEDIUM\",\n          \"cardContents\": [\n            {\n              \"title\": \"Classic Hoodie\",\n              \"description\": \"£45.00\",\n              \"media\": {\n                \"height\": \"MEDIUM\",\n                \"contentInfo\": { \"fileUrl\": \"https://example.com/images/hoodie.png\" }\n              },\n              \"suggestions\": [\n                { \"reply\": { \"text\": \"Buy hoodie\", \"postbackData\": \"BUY_HOODIE\" } }\n              ]\n            },\n            {\n              \"title\": \"Everyday Tee\",\n              \"description\": \"£20.00\",\n              \"media\": {\n                \"height\": \"MEDIUM\",\n                \"contentInfo\": { \"fileUrl\": \"https://example.com/images/tee.png\" }\n              },\n              \"suggestions\": [\n                { \"reply\": { \"text\": \"Buy tee\", \"postbackData\": \"BUY_TEE\" } }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"id":"rich-content-limits","level":4,"__idx":15},"children":["Rich content limits "]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["InstaMessage checks ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["custom"]}," against the Google RBM and Vonage limits before accepting the message. A payload that breaks a limit is rejected with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]}," and error ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4044"]},", and the message names the rule, so nothing is sent or charged."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Where"},"children":["Where"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Limit"},"children":["Limit"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["custom"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Must contain a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contentMessage"]}," object. At most 250 KB (250,000 bytes) as JSON."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contentMessage"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Exactly one of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["text"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["richCard"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contentInfo"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["uploadedRbmFile"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fileName"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["text"]}," up to 3,000 characters. Up to 11 ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["suggestions"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["richCard"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Exactly one of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["standaloneCard"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["carouselCard"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["standaloneCard"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cardOrientation"]}," is required: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["HORIZONTAL"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VERTICAL"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["thumbnailImageAlignment"]},", if set: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["LEFT"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RIGHT"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cardContent"]}," is required. A ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["HORIZONTAL"]}," card with media also needs a title, description or suggestions."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["carouselCard"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2 to 10 cards in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cardContents"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cardWidth"]},", if set: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SMALL"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MEDIUM"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Card content"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["At least one of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["media"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["title"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["title"]}," up to 200 characters, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]}," up to 2,000. Up to 4 ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["suggestions"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["media"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["height"]},", if set: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SHORT"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MEDIUM"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TALL"]},". Exactly one of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contentInfo"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["uploadedRbmFile"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fileName"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contentInfo.fileUrl"]}," must be an http(s) URL of up to 2,000 characters."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Suggestion"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Exactly one of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["reply"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["action"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["text"]}," is required, up to 25 characters. For an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["action"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["postbackData"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fallbackUrl"]}," up to 2,048 characters."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Other fields are passed through as sent. A field set to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," counts as not set."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example--rich-content-error","__idx":16},"children":["Example — Rich content error"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"code\": 4044,\n  \"message\": \"Invalid RCS rich content: carouselCard.cardContents must have 2-10 cards\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Rich card media must be an image or video. PDFs can't be used in cards."]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These checks cover the payload's structure only. Media file types and sizes are checked when the message is sent, so an unsupported file still fails at delivery."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"5-optional-fields","__idx":17},"children":["5. Optional fields"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["opt_out_url"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"true\""]}," (if a marketing message). When set to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},", appends the account's configured opt-out URL to the end of the message. Applies to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["text"]}," messages only."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["injected_fields"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Personalisation values for placeholders such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{{first_name}}"]},". Applies to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["text"]}," messages only."]}]}]}]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["injected_fields"]}," are applied at send time and do not modify stored contact data."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If a contact exists, InstaMessage can also use stored contact fields and custom attributes."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If a field exists in both places, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["injected_fields"]}," takes precedence."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-precedence","__idx":18},"children":["Example precedence"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Contact first_name = \"Adam\""]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You send injected_fields.first_name = \"Eve\""]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["{{first_name}} renders as \"Eve\""]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"rcs-billing","__idx":19},"children":["RCS billing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["How an RCS message is charged depends on your agent's billing category and the content you send."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Per-message pricing"]}," (default)"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Basic message"]},": a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["text"]}," message of up to 160 characters"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Rich message"]},": a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["text"]}," message over 160 characters, or any ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["image"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["video"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["file"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["custom"]}," message"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Conversational agents"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If your agent is registered as ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["conversational"]},", a reply from the recipient opens a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["24-hour conversation window"]},":"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The first message you send inside the window is charged a single conversation fee"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Every further message you send in that window is free"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Messages sent outside a window use per-message pricing"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Contact your account manager for RCS pricing in your region."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"rcs-messaging-rules","__idx":20},"children":["RCS Messaging Rules"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["RCS messages are sent immediately"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Messages are sent from your approved RCS agent. You can't choose a different sender per message"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The recipient's device and carrier must support RCS"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Media URLs must be publicly reachable when the message is sent"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"delivery-status-webhooks","__idx":21},"children":["Delivery status webhooks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["InstaMessage reports delivery outcomes and inbound replies using account-level webhooks."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Webhooks are configured once per account and apply to all messages sent via the API."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Delivery status webhooks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a message status updates (such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["delivered"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["read"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]},"), InstaMessage sends a delivery status webhook to your configured webhook URL."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Replies and suggestion taps from the recipient are delivered as inbound message webhooks."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-delivery-status-webhook-payload","__idx":22},"children":["Example delivery status webhook payload"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"event_type\": \"message.status\",\n  \"message_id\": \"abc123XYZ789def\",\n  \"conversation_id\": \"conv456ABC123\",\n  \"channel\": \"rcs\",\n  \"to\": \"+447123456789\",\n  \"status\": \"delivered\",\n  \"timestamp\": \"2026-01-14T12:03:11Z\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"delivery-status-lookup-fallback","__idx":23},"children":["Delivery status lookup (fallback)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you miss a webhook delivery, you can retrieve the latest delivery status using the message ID returned when the message was created."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See: Delivery tracking → ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/getting-started/delivery-receipts-message-status"},"children":["Delivery Receipts & Message Status"]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This endpoint acts as a recovery mechanism if a webhook delivery is missed."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-message-status-response","__idx":24},"children":["Example message status response:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"message_id\": \"abc123XYZ789def\",\n  \"conversation_id\": \"conv456ABC123\",\n  \"channel\": \"rcs\",\n  \"to\": \"+447123456789\",\n  \"status\": \"delivered\",\n  \"created_at\": \"2026-01-14T12:02:10Z\",\n  \"delivered_at\": \"2026-01-14T12:03:11Z\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"6-send-your-first-rcs-message","__idx":25},"children":["6. Send your first RCS message"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Below is a basic example in multiple languages."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"cURL","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X POST \"https://api.instamessage.co.uk/v1/messages\" \\\n  -H \"Authorization: Bearer $IM_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"channel\": \"rcs\",\n    \"to\": \"+447123456789\",\n    \"message_type\": \"text\",\n    \"text\": \"Your delivery is on its way.\"\n  }'\n\n","lang":"bash"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Node.js","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"import fetch from \"node-fetch\";\n\nasync function sendRcs() {\n  const response = await fetch(\"https://api.instamessage.co.uk/v1/messages\", {\n    method: \"POST\",\n    headers: {\n      Authorization: `Bearer ${process.env.IM_API_KEY}`,\n      \"Content-Type\": \"application/json\",\n    },\n    body: JSON.stringify({\n      channel: \"rcs\",\n      to: \"+447123456789\",\n      message_type: \"text\",\n      text: \"Your delivery is on its way.\"\n    }),\n  });\n\n  console.log(await response.json());\n}\n\nsendRcs();\n","lang":"javascript"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"import os\nimport requests\n\nurl = \"https://api.instamessage.co.uk/v1/messages\"\n\npayload = {\n    \"channel\": \"rcs\",\n    \"to\": \"+447123456789\",\n    \"message_type\": \"text\",\n    \"text\": \"Your delivery is on its way.\"\n}\n\nheaders = {\n    \"Authorization\": f\"Bearer {os.environ['IM_API_KEY']}\",\n    \"Content-Type\": \"application/json\",\n}\n\nresponse = requests.post(url, json=payload, headers=headers)\nprint(response.status_code, response.json())\n\n","lang":"python"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"PHP","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"php","header":{"controls":{"copy":{}}},"source":"<?php\n\n$payload = [\n    \"channel\" => \"rcs\",\n    \"to\" => \"+447123456789\",\n    \"message_type\" => \"text\",\n    \"text\" => \"Your delivery is on its way.\"\n];\n\n$ch = curl_init(\"https://api.instamessage.co.uk/v1/messages\");\n\ncurl_setopt_array($ch, [\n    CURLOPT_POST           => true,\n    CURLOPT_HTTPHEADER     => [\n        \"Authorization: Bearer \" . getenv(\"IM_API_KEY\"),\n        \"Content-Type: application/json\",\n    ],\n    CURLOPT_POSTFIELDS     => json_encode($payload),\n    CURLOPT_RETURNTRANSFER => true,\n]);\n\n$response = curl_exec($ch);\n$status   = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n\ncurl_close($ch);\n\necho $status . PHP_EOL;\necho $response;\n\n","lang":"php"},"children":[]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"7-personalise-your-rcs-message","__idx":26},"children":["7. Personalise your RCS message"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use placeholders inside your text and supply values via ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["injected_fields"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example--personalised-rcs-message","__idx":27},"children":["Example — Personalised RCS message"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"channel\": \"rcs\",\n  \"to\": \"+447123456789\",\n  \"message_type\": \"text\",\n  \"text\": \"Hi {{first_name}}, your order {{order}} is out for delivery today.\",\n  \"injected_fields\": {\n    \"first_name\": \"Alex\",\n    \"order\": \"12345\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Rendered output:"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Hi Alex, your order 12345 is out for delivery today."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"8-example-api-response","__idx":28},"children":["8. Example API response"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"message_id\": \"abc123XYZ789def\",\n  \"conversation_id\": \"conv456ABC123\"\n}\n\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Delivery status and timestamps are provided asynchronously via webhooks or can be retrieved using the message ID."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"9-validation-errors","__idx":29},"children":["9. Validation errors"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Requests that fail validation return HTTP ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]}," with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["code"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]},". No message is created and nothing is charged."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Code"},"children":["Code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Message"},"children":["Message"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"When"},"children":["When"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4005"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Message recipient not specified"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["to"]}," is missing"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4006"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid phone number"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["to"]}," isn't a valid phone number"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4008"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Message type not supported"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type"]}," isn't ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["text"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["image"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["video"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["file"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["custom"]}," (for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["audio"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["template"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4009"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Message content not specified"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The field for the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type"]}," is missing (for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type: \"image\""]}," without ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["image"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4043"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Message text too long"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["text"]}," is over 3,000 characters"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4044"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid RCS rich content: ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["rule"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["custom"]}," breaks one of the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#rich-content-limits"},"children":["rich content limits"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4045"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Media URL too long"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["image.url"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["video.url"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["file.url"]}," is over 2,000 characters"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":30},"children":["Next steps"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Now that you can send RCS, you may want to:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Delivery tracking → ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/getting-started/delivery-receipts-message-status"},"children":["Delivery Receipts & Message Status"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Customer replies → ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/messaging/inbound-messages-and-replies"},"children":["Inbound Messages & Replies"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Webhooks → ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/getting-started/webhook-quickstart"},"children":["Webhook Quick-Start"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Rich content reference → ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://developers.google.com/business-communications/rcs-business-messaging/guides/build/messages/send","target":"_blank","rel":"noopener noreferrer"},"children":["Google RBM: Send messages"]}]}]}]},"headings":[{"value":"RCS","id":"rcs","depth":2},{"value":"Before you begin","id":"before-you-begin","depth":2},{"value":"1. An InstaMessage account","id":"1-an-instamessage-account","depth":2},{"value":"2. A verified RCS agent","id":"2-a-verified-rcs-agent","depth":2},{"value":"3. Your API key","id":"3-your-api-key","depth":2},{"value":"Authentication method","id":"authentication-method","depth":3},{"value":"RCS Endpoint","id":"rcs-endpoint","depth":3},{"value":"4. Required fields for sending RCS","id":"4-required-fields-for-sending-rcs","depth":2},{"value":"Example — Image","id":"example--image","depth":3},{"value":"Example — Video","id":"example--video","depth":3},{"value":"Example — File","id":"example--file","depth":3},{"value":"Rich messages (custom)","id":"rich-messages-custom","depth":3},{"value":"Text with suggested replies","id":"text-with-suggested-replies","depth":4},{"value":"Rich card","id":"rich-card","depth":4},{"value":"Carousel","id":"carousel","depth":4},{"value":"Rich content limits","id":"rich-content-limits","depth":4},{"value":"Example — Rich content error","id":"example--rich-content-error","depth":3},{"value":"5. Optional fields","id":"5-optional-fields","depth":2},{"value":"Example precedence","id":"example-precedence","depth":3},{"value":"RCS billing","id":"rcs-billing","depth":3},{"value":"RCS Messaging Rules","id":"rcs-messaging-rules","depth":3},{"value":"Delivery status webhooks","id":"delivery-status-webhooks","depth":3},{"value":"Example delivery status webhook payload","id":"example-delivery-status-webhook-payload","depth":3},{"value":"Delivery status lookup (fallback)","id":"delivery-status-lookup-fallback","depth":3},{"value":"Example message status response:","id":"example-message-status-response","depth":3},{"value":"6. Send your first RCS message","id":"6-send-your-first-rcs-message","depth":2},{"value":"7. Personalise your RCS message","id":"7-personalise-your-rcs-message","depth":2},{"value":"Example — Personalised RCS message","id":"example--personalised-rcs-message","depth":3},{"value":"8. Example API response","id":"8-example-api-response","depth":2},{"value":"9. Validation errors","id":"9-validation-errors","depth":2},{"value":"Next steps","id":"next-steps","depth":2}],"frontmatter":{"seo":{"title":"RCS"}},"lastModified":"2026-09-24T08:13:04.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/getting-started/rcs","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}