---
title: "Send Push notifications"
method: POST
path: "/push/3/messages"
tags: ["channels", "mobile-app-messaging", "send-push"]
---

# Send Push notifications

`POST /push/3/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/push/3/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

This method allows you to send Push notifications to a recipient or multiple recipients in one request.

## Request body

- Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742PushUnificationRequest
  - `messages` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742PushUnificationMessage[], required: An array of message objects of a single message or multiple messages sent under one bulk ID.
    - `sender` string, required: Use Application Code or Application ID of application profile, [application profile](https://www.infobip.com/docs/mobile-push/get-started/mobile-application-profile#copy-application-code-create-and-enable-a-mobile-application-profile), created in Infobip web interface.
    - `destinations` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742PushDestination[], required: An array of destination objects for where messages are being sent. A valid destination is required. When using a `MULTIPLE` type, at least one property is required.
      - `type` 'EXTERNAL_USER_ID' | 'EMAIL' | 'PHONE_NUMBER' | 'REGISTRATION' | 'MULTIPLE', required
    - `content` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742PushOutboundContent, required: Message content.
      - `type` 'TEXT' | 'IMAGE', required
    - `options` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742PushUnificationMessageOptions: Message options.
      - `platform` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742Platform: 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` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742ValidityPeriod: 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': Time unit for validity period. Defaults to hours.
      - `deliveryTimeWindow` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742DeliveryTimeWindow: 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` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742DeliveryDay[], 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` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742DeliveryTime: 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` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742DeliveryTime: 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.
      - `soundEnabled` boolean: Sound when a notification arrives on a device.
      - `soundName` string: Name of the custom sound played when a notification arrives on a device. The audio file should be located in the app with max 30 seconds length. File extension is required for [iOS](https://github.com/infobip/mobile-messaging-sdk-ios/wiki/How-to-use-custom-notification-sound%3F) and optional for [Android](https://github.com/infobip/mobile-messaging-sdk-android/wiki/How-to-use-custom-notification-sound%3F). (Example: notification_sound.wav). Check Android and iOS usage details. To play a custom sound, `soundEnabled` must be set to `true`.
      - `vibrationEnabled` boolean: Notification vibration (Android only).
      - `contentAvailable` boolean: System flag indicating whether or not mobile app should wake up when message received (iOS only).
      - `isSilent` boolean: Set to true to send silent push message. Such messages aren’t displayed on device lock screen and in the notification center. Silent messages can be used to deliver custom data to your mobile application or to trigger a mirrored push notification.
      - `badge` integer: Badge counter (iOS only).
      - `category` string: Category id for actionable notification. Supported on [Android](https://github.com/infobip/mobile-messaging-sdk-android/wiki/Interactive-notifications) since MM SDK version 1.6.16. Supported on [iOS](https://github.com/infobip/mobile-messaging-sdk-ios/wiki/Interactive-Notifications) since MM SDK version 2.6.9. Predefined category ids: mm_accept_decline - Accept & Decline button actions.
      - `showMirroredPush` boolean: Show mirrored push notification in application.
      - `mirroredPushStyle` 'MODAL' | 'BANNER': Set to `MODAL` to show mirrored push notification in app as a dialog for actionable message or `BANNER` to show a standard banner view. `MODAL` is supported on iOS from [3.6.0](https://github.com/infobip/mobile-messaging-sdk-ios/releases/tag/3.6.0), on Android from [1.13.0](https://github.com/infobip/mobile-messaging-sdk-android/releases/tag/1.13.0) and on Cordova from [0.7.0](https://github.com/infobip/mobile-messaging-cordova-plugin/releases/tag/0.7.0). `BANNER` is supported from iOS [5.0.0](https://github.com/infobip/mobile-messaging-sdk-ios/releases/tag/5.0.0), Android [2.0.0](https://github.com/infobip/mobile-messaging-sdk-android/releases/tag/2.0.0) and Cordova [1.0.0](https://github.com/infobip/mobile-messaging-cordova-plugin/releases/tag/1.0.0)
      - `mirroredPushExpirationPeriod` integer: Sets validity period for mirrored push notification. Users will only see mirrored push notification if they received it to their device within validity period, which starts from sending time.
      - `mirroredPushExpirationTimeUnit` 'MINUTES' | 'HOURS': Time unit mirrored push notification expiration.
      - `mirroredPushDismissTitle` string: Specifies custom title for `Dismiss` button for mirrored push notification.
      - `mirroredPushOpenTitle` string: Specifies custom title for `Open` button for mirrored push notification.
      - `onTapButtonAction` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742PrimaryButtonAction: Defines which action to perform on notification tap or on in-app notification primary button tap. More information for [Android](https://github.com/infobip/mobile-messaging-sdk-android/wiki/How-to-define-specific-action-on-notification-or-in-app-primary-button-tap(open-url,-deeplink)%3F), [iOS](https://github.com/infobip/mobile-messaging-sdk-ios/wiki/How-to-define-specific-action-on-notification-or-in-app-primary-button-tap(open-url,-deeplink)%3F), [Cordova](https://github.com/infobip/mobile-messaging-cordova-plugin/wiki/How-to-define-specific-action-on-notification-or-in-app-primary-button-tap(open-url,-deeplink)%3F), [React Native](https://github.com/infobip/mobile-messaging-react-native-plugin/wiki/How-to-define-specific-action-on-notification-or-in-app-primary-button-tap(open-url,-deeplink)%3F).
        - `resource` string: Defines which URL or path should be opened. Must be a valid `http://` or `https://` URL when `type` is `WEB_VIEW_URL` or `OPEN_URL_IN_BROWSER`.
        - `type` 'WEB_VIEW_URL' | 'DEEP_LINK' | 'OPEN_URL_IN_BROWSER': `WEB_VIEW_URL` - opening of the external web content in webView, `OPEN_URL_IN_BROWSER` - opening of the external web content in device browser, `DEEP_LINK` - opening of particular mobile app screen over deep link.
      - `inboxTopic` string: A case sensitive topic name to save a message to an inbox. If the topic name does not exist for a specified account, message sending will be rejected. [A case sensitive topic name to save a message to an inbox](https://www.infobip.com/docs/mobile-push/inbox)
      - `inboxMessageExpirationPeriod` integer: Sets validity period for inbox message. Users will only see the message in their inbox if it has not expired. Time unit for this parameter is set by property of inboxMessageExpirationTimeUnit. This field is only applicable when inboxTopic is present.
      - `inboxMessageExpirationTimeUnit` 'DAYS' | 'MONTHS': Time unit for inbox message expiration. Only applicable when inboxTopic is present.
      - `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.
      - `customPayload` object: Additional data that can be delivered with the Push message. customPayload must be formatted as JSON object.
      - `campaignReferenceId` string: ID that allows you to track, analyze, and show an aggregated overview and the performance of individual campaigns per sending channel.
    - `webhooks` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742Webhooks: Provides options for configuring message webhooks.
      - `delivery` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742MessageDeliveryReporting: 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.
      - `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.
  - `options` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742PushMessageRequestOptions: Options applicable to all messages in the request.
    - `schedule` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742RequestSchedulingSettings: 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` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742SendingSpeedLimit: 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`.

## Response `200`

OK

- Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742PushUnificationResponse
  - `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` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742MessageResponseMessageResponseDetails[], 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` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742MessageStatus: 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` Be899aa87631e28acaf5aa6d4ae5df630595a5bf087810b506602819a5d8b742MessageResponseDetails: Other details of the message.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `429`: Too Many Requests
- `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)
