---
title: "List a Reason's Loops"
method: GET
path: "/v3/organizations/{orgId}/reasons/{reasonId}/loops"
tags: ["Loops"]
---

# List a Reason's Loops

`GET /v3/organizations/{orgId}/reasons/{reasonId}/loops`

## Request

- Base URL: `https://api.reasonmachines.com`
- URL: `https://api.reasonmachines.com/v3/organizations/{orgId}/reasons/{reasonId}/loops`
- Auth: HTTP bearer

A Loop is standing work a Reason does, woken by a schedule or an event (a webhook, a GitHub event or a Slack message). Each wake opens or continues a Session of the Reason. Lists the Loops filed under the Reason that the caller can see. Who sees and changes a Loop follows its Reason: the people who can use the Reason see and change its Loops, except that a teammate's Loop on a team Reason stays that teammate's (the Reason's owner may see and stop it). Workspace owners and admins may pause and delete any Loop.What a Loop runs in (its Session or computer), its Slack channels and what wakes it stay with its creator, since each is checked against their access (403 `loop_creator_only_change`).

<sub>Scope: `automations:read`</sub>

## Response `200`

The Reason's Loops.

- ReasonLoopList
  - `items` ReasonLoop[], required: The Reason's Loops the caller can see.
    - `id` string, uuid, required: Loop id. Pass it as `loopId`.
    - `reason_id` string, uuid, required: The Reason the Loop is filed under; its runs are that Reason's Sessions.
    - `name` string, required
    - `prompt` string, required: The instructions each wake follows.
    - `enabled` boolean, required
    - `status` 'active' | 'paused' | 'completed' | 'failed', required: `completed` when a scheduled Loop reached its `until` or `max_runs`; `paused` names why in `paused_reason`.
    - `paused_reason` string, nullable, required: Why the scheduler paused it (for example `out_of_credits` or `repeated_failures`); null when it is not paused or was paused by hand.
    - `trigger_description` string: What wakes it, in words.
    - `wakes_on` object[]
      - `kind` 'schedule' | 'slack' | 'webhook' | 'github', required
      - `description` string, required
    - `schedule` object, nullable, required: Its schedule; null when only events wake it.
      - `kind` 'every' | 'cron' | 'at', required
      - `expression` string, nullable, required
      - `every_seconds` integer, nullable, required
      - `timezone` string, required
      - `next_run_at` string, date-time, nullable, required
    - `event_trigger` object, nullable
      - `kind` 'webhook' | 'github', required
      - `url` string, nullable: For a webhook: where senders POST; null when this server has no public URL. The key is never returned here.
    - `slack` object, nullable, required: The Slack channels that wake it and its health; null when Slack does not.
    - `execution_mode` 'session' | 'new_session', required
    - `session_id` string, nullable, required: The Session it is bound to, when one is.
    - `latest_session_id` string, nullable, required: The Session its most recent wake ran in.
    - `device_id` string, nullable, required
    - `repository` string, nullable, required
    - `model` string, nullable, required
    - `notification_policy` 'important_updates' | 'failed_runs_only', required
    - `until` string, date-time, nullable, required
    - `max_runs` integer, nullable, required
    - `run_count` integer, required
    - `last_run` object, nullable, required
      - `status` string, required
      - `at` string, required
      - `session_id` string, required
    - `created_by_user_id` string, uuid, required: Who created it; its runs are billed as theirs.
    - `viewer_access` object: What the caller may do with it: change what it runs (`edit`), or pause and delete it (`stop`). Present on reads (list and get).
      - `edit` boolean, required
      - `stop` boolean, required

## Other responses

- `401`: Missing, invalid, or expired key.
- `403`: The key lacks the required scope or role.
- `429`: Too many requests. Retry after the number of seconds in the `Retry-After` response header.

## Changes

- **2026-10-26** `c250866428e0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ara/apis/reason-api/changes/v3/organizations/:orgId/reasons/:reasonId/loops/get.md)

---

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