---
title: "Send RCS messages"
method: POST
path: "/rcs/2/messages"
tags: ["channels", "rcs", "rcs-outbound-messages"]
---

# Send RCS messages

`POST /rcs/2/messages`

## Request

- Base URL: `https://api.infobip.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.infobip.com/rcs/2/messages`
- Auth: one of:
  - OAuth 2
    - Client credentials
    - Token URL: `https://api.infobip.com/auth/1/oauth2/token`
  - API key in header `Authorization`
  - API key in header `Authorization`
  - HTTP basic

Send RCS messages or RCS template messages to multiple recipients. Maximum request size is 10MB. Including some fields will affect [billing type](https://www.infobip.com/docs/rcs/billing-types).

## Request body

- B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62RcsMessageRequest
  - `messages` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62RcsMessage[], required: An array of message objects of a single message or multiple messages sent under one bulk ID.
    - `sender` string: Identifier of an RCS sender that will be used to send message.
    - `destinations` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62ToDestination[], required: An array of destination objects for where messages are being sent. A valid destination is required.
      - `to` string, required: The destination address of the message.
      - `messageId` string: The ID that uniquely identifies the message sent.
    - `content` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62RcsOutboundMessageContent, required: Message content.
      - `type` 'TEXT' | 'FILE' | 'CARD' | 'CAROUSEL' | 'PROVIDER_TEMPLATE', required
    - `options` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62RcsFailoverOptions: Message options.
      - `platform` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62Platform: Platform options. For more details, see [documentation](https://www.infobip.com/docs/cpaas-x/application-and-entity-management).
        - `entityId` string: Used when specifying an entity in outbound send requests. It is also returned in notification events. For detailed usage, refer to the [documentation](https://www.infobip.com/docs/cpaas-x/application-and-entity-management).
        - `applicationId` string: Used when specifying an application in outbound send requests. It is also returned in notification events. For detailed usage, refer to the [documentation](https://www.infobip.com/docs/cpaas-x/application-and-entity-management).
      - `validityPeriod` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62RcsValidityPeriod: Message validity period. Once expired, the message won't be sent. Validity period longer than 48h is not supported. If exceeded, it will be automatically set to 48h. Validity period shorter than 10 seconds is not supported. If set lower, it will be automatically set to 10 seconds.
        - `amount` integer, required: Message validity period's value. If `timeUnit` is not set, it will default to `MINUTES`.
        - `timeUnit` 'SECONDS' | 'MINUTES' | 'HOURS': Message validity period time unit.
      - `deliveryTimeWindow` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62DeliveryTimeWindow: Sets specific message delivery window outside of which messages won't be delivered. Often, used when there are restrictions on when messages can be sent. The exact time of the day to start sending messages can be defined using the `from` property. The exact time of the day to end sending messages can be defined using the `to` property. Properties `from` and `to` should be both provided with the minimum 1 hour difference or omitted.
        - `days` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62DeliveryDay[], required: Days of the week which are included in the delivery time window. At least one day must be provided. Separate multiple days with a comma.
        - `from` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62DeliveryTime: The exact time of the day. The time is expressed in the UTC time zone.
          - `hour` integer, required: Hour when the time window opens when used in the `from` property or closes when used in the `to` property.
          - `minute` integer, required: Minute when the time window opens when used in the `from` property or closes when used in the `to` property.
        - `to` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62DeliveryTime: The exact time of the day. The time is expressed in the UTC time zone.
          - `hour` integer, required: Hour when the time window opens when used in the `from` property or closes when used in the `to` property.
          - `minute` integer, required: Minute when the time window opens when used in the `from` property or closes when used in the `to` property.
      - `campaignReferenceId` string: ID that allows you to track, analyze, and show an aggregated overview and the performance of individual campaigns per sending channel.
      - `smsFailover` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62DefaultSmsFailover: Failover SMS message to be sent if the original message could not be delivered. Please note that either SMS failover or MMS failover can be set, but not both.
        - `sender` string: The sender ID. It can be alphanumeric or numeric (e.g., `CompanyName`). Make sure you don't exceed [character limit](https://www.infobip.com/docs/sms/get-started#sender-names).
        - `text` string, required: Content of the message being sent.
        - `validityPeriod` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62ValidityPeriod: Message validity period. Once expired, the message won't be sent. Validity period longer than 48h is not supported. If exceeded, it will be automatically set to 48h.
          - `amount` integer, required: Message validity period's value. If `timeUnit` is not set, it will default to `MINUTES`.
          - `timeUnit` 'SECONDS' | 'MINUTES' | 'HOURS': Message validity period time unit.
        - `regional` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62RegionalOptions: Region-specific parameters, often imposed by local laws. Use this, if country or region that you are sending an SMS to requires additional information.
          - `indiaDlt` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62IndiaDltOptions: Distributed Ledger Technology (DLT) specific parameters required for sending SMS to phone numbers registered in India.
            - `contentTemplateId` string: Registered DLT content template ID which matches message you are sending.
            - `principalEntityId` string, required: Your assigned DLT principal entity ID.
            - `telemarketerId` string: Your assigned Telemarketer ID. (required for Aggregators)
          - `turkeyIys` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62TurkeyIysOptions: IYS regulations specific parameters required for sending promotional SMS to phone numbers registered in Turkey.
            - `brandCode` integer: Brand code is an ID of the company based on a company VAT number. If not provided in request, default value is used from your Infobip account.
            - `recipientType` 'BIREYSEL' | 'TACIR', required: Recipient Type must be `TACIR` or `BIREYSEL`.
          - `southKorea` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62SouthKoreaOptions: Use case dependent parameters for sending SMS to phone numbers registered in South Korea.
            - `title` string: Title of the message.
            - `resellerCode` integer: Reseller identification code: 9-digit registration number in the business registration certificate for South Korea. Resellers should submit this when sending.
      - `mmsFailover` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62RcsMmsFailover: Failover MMS message to be sent if the original message could not be delivered. Please note that either SMS failover or MMS failover can be set, but not both.
        - `sender` string: The sender ID. It can be alphanumeric or numeric (e.g., `CompanyName`). Make sure you don't exceed [character limit](https://www.infobip.com/docs/sms/get-started#sender-names).
        - `validityPeriod` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62ValidityPeriod: Message validity period. Once expired, the message won't be sent. Validity period longer than 48h is not supported. If exceeded, it will be automatically set to 48h.
          - `amount` integer, required: Message validity period's value. If `timeUnit` is not set, it will default to `MINUTES`.
          - `timeUnit` 'SECONDS' | 'MINUTES' | 'HOURS': Message validity period time unit.
        - `content` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62MmsOutboundContent, required: Content of the failover message being sent.
          - `title` string: Message title.
          - `messageSegments` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62MmsOutboundSegment[], required: Content of the message being sent.
            - `type` 'TEXT' | 'LINK' | 'SMIL' | 'UPLOADED_REFERENCE', required
    - `webhooks` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62AdvancedWebhooksWithSeen: Provides options for configuring message webhooks.
      - `delivery` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62AdvancedMessageDeliveryReporting: Provides options for configuring the delivery report behavior.
        - `url` string: The URL on your call back server where a delivery report will be sent. If your URL becomes unavailable then the [retry cycle](https://www.infobip.com/docs/sms/sms-over-api#push-retry-cycle-notify-url) uses the following formula: `1min + (1min * retryNumber * retryNumber)`.
        - `intermediateReport` boolean: The real-time intermediate delivery report containing GSM error codes, messages status, pricing, network and country codes, etc., which will be sent on your callback server. Defaults to `false`.
        - `notify` boolean: Notify enables you to specify your preferences for receiving DLRs. If set to false, no DLR will be sent. Note: When no webhook is specified in the request and notify is set to 'true' or not defined, your Subscription settings will apply.
        - `receiveTriggeredFailoverReports` boolean: Allows you to receive delivery reports for all triggered failover steps, not just the final one (either the first successful or the last failed step). The default setting is `false`.
      - `contentType` string: Preferred delivery report content type, `application/json` or `application/xml`.
      - `callbackData` string: Additional data that can be used for identifying, managing, or monitoring a message. Data included here will also be automatically included in the message Delivery Report. The maximum value is 4000 characters.
      - `seen` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62SeenStatusReporting: Provides options for configuring the seen report behavior.
        - `url` string: The URL on your call back server where a seen report will be sent.
  - `options` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62RcsMessageRequestOptions
    - `schedule` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62RequestSchedulingSettings: Options for scheduling a message.
      - `bulkId` string: Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request. If not provided, it will be auto-generated and returned in the API response.
      - `sendAt` string, date-time: Date and time when the message is to be sent. Used for scheduled messages. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`, and can only be scheduled for no later than 180 days in advance.
      - `sendingSpeedLimit` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62SendingSpeedLimit: Limits the send speed when sending messages in bulk to deliver messages over a longer period of time. You may wish to use this to allow your systems or agents to handle large amounts of incoming traffic, e.g., if you are expecting recipients to follow through with a call-to-action option from a message you sent. Not setting a send speed limit can overwhelm your resources with incoming traffic.
        - `amount` integer, required: The number of messages to be sent per timeUnit. By default, the system sends messages as fast as the infrastructure allows. Use this parameter to adapt sending capacity to your needs. The system is only able to work against its maximum capacity for ambitious message batches.
        - `timeUnit` 'MINUTE' | 'HOUR' | 'DAY': The time unit to define when setting a messaging speed limit. Defaults to `MINUTE`.
    - `tracking` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62UrlOptions: Sets up [URL shortening](https://www.infobip.com/docs/url-shortening) and tracking feature.
      - `shortenUrl` boolean: Enable shortening of the URLs within a message. Set this to `true`, if you want to set up other URL options.
      - `trackClicks` boolean: Enable tracking of short URL clicks within a message: which URL was clicked, how many times, and by whom.
      - `trackingUrl` string: The URL of your callback server on to which the Click report will be sent.
      - `removeProtocol` boolean: Remove a protocol, such as `https://`, from links to shorten a message. Note that some mobiles may not recognize such links as a URL.
      - `customDomain` string: Select a predefined custom domain to use when generating a short URL.
    - `messageOrdering` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62RcsMessageOrderingOptions
      - `respectOrder` boolean: If set to `true`, messages will be sent in the same order as they are provided in the request. Following rules must be respected in that case: * The `messages` array can contain either 2 messages, where only the first message has failover defined, or between 2 and 10 messages, none of which has failover defined. * Following properties must be the same for all messages in the request: `sender`, `destinations`, `options.platform`, `options.deliveryTimeWindow`, `options.campaignReferenceId`, `webhooks.delivery`, `webhooks.contentType`, `webhooks.callbackData`, `webhooks.seen`. For best experience, if message ordering is used, it's recommended to have list of suggestions defined for last message only or have it the same for all messages in the request.
      - `stopOnFailure` boolean: It can be used in combination with `respectOrder` to stop sending messages if any message fails. It will be respected only if none of the messages from the request has failover defined. If failover is used, the system will, by default, send only the failover message and will not send the second message from the request.

## Response `200`

OK

- B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62ResponseEnvelopeMessageResponseMessageResponseDetails
  - `bulkId` string: Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request. If not provided, it will be auto-generated and returned in the API response. Typically used for fetching delivery reports and message logs.
  - `messages` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62MessageResponseMessageResponseDetails[], required: An array of message objects of a single message or multiple messages sent under one bulk ID.
    - `messageId` string: Unique message ID. If not provided, it will be auto-generated and returned in the API response.
    - `status` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62MessageStatus: Indicates the [status](https://www.infobip.com/docs/essentials/response-status-and-error-codes#api-status-codes) of the message and how to recover from an error should there be any.
      - `groupId` integer: Status group ID.
      - `groupName` 'ACCEPTED' | 'PENDING' | 'UNDELIVERABLE' | 'DELIVERED' | 'EXPIRED' | 'REJECTED': Status group name that describes which category the status code belongs to, i.e., [PENDING](https://www.infobip.com/docs/essentials/response-status-and-error-codes#pending-general-status-codes), [UNDELIVERABLE](https://www.infobip.com/docs/essentials/response-status-and-error-codes#undeliverable-general-status-codes), [DELIVERED](https://www.infobip.com/docs/essentials/response-status-and-error-codes#delivered-general-status-codes), [EXPIRED](https://www.infobip.com/docs/essentials/response-status-and-error-codes#expired-general-status-codes), [REJECTED](https://www.infobip.com/docs/essentials/response-status-and-error-codes#rejected-general-status-codes).
      - `id` integer: Status code ID.
      - `name` string: [Status code](https://www.infobip.com/docs/essentials/response-status-and-error-codes#api-status-codes) name.
      - `description` string: Human-readable description of the status.
      - `action` string: Action to take to recover from the error.
    - `destination` string: The destination address of the message, i.e., its recipient.
    - `details` B839d8c276f6f1ef62ce2dce758ba402953b31f455d6d08549a7147d79f50d62MessageResponseDetails: Other details of the message.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `500`: Internal Server Error

---

[API](https://skmtc.dev/infobip/apis/infobip-openapi-specification.md) - [All operations](https://skmtc.dev/infobip/apis/infobip-openapi-specification/llms.txt) - [OpenAPI document](https://skmtc.dev/infobip/apis/infobip-openapi-specification/revisions/9dcbbaf902de?raw)
