---
title: "Create a bulk job"
method: POST
path: "/bulk"
tags: ["Bulk"]
---

# Create a bulk job

`POST /bulk`

## Request body

- object
  - `message` union, required
    - InboundBulkTemplateMessage
      - `template` string, required
    - InboundBulkContentMessage
      - `content` union, required
        - ElementalContentSugar — Syntactic sugar to provide a fast shorthand for Courier Elemental Blocks.
          - `title` string, required — Title/subject displayed by supported channels.
          - `body` string, required — The text content displayed in the notification.
        - ElementalContent
          - `version` string, required — For example, "2022-01-01"
          - `brand` string, nullable
          - `elements` ElementalNode[], required
            - union
              - …

## Response `200`

- BulkCreateJobResponse
  - `jobId` string, required

## Other responses

- `400`

## Changes

- **2025-10-07** `7143ea51f307` — 1 breaking, 2 warning, 5 info
  - added `#/components/schemas/InboundBulkMessageV2` to the `message` request property `allOf` list
  - removed `#/components/schemas/InboundBulkMessageV1` from the `message` request property `allOf` list
  - removed the request property `message/message`
  - added the new optional request property `message/brand`
  - …4 more

[Change history](https://skmtc.dev/trycourier/apis/courier/changes/bulk/post.md)

---

[API](https://skmtc.dev/trycourier/apis/courier.md) · [All operations](https://skmtc.dev/trycourier/apis/courier/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/trycourier/courier/revisions/7143ea51f307/schema)
