---
title: "Get automations"
method: GET
path: "/v1/automations"
tags: ["Automations"]
---

# Get automations

`GET /v1/automations`

Unified automation read. Omit `automationId` to LIST the brand’s automations under `{ data, pagination }` — list rows are LEAN (graph omitted). Pass `?automationId=` to fetch ONE — returns `{ data: [row] }` (no `pagination`), `404 AUTOMATION_NOT_FOUND` on an unknown / cross-brand id, also LEAN by default. Add detail-only `?include=graph` (the full `nodes` + `connections`) and/or `?include=versions` (lean `{ version, automationVersionId }` history) — both rejected without `automationId`.

## Query parameters

- `automationId` string
- `include` string
- `limit` integer
- `cursor` string

## Response `200`

A page of lean automation rows (list mode), or `{ data: [row] }` (detail mode).

- AutomationsListResponse
  - `data` object[], required
    - `automationId` string, required
    - `automationVersionId` string, required
    - `triggerEventId` string
    - `name` string, required
    - `description` string
    - `version` union, required
      - integer
      - 'latest'
    - `published` boolean, required
    - `paused` boolean
    - `pausedAt` number
    - `nodes` union[]
      - union
        - object
          - `id` string, required
          - `label` string, required
          - `description` string
          - `type` 'trigger', required
          - `config` object, required
            - `actionType` string
            - `mode` 'event' | 'manualAudience'
            - `triggerEventId` string
            - `audienceId` string
            - `eventName` string
        - object
          - `id` string, required
          - `label` string, required
          - `description` string
          - `type` 'sendEmail', required
          - `config` object, required
            - `actionType` string
            - `emailId` string
            - `emailVersionId` string
            - `emailTitle` string
            - `subject` string
            - `previewText` string
            - `messageClass` 'marketing' | 'transactional'
            - `fromName` string
            - `fromAddress` string
            - `domainId` string
            - `replyTo` string
            - `to` unknown
            - `html` string
            - `variables` object
        - object
          - `id` string, required
          - `label` string, required
          - `description` string
          - `type` 'wait', required
          - `config` object, required
            - `actionType` string
            - `duration` number, required
            - `unit` 'ms' | 'seconds' | 'minutes' | 'hours' | 'days' | 'weeks', required
        - object
          - `id` string, required
          - `label` string, required
          - `description` string
          - `type` 'filter', required
          - `config` object, required
            - `actionType` string
            - `logicalOperator` 'AND' | 'OR', required
            - `conditions` object[], required
              - …
        - object
          - `id` string, required
          - `label` string, required
          - `description` string
          - `type` 'split', required
          - `config` union, required
            - object
              - …
            - object
              - …
    - `connections` object[]
      - `from` string, required
      - `to` string, required
      - `branch` 'left' | 'right'
    - `emailIds` string[], required
    - `createdBy` string
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `publishedAt` string, date-time
    - `versions` object[]
      - `version` union, required
        - integer
        - 'latest'
      - `automationVersionId` string, required
  - `pagination` object
    - `limit` integer, required
    - `cursor` string, nullable, required
    - `hasMore` boolean, required

## Other responses

- `400` — The request body or query string was invalid (unknown key, wrong type, or missing required field). Strict schemas reject unknown keys — including `brandId`, which is always resolved from the API key.
- `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.
- `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)
