---
title: "Retrieve a Loop"
method: GET
path: "/v3/organizations/{orgId}/reasons/{reasonId}/loops/{loopId}"
tags: ["Loops"]
---

# Retrieve a Loop

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

## Request

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

Returns the Loop without running it. A webhook Loop shows its URL as `event_trigger.url`; its key is never returned after creation. 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 Loop.

- ReasonLoop: A Loop: standing work a Reason does, woken by a schedule or an event. Each wake opens or continues a Session of the Reason.
  - `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.
- `404`: Resource not found.
- `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/:loopId/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)
