---
title: "List automation logs"
method: GET
path: "/v1/comment-automations/{automationId}/logs"
tags: ["Comment Automations"]
---

# List automation logs

`GET /v1/comment-automations/{automationId}/logs`

Paginated list of every comment that triggered this automation, with send status and commenter info.

## Path parameters

- `automationId` string, required

## Query parameters

- `status` 'pending' | 'sent' | 'failed' | 'skipped' | 'gated'
- `limit` integer
- `skip` integer

## Response `200`

Trigger logs with pagination

- object
  - `success` boolean
  - `logs` object[]
    - `id` string
    - `commentId` string
    - `commenterId` string
    - `commenterName` string
    - `commentText` string
    - `status` 'pending' | 'sent' | 'failed' | 'skipped' | 'gated' — DM outcome. 'pending' = the automation has a dmDelaySeconds and the response is queued but not sent yet. 'gated' = the follow-gate confirmation DM went out and we are waiting for the tap; it flips to 'sent' or 'skipped' when they tap.
    - `audienceOutcome` 'passed' | 'blocked' | 'gate_sent' | 'gate_passed' | 'gate_failed' — How the audience rule resolved. Absent on automations without one.
    - `commenterIsFollower` boolean — Follow relationship at decision time. Absent when Instagram would not tell us (the commenter never messaged the account).
    - `commenterFollowerCount` integer
    - `error` string — DM error message if status is failed
    - `commentReplyStatus` 'sent' | 'failed' | 'skipped' — Outcome of the optional public reply on the triggering comment. 'skipped' if no commentReply was configured or if the DM failed (the public reply is not attempted in that case).
    - `commentReplyError` string — Public-reply error message if commentReplyStatus is failed
    - `nextDueAt` string, date-time — When the next queued send fires. Present only while something is still pending.
    - `createdAt` string, date-time
  - `pagination` object
    - `total` integer
    - `limit` integer
    - `skip` integer
    - `hasMore` boolean
  - `misses` object — Comments that reached this automation but matched none of its keywords. These produce no log entry, so this is the only signal that a keyword is catching nothing. Retained for a short window, then dropped.
    - `total` integer — Number of non-matching comments in the retention window
    - `retentionDays` integer — How many days of non-matching comments the total covers
    - `samples` object[] — A few of the most recent non-matching comments, for diagnosing a keyword setup.
      - `commentText` string
      - `commenterName` string
      - `excludedBy` string — Set when an exclusion keyword vetoed an otherwise matching comment
      - `at` string, date-time

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `404` — Resource not found

---

[API](https://skmtc.net/zernio/apis/zernio-api.md) · [All operations](https://skmtc.net/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zernio/zernio-api/revisions/51932b099b2f/schema)
