---
title: "Create Routing Strategy"
method: POST
path: "/routing-strategies"
tags: ["Routing Strategies"]
---

# Create Routing Strategy

`POST /routing-strategies`

Create a routing strategy. Requires a name and routing configuration at minimum. Channels and providers default to empty if omitted.

## Headers

- `Idempotency-Key` string
- `x-idempotency-expiration` string

## Request body

- RoutingStrategyCreateRequest — Request body for creating a routing strategy.
  - `name` string, required — Human-readable name for the routing strategy.
  - `description` string, nullable — Optional description of the routing strategy.
  - `tags` string[], nullable — Optional tags for categorization.
  - `routing` MessageRouting, required
    - `method` 'all' | 'single', required
    - `channels` MessageRoutingChannel[], required
      - union
        - string
        - MessageRouting — recursive
  - `channels` MessageChannels
  - `providers` MessageProviders

## Response `201`

Created

- RoutingStrategyGetResponse — Full routing strategy entity returned by GET.
  - `id` string, required — The routing strategy ID (rs_ prefix).
  - `name` string, required — Human-readable name.
  - `description` string, nullable — Description of the routing strategy.
  - `tags` string[], nullable — Tags for categorization.
  - `routing` MessageRouting, required
    - `method` 'all' | 'single', required
    - `channels` MessageRoutingChannel[], required
      - union
        - string
        - MessageRouting — recursive
  - `channels` MessageChannels, required
  - `providers` MessageProviders, required
  - `created` integer, required — Epoch milliseconds when the strategy was created.
  - `creator` string, required — User ID of the creator.
  - `updated` integer, nullable — Epoch milliseconds of last update.
  - `updater` string, nullable — User ID of the last updater.

## Other responses

- `400` — Bad Request

## Changes

- **2026-07-29** `f76bed79a913` — 2 info
  - added the new optional `header` request parameter `Idempotency-Key`
  - added the new optional `header` request parameter `x-idempotency-expiration`
- **2026-04-13** `f0ac5c2fa86e` — 10 info
  - added the optional property `description` to the response with the `201` status
  - added the optional property `tags` to the response with the `201` status
  - added the optional property `updated` to the response with the `201` status
  - added the optional property `updater` to the response with the `201` status
  - …6 more
- **2026-04-02** `b3dde9374868` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/trycourier/apis/courier/changes/routing-strategies/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/cb8586034158/schema)
