---
title: "Admin Cold Outreach Fire Now"
method: POST
path: "/v1/admin/cold-outreach/fire-now"
---

# Admin Cold Outreach Fire Now

`POST /v1/admin/cold-outreach/fire-now`

## Request

- Base URL: `https://api.storyflo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.storyflo.com/v1/admin/cold-outreach/fire-now`
- Auth: none declared

Manually fire the cold-outreach auto-tick.

Same code path as the 15:00 UTC scheduler tick — vertical-balanced
selection from the warm pool, REMOVE-handler gate respected,
Postmark-throttled sends, end-of-run TG digest.

Response contract
-----------------
* ``dry_run=true`` (default) → 200 with the planned selection
  preview. Synchronous; no kv writes; no Postmark traffic.
* ``dry_run=false`` → 202 + ``{"job_id": "...", "status": "queued",
  "candidates_to_attempt": int}``. The actual fire runs in a
  FastAPI BackgroundTasks task; poll
  ``GET /v1/admin/cold-outreach/fire-now/{job_id}/status`` for
  progress + final counts.
* ``dry_run=false`` when a previous run is still in-flight → 409
  with ``{"job_id": "<in-flight uuid>", "status": "running"}`` so
  the caller can pivot to the status endpoint without queueing a
  duplicate run.

Use ``dry_run=true`` to preview the template + vertical mix before
flipping ``AUTO_COLD_OUTREACH_ENABLED=1``.

Query params
------------
dry_run:
    Default ``true``. ``false`` actually sends. Live sends still
    respect the 23h idempotency window — to override it for a
    legitimate same-day re-fire, ALSO pass
    ``skip_idempotency=true``.
quota:
    Override the per-run send budget. Capped at the env
    ``AUTO_COLD_OUTREACH_DAILY_QUOTA`` value inside the worker —
    the route layer just forwards the param.
skip_idempotency:
    Only honored by the worker when also ``dry_run=false``. The
    scheduler tick NEVER sets this (so the daily idempotency
    guard stays in force).

## Query parameters

- `dry_run` boolean
- `quota` integer, nullable
- `skip_idempotency` boolean
- `api_key` string, nullable

## Headers

- `x-storyflo-email-token` string, nullable
- `x-storyflo-key` string, nullable
- `x-readout-key` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/storyflo/apis/storyflo-inference-router.md) · [All operations](https://skmtc.dev/storyflo/apis/storyflo-inference-router/llms.txt) · [OpenAPI document](https://skmtc.dev/storyflo/apis/storyflo-inference-router/revisions/c3a1a735ac7a?raw)
