---
title: "Template Message API"
method: POST
path: "/soip/rcs/v2/message"
tags: ["Message Sending APIs"]
---

# Template Message API

`POST /soip/rcs/v2/message`

## Request

- Base URL: `https://soipapi.netcorecloud.com`
- URL: `https://soipapi.netcorecloud.com/soip/rcs/v2/message`
- Auth: HTTP bearer

Send a RCS Text Message to any RCS Enabled Mobile Number.
This API allows you to dispatch messages using a predefined template—simply specify the template ID and content parameters.

## Headers

- `api_key` string, required
- `Content-Type` string, required
- `nc_bot_id` string

## Request body

- object
  - `messages` object[]
    - `To` string: Recipient phone number in E.164 format (uppercase, for freeform messages)
    - `to` string: Recipient phone number in E.164 format (lowercase, for template messages)
    - `content` object
      - `type` 'template' | 'text' | 'CAROUSEL' | 'CARD' | 'FILE' | 'TEXT': Type of message content
      - `templateCode` string: Template code for template type messages
      - `attributes` object: Template attributes for template type messages
        - `FIRSTNAME` string
      - `text` string: Text content for TEXT type messages
      - `file` object: File object for FILE type messages
        - `url` string, uri: URL of the file
      - `thumbnail` object: Thumbnail for FILE type messages
        - `url` string, uri: URL of the thumbnail image
      - `Suggestions` object[]: Array of suggestion chips (capital S for TEXT and FILE types)
        - `text` string: Display text of the suggestion
        - `postbackData` string: Data to be sent back when suggestion is clicked
        - `postbackdata` string: Data to be sent back when suggestion is clicked (lowercase variant)
        - `type` 'REPLY' | 'DIAL_PHONE' | 'SHOW_LOCATION' | 'REQUEST_LOCATION' | 'OPEN_URL': Type of suggestion action
        - `phoneNumber` string: Phone number for DIAL_PHONE type (required for DIAL_PHONE)
        - `latitude` number, float: Latitude for SHOW_LOCATION type (required for SHOW_LOCATION)
        - `longitude` number, float: Longitude for SHOW_LOCATION type (required for SHOW_LOCATION)
        - `label` string: Label for SHOW_LOCATION type
        - `url` string, uri: URL for OPEN_URL type (required for OPEN_URL)
      - `orientation` 'vertical' | 'horizontal': Orientation for CARD type messages
      - `alignment` 'left' | 'right' | 'center': Alignment for CARD type messages
      - `content` object: Content object for CARD type messages
        - `title` string: Title of the card
        - `description` string: Description of the card
        - `media` object
          - `file` object
            - `url` string, uri: URL of the media file
          - `thumbnail` object
            - `url` string, uri: URL of the thumbnail image
          - `height` 'SHORT' | 'MEDIUM' | 'TALL': Height of the media
        - `suggestions` object[]: Array of suggestion chips for CARD type
          - `text` string: Display text of the suggestion
          - `postbackData` string: Data to be sent back when suggestion is clicked
          - `postbackdata` string: Data to be sent back when suggestion is clicked (lowercase variant)
          - `type` 'REPLY' | 'DIAL_PHONE' | 'SHOW_LOCATION' | 'REQUEST_LOCATION' | 'OPEN_URL': Type of suggestion action
          - `phoneNumber` string: Phone number for DIAL_PHONE type (required for DIAL_PHONE)
          - `latitude` number, float: Latitude for SHOW_LOCATION type (required for SHOW_LOCATION)
          - `longitude` number, float: Longitude for SHOW_LOCATION type (required for SHOW_LOCATION)
          - `label` string: Label for SHOW_LOCATION type
          - `url` string, uri: URL for OPEN_URL type (required for OPEN_URL)
      - `cardWidth` 'SMALL' | 'MEDIUM' | 'LARGE': Width of the card (for CAROUSEL type)
      - `contents` object[]: Array of card contents (for CAROUSEL type)
        - `title` string: Title of the card
        - `description` string: Description of the card
        - `media` object
          - `file` object
            - `url` string, uri: URL of the media file
          - `thumbnail` object
            - `url` string, uri: URL of the thumbnail image
          - `height` 'SHORT' | 'MEDIUM' | 'TALL': Height of the media
        - `suggestions` object[]: Array of suggestion chips
          - `text` string: Display text of the suggestion
          - `postbackData` string: Data to be sent back when suggestion is clicked
          - `type` 'REPLY' | 'DIAL_PHONE' | 'SHOW_LOCATION' | 'REQUEST_LOCATION' | 'OPEN_URL': Type of suggestion action
          - `phoneNumber` string: Phone number for DIAL_PHONE type (required for DIAL_PHONE)
          - `latitude` number, float: Latitude for SHOW_LOCATION type (required for SHOW_LOCATION)
          - `longitude` number, float: Longitude for SHOW_LOCATION type (required for SHOW_LOCATION)
          - `label` string: Label for SHOW_LOCATION type
          - `url` string, uri: URL for OPEN_URL type (required for OPEN_URL)
    - `callbackData` string: Callback data to be returned in webhook
    - `ttl` string: Define the timeline before the campaign expires. The duration must be at least 1800 seconds. If both `ttl` and `expireTime` parameters are provided, `expireTime` takes precedence. This field is optional.
    - `expireTime` string: Specifies the absolute timestamp after which the message expires. The value must be in UTC. This field is optional.
    - `tags` string[]: Tags for message categorization
  - `fallbackchain` object[]
    - `channel` 'RCS' | 'SMS': Fallback channel type
    - `from` string: Sender name/ID for fallback channel
    - `text` string: Fallback text message

## Response `200`

OK

- object
  - `messageId` string
  - `requestError` object
    - `serviceException` object
      - `messageId` string
      - `text` string
      - `validationErrors` unknown

## Other responses

- `400`: content type not valid header must contain "Content-Type" as "application/json" { "requestError": { "serviceException": { "messageId": "", "text": "ContentType not valid", "validationErrors": null } } }
- `401`: Unauthenticated: apikey not found/ unable to get feedid/clientid check if api_key is correct, if yes, contact SRE to for onboarding. { "requestError": { "serviceException": { "messageId": "8f1500e4319ee7ab4b0ff04103cce250", "text": "Unauthenticated: apikey not found/ unable to get feedid/clientid", "validationErrors": [ "apikey not valid" ] } } }

---

[API](https://skmtc.dev/netcorecloud/apis/rcs-api.md) - [All operations](https://skmtc.dev/netcorecloud/apis/rcs-api/llms.txt) - [OpenAPI document](https://skmtc.dev/netcorecloud/apis/rcs-api/revisions/479db24ef963?raw)
