---
title: "Send a transactional inbox message"
method: POST
path: "/v1/send/inbox_message"
tags: ["Send Messages"]
---

# Send a transactional inbox message

`POST /v1/send/inbox_message`

Send a transactional inbox message. Inbox messages deliver raw JSON payloads to your application through our JavaScript SDK, allowing you to build custom notification centers, message feeds, and other UI components.

You send a message using a `transactional_message_id` for an inbox message template created in the user interface. The `transactional_message_id` can be either the numerical ID for the template or the *Trigger Name* that you assigned the template.

You can find your `transactional_message_id` from the code sample in the **Overview** tab for your transactional message in the user interface, or you can look up a list of your transactional messages through the [App API](/integrations/api/app/tag/transactional/).

**Note**: Inbox messages are currently available for web platforms only and require the Customer.io In-App Plugin to be installed.

## Headers

- `X-Workspace-Id` integer

## Request body

- Sendinbox
  - `transactional_message_id` union, required — The transactional message template that you want to use for your message. You can call the template by its numerical ID or by the *Trigger Name* that you assigned to the template in the UI (case insensitive).
    - integer — The ID of the transactional message you want to send.
    - string — The name of trigger for the transactional message you want to send; you set the trigger name in the *Configure Settings* step when setting up your message. This is case insensitive.
  - `identifiers` union, required — Identifies the person represented by your transactional message by one of, and only one of, `id`, `email`, or `cio_id`.
    - object
      - `id` string, required — The identifier for the person represented by the transactional message. **NOTE**: If your workspace identifies people by email, use the `email` identifier instead.
    - object
      - `email` string, required — The identifier for the person represented by the transactional message. Use this option if your workspace identifies people by email rather than by `id`.
    - object
      - `cio_id` string, required — A unique, immutable identifier for a person, set by Customer.io when you add a person.
  - `message_data` object — An object containing the key-value pairs referenced using liquid in the format `{{trigger.<property_name>}}` in your inbox message. These values will populate the `properties` field in the message received by your application.
  - `to` string — Optional override for the recipient. This is typically not needed as the message is sent to the person identified by `identifiers`.
  - `send_at` integer — A unix timestamp (seconds since epoch) determining when the message will be sent. The timestamp can be up to 90 days in the future. If this value is in the past, your message is sent immediately.
  - `queue_draft` boolean — If true, your transactional message is held as a draft in Customer.io and not sent directly to your audience. You must go to the Deliveries and Drafts page to send your message.
  - `language` string — Overrides language preferences for the person you want to send your transactional message to. Use one of our [supported two- or four-letter language codes](/journeys/channels/localization/getting-started/#supported-languages).
  - `auto_create` boolean — Accepted for inbox sends, but of limited use. An auto-created record has no content or layout until you populate it in the UI, so we recommend [creating the inbox message in the UI](/journeys/channels/in-app/inbox/send-inbox-txnl/) instead. Your `transactional_message_id` must be a new string.

## Response `200`

Returns a unique ID for the delivery.

- object
  - `delivery_id` string — A unique identifier for the message.
  - `queued_at` integer — A Unix timestamp for when Customer.io accepted and queued your request. For scheduled messages (using `send_at`), this is when we received your request, not when the message sends.
  - `send_at` integer — For a scheduled message, the Unix timestamp when the message is set to send. Returned only when you provide a future `send_at`.

## Other responses

- `400` — The request was malformed.
- `403` — Your workspace is not authorized for transactional messaging or inbox messages.

---

[API](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference.md) · [All operations](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/customer/customer-io-journeys-api-reference/revisions/4b391af7cb06/schema)
