---
title: "Start a canary for a publish"
method: POST
path: "/api/v1/canaries"
tags: ["canaries"]
---

# Start a canary for a publish

`POST /api/v1/canaries`

## Request

- Base URL: `https://api.outrival.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.outrival.com/api/v1/canaries`
- Auth: HTTP bearer

Launch a ``kind = canary`` experiment at phase_10 with one 5,000 bp arm.

## Request body

- CreateCanaryRequest: A publish to serve through a canary instead of writing it directly.
  - `campaign_id` string, uuid, required: The campaign the publish is for
  - `configuration` object, required: The whole candidate configuration, as it would be stored
  - `source` 'customer_publish' | 'staff_push', required: Which publish path started the canary
  - `actor_user_id` string, uuid, required: The person joma-web authorized for this publish
  - `run_id` string, nullable: The publish run this canary belongs to, if any

## Response `201`

Successful Response

- unknown

## Other responses

- `401`: The bearer is not the canary service token
- `404`: No such campaign
- `409`: error_code canary_unavailable, canary_running, experiment_running, canary_no_change, canary_rule_conflict, or canary_no_room
- `422`: error_code canary_unpinnable, naming the sections
- `503`: CANARY_SERVICE_TOKEN is not configured

## Changes

- **2026-10-21** `a63b52fb6b6e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/outrival/apis/outrival-api/changes/api/v1/canaries/post.md)

---

[API](https://skmtc.dev/outrival/apis/outrival-api.md) - [All operations](https://skmtc.dev/outrival/apis/outrival-api/llms.txt) - [OpenAPI document](https://skmtc.dev/outrival/apis/outrival-api/revisions/f27d90300b5e?raw)
