---
title: "Stop automation"
method: POST
path: "/automations/{automation_id}/stop"
tags: ["Automations"]
---

# Stop automation

`POST /automations/{automation_id}/stop`

Transition automation to stopped. Idempotent.

## Path parameters

- `automation_id` integer, required

## Headers

- `Idempotency-Key` string, nullable
- `X-Dry-Run` string, nullable

## Response `200`

Successful Response

- AutomationWriteResponseV2
  - `data` AutomationResourceV2, required — Canonical write-endpoint response. Replaces the v1 AutomationResource (which mirrored the legacy single-shape body). Now reflects the four-type taxonomy — `automation_type` is the public-API type, not the DB string. The DB string is in `_internal_type` for debugging only.
    - `automation_id` integer, nullable — None on dry-run.
    - `shop_id` integer, required
    - `automation_name` string, required
    - `automation_type` union, required — One of: target_collab | dm | email | sample_request.
      - 'target_collab' | 'dm' | 'email' | 'sample_request'
      - string
    - `automation_status` string, required
    - `state` string, required
    - `config` AutomationStoredConfig
      - `sample_request_config` SampleRequestStoredConfig
        - `minimum_performance_criteria` SampleRequestStoredMinimumCriteria
          - `min_shop_gmv` number, nullable
      - `sample_approval` SampleRequestStoredConfig
        - `minimum_performance_criteria` SampleRequestStoredMinimumCriteria
          - `min_shop_gmv` number, nullable
    - `schedule` object, nullable
    - `creators_to_include` object, nullable
    - `creators_to_exclude` object, nullable
    - `crm_group_id` string, nullable
    - `ai_enabled` boolean
    - `end_date` string, nullable
    - `created_at` string, nullable
    - `updated_at` string, nullable
    - `created_via` string, nullable — Surface that created the automation. Always populated on response: rows with NULL or empty `created_via` (predating migration 020) are surfaced as `portal` since the portal was historically the only writer. Common values: portal | api | api_direct | mcp | agent | slack | internal | campaign_tc_auto (set is not closed — other internal surfaces may appear). `api_direct` marks single-creator invites created by `POST /public/v1/target-collabs`.
    - `side_effects` object, nullable — Backend side-effects, e.g. {'crm_group_created': '<uuid>'} on sample_request creates.
  - `dry_run` boolean
  - `side_effects` object, nullable — Backend side-effects, e.g. {'crm_group_created': 'uuid-...'} for sample_request creates.

## Other responses

- `400` — Validation, missing/invalid Idempotency-Key, or forbidden update field.
- `403` — API key lacks `read_write` scope (`WRITE_NOT_PERMITTED`).
- `404` — Automation/list/group not in this shop.
- `409` — Idempotency conflict or archived row.
- `422` — Validation Error
- `429` — Write-tier rate limit (10/min, 50/hr, 100/day) exceeded.

## Changes

> 31 revisions in range; 1 not diffed.

- **2026-09-19** `291230805105` — 1 breaking, 1 info
  - the `data/automation_type` response's property type changed from `string` to no type for status `200`
  - added `subschema #1, subschema #2` to the `data/automation_type` response property `anyOf` list for the response status `200`
- **2026-09-16** `30ad5ba59c8e` — 2 info
  - added the optional property `data/config/sample_approval` to the response with the `200` status
  - added the optional property `data/config/sample_request_config` to the response with the `200` status

[Change history](https://skmtc.dev/reacherapp/apis/reacher-data-api/changes/automations/:automation_id/stop/post.md)

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) · [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) · [OpenAPI document](https://skmtc.dev/reacherapp/apis/reacher-data-api/revisions/3530675d2c2a?raw)
