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

# List automations

`GET /automations`

## Request

- Base URL: `https://api.omnisocials.com/v1`
- URL: `https://api.omnisocials.com/v1/automations`
- Auth: HTTP bearer

Returns the comment-to-DM automations of the workspace, newest first. An automation answers a keyword in a comment (or a DM, or an Instagram story reply) with a DM, once per person. It runs on the connected Instagram account, the connected Facebook Page or the connected X account (`platform`; on X it answers DMs only). Needs the opt-in `automations:read` scope.

## Query parameters

- `status` 'active' | 'paused' | 'completed'
- `post_id` string
- `platform` 'instagram' | 'facebook' | 'x'

## Response `200`

List of automations

- object
  - `data` Automation[]
    - `id` string
    - `type` 'comment_to_dm'
    - `platform` 'instagram' | 'facebook' | 'x': The channel the automation runs on: the connected Instagram account, the connected Facebook Page, or the connected X account. Set at create; it never changes.
    - `status` 'active' | 'paused' | 'completed': `completed` = `max_sends` or `stop_at` was reached. A new limit or trigger starts it again.
    - `name` string, nullable
    - `post_id` string, nullable: The OmniSocials post the automation listens on, for the `post` scope. `null` for a post published outside OmniSocials and for the other scopes.
    - `instagram_media_id` string, nullable: The Instagram media id the automation listens on. Set once the post is live on Instagram. Always `null` for a Facebook automation.
    - `facebook_post_id` string, nullable: The Facebook Page post id (`{page-id}_{post-id}`) the automation listens on. Set once the post is live on the Page. Always `null` for an Instagram automation.
    - `post` object, nullable: A snapshot of the post: `source` (`omnisocials`, `instagram` or `facebook`: a post picked by id is read from that platform), `id`, `caption`, `thumbnail_url`, `permalink`, `media_type` and, for an OmniSocials post, `status` and `live`.
    - `trigger` AutomationTrigger
      - `kinds` string[]: What starts the automation. `comment` = a comment on an Instagram post or reel, or on a Facebook Page post (needs `scope`). `dm` = a keyword in a DM to the Instagram account, in a Messenger message to the Facebook Page, or in a DM to the X account. `story_reply` = a keyword in a reply to an Instagram story (Instagram only: Facebook has no story replies, and a Facebook automation with `story_reply` answers 400 `validation_error`). On X only `dm` exists. One automation can listen to several. Default `["comment"]` (pass `["dm"]` on X).
      - `scope` 'post' | 'next_post' | 'any': For the `comment` kind: `post` = one post (pass `post_id`, `instagram_media_id` or `facebook_post_id` on the request), `next_post` = the next post the workspace publishes on the automation's platform, `any` = every post of the account or Page. Default `post`.
      - `keywords` string[]: Up to 20 keywords (60 characters each), matched case-insensitively. Required unless `match` is `any`.
      - `match` 'word' | 'contains' | 'any': `word` (default) = the keyword stands on its own ("guide", "Guide!" match; "linkedin" does not match "link"), `contains` = the keyword appears anywhere, `any` = every comment or message with text.
    - `actions` AutomationActions
      - `dm` object, required
        - `text` string, required: The DM sent to the person (max 1000 characters). Sent once per person per automation. On Facebook it lands in Messenger.
      - `public_reply` object: A public reply under the comment, only for the `comment` kind. One of `variations` is picked at random per comment.
        - `enabled` boolean
        - `variations` string[]: Up to 10 replies of 300 characters.
    - `limits` AutomationLimits
      - `max_sends` integer, nullable: Stop after this many DMs (the automation becomes `completed`). Omit for no limit.
      - `stop_at` string, date-time, nullable: Stop at this time. Omit for no end.
    - `stats` AutomationStats
      - `matched` integer
      - `sent` integer
      - `skipped` integer
      - `failed` integer
      - `last_event_at` string, date-time, nullable
    - `created_at` string, date-time
    - `updated_at` string, date-time

## Changes

- **2026-10-25** `4e6e28d10892`: 1 warning, 1 info
  - added the new `x` enum value to the `data/items/platform` response property for the response status `200`
  - added the new enum value `x` to the `query` request parameter `platform`
- **2026-10-22** `1e06adee390e`: 1 warning, 2 info
  - added the new `facebook` enum value to the `data/items/platform` response property for the response status `200`
  - added the new optional `query` request parameter `platform`
  - added the optional property `data/items/facebook_post_id` to the response with the `200` status
- **2026-10-11** `b64e4a7a8c4b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/omnisocials/apis/omnisocials-api/changes/automations/get.md)

---

[API](https://skmtc.dev/omnisocials/apis/omnisocials-api.md) - [All operations](https://skmtc.dev/omnisocials/apis/omnisocials-api/llms.txt) - [OpenAPI document](https://skmtc.dev/omnisocials/apis/omnisocials-api/revisions/46e479c09474?raw)
