---
title: "Retrieve a version of an automation rule"
method: GET
path: "/companies/{company}/automations/rules/{rule}/versions/{version}"
tags: ["Automations"]
---

# Retrieve a version of an automation rule

`GET /companies/{company}/automations/rules/{rule}/versions/{version}`

## Request

- Base URL: `https://api.factuarea.com/v1`
- URL: `https://api.factuarea.com/v1/companies/{company}/automations/rules/{rule}/versions/{version}`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Retrieve one frozen version of the definition of a rule by its version number — an ordinal, not a UUID. Unlike the listing, an unknown pair of rule and version returns 404. A version keeps resolving after its rule has been deleted, which is what lets the detail of an old run explain the definition it started from.

## Path parameters

- `company` string, uuid, required
- `rule` string, uuid, required
- `version` string, required

## Headers

- `Factuarea-Version` string, date

## Response `200`

- object
  - `data` AutomationRuleVersion, required: A frozen version of the definition of an automation rule. Editing a rule never mutates its previous definition: it seals a new version and bumps `current_version`. Every run keeps a pointer to the exact version it executed, so a run from weeks ago stays readable after the rule has moved on.
    - `id` string, uuid, required: Opaque identifier of this version, a UUID v7 (e.g. `01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a9b`).
    - `object` 'automation_rule_version', required: Always `automation_rule_version`.
    - `automation_rule_id` string, uuid, required: UUID v7 of the automation rule this version belongs to.
    - `version` integer, required: Version number, monotonically increasing within the rule. It is what `automation_run.rule_version` points at, and what you pass to `GET /v1/companies/{company}/automations/rules/{rule}/versions/{version}`.
    - `trigger_type` string, required: Event this version listens to, in `resource.action` form (e.g. `invoice.paid`), frozen at the time the version was sealed.
    - `conditions` object, required: Frozen condition tree of this version. An empty object `{}` means the version has no condition and always acts. Its shape is defined by the account owner (nested combinators over the fields of the trigger payload), so it is returned verbatim.
    - `actions` object[], required: Frozen actions of this version, in the order they were declared. Each element carries its action type and its parameters. An empty array means the version declares no action.
    - `created_at` string, date-time, nullable, required: When this version was sealed (ISO 8601).

## Other responses

- `400`: `parameter_unknown` with `subcode` `retired_active_profile_header`: the retired `X-Active-Profile` header was sent; the company goes in the path. `parameter_invalid_format` on `Factuarea-Version`: the header is not a `YYYY-MM-DD` date. `unsupported_api_version`: the `Factuarea-Version` date is not a supported version.
- `401`: Missing or invalid API key.
- `403`: The request is authenticated but not allowed: the API key lacks the required scope (`insufficient_scope`), the plan does not include the public API or this feature (`addon_not_active`, `feature_not_available_in_plan`), or the module is not available with a test key (`module_not_available_in_sandbox`). `company_inactive`: the company in the path is deactivated; reactivate it to operate.
- `404`: The requested resource does not exist or belongs to another company. `profile_not_found`: the company in the path does not exist, is not in the API key scope or belongs to the other environment (live or test).
- `429`: Rate limit exceeded. Retry after the duration in `Retry-After`.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/factuarea/apis/factuarea-public-api.md) · [All operations](https://skmtc.dev/factuarea/apis/factuarea-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/factuarea/apis/factuarea-public-api/revisions/718e77934422?raw)
