---
title: "Run a manual-audience automation"
method: POST
path: "/v1/automations/{automationId}/run"
tags: ["Automations"]
---

# Run a manual-audience automation

`POST /v1/automations/{automationId}/run`

Launches a MANUAL-AUDIENCE automation against the audience bound to its trigger node. `dry_run: true` previews without sending; `scheduledAt` launches later. Percentage-based `gradualSend` delivers each send step in custom hour or calendar-day batches and supports manual pause/resume/cancel. `400` when the resolved plan exceeds 50,000 recipients, 30 batches, or 30 elapsed days. Returns `202` with the `audienceRunId`.

## Path parameters

- `automationId` string, required — Automation id returned by `POST /v1/automations` and listed by `GET /v1/automations`.

## Headers

- `Idempotency-Key` string

## Request body

- AutomationRunRequest
  - `dry_run` boolean
  - `scheduledAt` string, date-time
  - `gradualSend` object
    - `startingPercentage` number, required
    - `incrementPercentage` number, required
    - `interval` union, required
      - object
        - `value` integer, required
        - `unit` 'hour', required
      - object
        - `value` integer, required
        - `unit` 'day', required
    - `timeZone` string, required — IANA timezone used to preserve local wall-clock time for day intervals.

## Response `200`

Dry-run preview (no run started).

- AutomationRunDryRunResponse
  - `dry_run` true, required
  - `automationId` string, required
  - `audienceId` string, required
  - `audienceName` string
  - `recipientCount` number, required
  - `sendNodeCount` number, required
  - `scheduledAt` string

## Other responses

- `202` — Run launched (or scheduled).
- `401` — The API key was missing, invalid, or revoked.
- `403` — The caller does not have the required `automations` permission.
- `404` — Automation not found in the API-key brand. Cross-brand ids intentionally surface as 404 (never 403) so the API does not leak cross-brand existence.
- `409` — The same `Idempotency-Key` was reused with a different request body.
- `429` — The request hit the rolling rate limit window.
- `500` — Unexpected internal error.

---

[API](https://skmtc.net/brew/apis/brew-public-api-v1.md) · [All operations](https://skmtc.net/brew/apis/brew-public-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/brew/brew-public-api-v1/versions/db96cfedc6c5/schema)
