---
title: "Automation on/off history"
method: GET
path: "/v1/sites/{site_id}/automations/{automation_id}/history"
tags: ["Automations"]
---

# Automation on/off history

`GET /v1/sites/{site_id}/automations/{automation_id}/history`

## Request

- Base URL: `https://api.getsitecontrol.com`
- URL: `https://api.getsitecontrol.com/v1/sites/{site_id}/automations/{automation_id}/history`
- Auth: HTTP bearer

Every time the automation was turned on or off, oldest first; `order=newest`
gives the latest first. Each entry says who did it (`source`, `author`,
`api_key_id`) and, for a side effect, why (`reason`). Call it to answer who
turned the automation off and when. Changes before authorship was recorded
are not listed. The last change of the automation itself is `edited_at` and
`edited_by` of `get_automation`.

## Path parameters

- `site_id` integer, required
- `automation_id` integer, required: Automation id from `list_automations`

## Query parameters

- `cursor` string: `next_cursor` of the previous page, sent with the same `order`; omit for the first
- `limit` integer: Items per page
- `fields` string: Comma-separated fields to keep in each item, for example `id,name`; each item then carries only those fields and `id`. Omit for every field
- `order` 'oldest' | 'newest': Order of a list. oldest: the oldest item first; newest: the newest item first, for the latest items without paging through the history.

## Response `200`

Successful Response

- AutomationHistoryPage: One page of a list; `next_cursor` is null on the last page.
  - `items` AutomationHistoryEntry[], required
    - `id` integer, required
    - `occurred_at` string, date-time, required
    - `is_active` boolean, required: The state the automation was put in
    - `source` 'ui' | 'api' | 'mcp' | 'system' | 'support', required: Who made a change. ui: the admin; api: an API key; mcp: an AI assistant; system: done automatically; support: GetSiteControl support.
    - `reason` 'deleted' | 'balance' | 'blocked_suspicious_activity' | 'blocked_poor_delivery' | 'sandbox' | 'other' | 'stop_all': While the site's sending is held, `diagnose_email_sending` names what holds it. deleted: the automation was deleted while on. balance: the e-mail balance ran out. blocked_suspicious_activity: our automatic check for suspicious activity blocked the site's sending. blocked_poor_delivery: the site's sending was blocked: too many recipients bounced or complained. It stays blocked until the contact list is cleaned and support lifts the block. sandbox: sending is not enabled for the site yet or is paused pending a review. other: e-mail sending was turned off for the site for another or an unrecorded cause. stop_all: the system turned off every automation of the site.
    - `api_key_id` integer, nullable: The key that made the switch, for source api
    - `author` Author: A user of the account, as the admin shows them.
      - `id` integer, nullable: null for Support or for a user who was deleted
      - `name` string, nullable: null when the user has no name
      - `email` string, nullable: The user's sign-in e-mail; null for Support
  - `next_cursor` string, nullable

## Other responses

- `400`: Unsupported GSC-Version
- `401`: Missing or invalid API key or access token
- `403`: Access denied
- `404`: `site_not_found`, `automation_not_found`
- `422`: Validation failed
- `429`: Rate limited
- `503`: Temporarily unavailable; retry later

---

[API](https://skmtc.dev/getsitecontrol/apis/getsitecontrol-public-api.md) - [All operations](https://skmtc.dev/getsitecontrol/apis/getsitecontrol-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getsitecontrol/apis/getsitecontrol-public-api/revisions/084fcad80e75?raw)
