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

# List automations

`GET /v1/automations`

## Request

- Base URL: `https://api.banksync.io`
- URL: `https://api.banksync.io/v1/automations`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

The workspace’s automations with their status and how many blocking findings their draft has. Narrow with `search` (words in the name) and `status`; with `boundToType` and `boundToId`, only those bound to one resource — a table’s, a bank’s or a feed’s automations — each with its grant’s state and its latest run.

## Query parameters

- `boundToType` string: Only automations with a binding of this resource type — `tables.table`, `banksync.bank`, `banksync.feed` — to `boundToId`: a table’s or a feed’s automations
- `boundToId` string: The bound resource’s ID
- `trashed` 'true' | 'false': `true` lists the automations in trash instead of the live ones
- `search` string: Only the automations whose name contains these words (any case)
- `status` string: Only the automations in these states, comma-separated: `draft`, `inactive`, `active`, `blocked`
- `cursor` string: The `nextCursor` of the previous page
- `limit` integer: Automations per page, in the order the tree draws them

## Response `200`

The automations

- object
  - `success` true, required
  - `data` object, required
    - `automations` object[], required
      - `id` string, required
      - `name` string, required
      - `icon` string, nullable, required
      - `status` 'draft' | 'inactive' | 'active' | 'blocked', required: `draft`: never published. `inactive`: published, triggers off. `active`: triggers registered. `blocked`: on, but its grant does not let it run.
      - `activeRevision` string, nullable, required: The hash of the revision runs use.
      - `draftVersion` integer, required: Send it back with an edit of the draft.
      - `blocking` integer, required: How many blocking findings the draft has.
      - `updatedAt` string, required
      - `grant` 'none' | 'requested' | 'active' | 'needs_reapproval' | 'revoked' | 'expired': Where the active revision’s grant stands: `requested` waits for a person to approve it.
      - `held` object, nullable: Why the platform turned it off: its table is in the trash, or the feed it runs or the bank it reads was deleted. Null when nothing holds it.
        - `reason` 'table.trash' | 'feed.deleted' | 'bank.removed', required
        - `targetId` string, required: The id of what went away.
      - `lastRun` object, nullable
        - `status` string, required
        - `startedAt` string, required
      - `pendingRevision` string, nullable: A published revision waiting for approval; the active one keeps running meanwhile. Null when none.
      - `writesTarget` boolean: On a `boundTo` listing: some step writes to that resource, not only reads it.
      - `folderId` string, nullable
      - `position` integer
      - `favorite` boolean
      - `version` integer
      - `deletedAt` string, nullable
    - `folders` object[]
      - `id` string, required
      - `name` string, required
      - `icon` string, nullable, required
      - `parentId` string, nullable, required
      - `position` integer, required
      - `version` integer, required
      - `updatedAt` string, required
    - `nextCursor` string, nullable, required: Send it as `cursor` for the next page; null on the last page.

## Other responses

- `400`: Invalid input, or the draft has blocking findings — `code` names the refusal (`AUTOMATION_BLOCKED_BY_FINDINGS`, `AUTOMATION_SECRET_REFUSED`, …) and `details[]` each finding with its node
- `401`: Unauthorized
- `403`: Forbidden — missing scope, insufficient role, a credential narrowed to some accounts, or a grant the caller does not hold
- `404`: Not found — or automations are not enabled for this workspace
- `409`: Conflict — the draft moved since you read it (`AUTOMATION_VERSION_CONFLICT`), the automation is not published or not active, or a grant does not hold (`AUTOMATION_GRANT_STATE`)
- `429`: The automation’s admission refused the run and does not queue (`AUTOMATION_ADMISSION_REFUSED`, `AUTOMATION_RATE_LIMITED`): `code` names which, and the `Retry-After` header says how many seconds to wait before trying again. A start that queues is a 202, not this.
- `503`: Automations are paused while an incident is worked (`AUTOMATIONS_STOPPED`) or not configured here (`AUTOMATIONS_UNAVAILABLE`): `code` names which, and the `Retry-After` header says how many seconds to wait before retrying

---

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