---
title: "Send Bulk Messages - Campaigns"
method: POST
path: "/sms/campaign"
---

# Send Bulk Messages - Campaigns

`POST /sms/campaign`

Routee allows to send messages to multiple recipients/contacts/groups. This is a paid service. For pricing check [here](https://www.routee.net/pricing/text-messaging-sms/)

## Headers

- `Content-Type` string, required
- `Authorization` string, required

## Request body

- object
  - `contacts` string[] — The contact ids that the message will be sent to. Contacts have to be uploaded to the system. One of "groups", "to", "contacts" parameters is required.
  - `groups` string[] — The groups of contacts in the account selected as recipients. Groups have to be created at the system. One of "groups", "to", "contacts" parameters is required.
  - `to` string[] — The phone numbers (array) the message is about to be sent to. Format with a '+' and country code e.g., +306948530920 (E.164 format). Maximum array of number allowed 30k. One of "groups", "to", "contacts" parameters is required.
  - `from` string, required — The sender of the message. This can be a telephone number (numeric string with maximum length 16 characters) or an alphanumeric string (maximum length 11 characters). When you want to use a [number](/docs/numbers), you have to enter it without the '+' before the country code (eg 447123123456).
  - `body` string, required — The message you want to send. Use "\n" to create a new line in your message. Use [~{labelName}] in order to send personalized messages, by using the labels of your contacts.
  - `scheduledDate` string, date — Defines the scheduled date and time in UTC. (eg YYYY-MM-DDThh:mm:ssTZD where TZD is the time zone designator (Z or +hh:mm or -hh:mm))
  - `campaignName` string — The name of the campaign. If you want to be able to track the whole campaign from Routee web platform use a name. If no name is provided you won’t be able to see the campaign from Routee web platform but you can track all the individual messages. Must be between 2 and 30 characters and contain only latin letters, numbers, spaces and -
  - `flash` boolean — Indicates if the SMS is a flash SMS. A flash SMS is a type of SMS that appears directly on the main screen without user interaction and is not automatically stored in the inbox. It can be useful in emergencies, such as a fire alarm or cases of confidentiality, as in delivering one-time passwords. Default value false
  - `respectQuietHours` boolean — Indicates if the SMS should respect the quiet hours. Quiet Hours are set by default to 23.00 - 08.00 and 14.00-17.00 destination local time. Please note that not all countries are supported with this feature due to multiple time zones within the country. Default value false
  - `campaignCallback` object — Defines the notification callback information for the progress of the SMS campaign. Check [here](/docs/callbacks) for the payload information
    - `url` string — The URL that Routee will POST to, each time your campaign status changes to one of the following: Scheduled, Queued, Sent, Running, Finished, or Failed.
    - `strategy` string — When the URL will be called. Two possible values: on every status change (OnChange) or when a final status arrives (OnCompletion).
  - `callback` object — Defines the notification callback information for an individual message progress of the SMS campaign. Check [here](/docs/callbacks) for the payload information
    - `url` string — A URL that Routee will POST to, each time your message status changes to one of the following: Queued, Failed, Sent, Unsent, Delivered, or Undelivered. Routee will POST the trackingId along with the other request parameters as well as statuses and ErrorDescriptions.
    - `strategy` string — When the URL will be called. Two possible values: on every status change (OnChange) or when a final status arrives (OnCompletion).
  - `reminder` object — Defines the recipients that will receive a test SMS before the actual SMS campaign is sent.
    - `minutesBefore` integer — The minutes before the scheduled date (that the SMS will be sent) for the test SMS to be sent.
    - `to` string[] — Defines the recipients of the test SMS
  - `fallbackValues` string — Defines the default values when the SMS has labels, in case a contact does not contain any of these labels.
  - `ttl` integer — The duration in minutes the delivery of an SMS will be attempted. Must be between 1-4320. By default Routee will attempt delivery for 72 hours. If the SMS is not delivered within the validity period, then the SMS status will be "Undelivered", with "detailedStatus": "Expired"
  - `allowInvalid` boolean — Allow invalid recipients. By setting 'allowInvalid' to true, the API will not return the invalid numbers and will sent the messages to the valid ones only
  - `urlShortener` object — [OPTIONAL] If present, each link that exist in message body will be replaced by a Shortened URL. NOTE: Links are recognized by the prefix "http://" or "https://" and are separated by the next word or character with space. Keep in mind that adding any character like '.' ',' etc, other than space at the end of the link, will be recognized as part of the url and it will result to a shortened url that redirects to a wrong destination.
    - `strategy` string — [Optional]. Possible values: SINGLE Indicates whether to create a "SINGLE" or "MULTIPLE".short url same for all recipients or a MULTIPLE short urls, unique per recipient. Default value "SINGLE"
    - `urlValidity` string — [Optional]. Possible values: 3600 up to 2592000. Indicates tne time in seconds that the shorten url will be valid (min: 3600 [one hour] - max: 2592000 [30 days]). Default value 2592000
  - `restrictions` object — [OPTIONAL] Provide the registered Content Template ID and Principal Entity ID to ensure the message is not rejected by TRAI regulations.
    - `india` object — [OPTIONAL] If present, template and entity ID must be a number between 12 and 19 digits
      - `templateId` integer — [OPTIONAL], If present, template ID must be a number between 12 and 19 digits
      - `entityId` integer — [OPTIONAL], If present, entity ID must be a number between 12 and 19 digits
  - `transcode` boolean — If “transcode” is set to true/false, then the message body will be/not be transcoded. If the “transcode” parameter is not set, then the application level setting will be used. In case the message can be sent as UTF in one part, it will not be transcoded.

## Response `200`

200

- object
  - `trackingId` string
  - `type` string
  - `state` string
  - `createdAt` string
  - `respectQuietHours` boolean
  - `from` string
  - `to` string[]
  - `body` string
  - `smsAnalysis` object
    - `numberOfRecipients` integer
    - `recipientsPerCountry` object
      - `GR` integer
    - `recipientCountries` object
      - `+30697xxxxxxx` string
      - `+30693xxxxxxx` string
      - `+30694xxxxxxx` string
    - `contacts` object
    - `recipientsPerGroup` object
    - `totalInGroups` integer
    - `bodyAnalysis` object
      - `parts` integer
      - `unicode` boolean
      - `characters` integer
  - `flash` boolean
  - `statuses` object
    - `Queued` integer
    - `Sent` integer
    - `Failed` integer
    - `Delivered` integer
    - `Undelivered` integer
    - `Unsent` integer
  - `cost` integer
  - `totalMessages` integer

## Other responses

- `400` — 400

---

[API](https://skmtc.net/routee/apis/auth.md) · [All operations](https://skmtc.net/routee/apis/auth/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/routee/auth/revisions/5cef04e8f7d8/schema)
