---
title: "GET /experimental/orgs/{orgId}/schedules"
method: GET
path: "/experimental/orgs/{orgId}/schedules"
tags: ["Schedules"]
---

# GET /experimental/orgs/{orgId}/schedules

`GET /experimental/orgs/{orgId}/schedules`

## Request

- Base URL: `https://api.tessl.io`
- URL: `https://api.tessl.io/experimental/orgs/{orgId}/schedules`
- Auth: none declared

Lists non-archived loops in the workspaces the caller can view. Pass `includeArchived=true` to include retired loops. Defaults to newest-first; named orders keep paused loops last.

## Path parameters

- `orgId` string, uuid, required

## Query parameters

- `sort` union
  - union[]
    - union
      - 'createdAt'
      - '-createdAt'
      - 'updatedAt'
      - '-updatedAt'
      - 'id'
      - '-id'
  - 'createdAt'
  - '-createdAt'
  - 'updatedAt'
  - '-updatedAt'
  - 'id'
  - '-id'
- `page[size]` number
- `page[after]` string
- `page[before]` string
- `page[number]` integer
- `order` union
  - 'name'
  - 'runCount'
  - 'lastRun'
- `workspaceId` string, uuid
- `projectId` string, uuid
- `environmentId` string, uuid
- `status` union
  - 'active'
  - 'paused'
- `kind` union
  - 'schedule'
  - 'event'
- `includeArchived` boolean

## Headers

- `Authorization` string

## Response `200`

Default Response

- object
  - `links` object, required
    - `self` string, uri, required
    - `next` string, uri, nullable, required
    - `prev` string, uri, nullable, required
  - `meta` object, required
    - `count` number, required
  - `data` object[], required
    - `id` string, uuid, required
    - `type` 'schedule', required
    - `attributes` object, required
      - `status` union, required
        - 'active'
        - 'paused'
      - `config` object, required
        - `skillRef` string, required
        - `repoUrl` string, required
        - `baseBranch` string
      - `resolvedSkill` object
        - `kind` union, required
          - 'registry'
          - 'local'
          - 'bundled'
        - `name` string, nullable, required
        - `registry` object, nullable, required
          - `workspace` string, required
          - `tile` string, required
          - `version` string, nullable, required
        - `path` string, nullable, required
        - `description` string, nullable, required
        - `skillBranch` string: The branch a local skill's repository link points at: the branch a run of the Loop's action checks out (its `baseBranch`, else the project's `defaultLoopBranch`, else the repository's default branch). Set only by the detail endpoint, for a local skill whose branch is known to this caller; omitted otherwise, and always omitted on the list.
      - `label` string, nullable, required
      - `description` string, nullable, required
      - `workspace` object, required
        - `id` string, uuid, required
        - `name` string, required
      - `project` object
        - `id` string, uuid, required
        - `name` string, required
      - `createdBy` object, nullable, required
        - `id` string, uuid, required
        - `firstName` string, nullable, required
        - `lastName` string, nullable, required
      - `createdByProjectAutomation` object, nullable, required
        - `id` string, uuid, required
        - `name` string, nullable, required
      - `environment` object, nullable, required
        - `id` string, uuid, required
        - `name` string, required
      - `openFindingsCount` integer: Number of open Findings V2 findings observed by this schedule. Absent when the count cannot be determined.
      - `pausedReason` object, nullable, required: Why the server paused the schedule, or null when it did not. Cleared when the schedule is resumed.
        - `code` union, required
          - 'skill-moderation-failed'
          - 'factory-stage-declared-in-repository'
        - `message` string, required
        - `pausedAt` string, date-time, required
      - `runNow` boolean, required: Whether the Loop's definition allows Run now. It is false for a Loop that starts only on events, with no cron trigger, and for an action that reads the event. Running it still needs `edit` on the workspace.
      - `runCount` integer, required
      - `nextRunAt` string, date-time, nullable, required
      - `lastRunAt` string, date-time, nullable, required
      - `archivedAt` string, date-time, nullable, required: When the Loop was retired, or null while it is part of the active configuration.
      - `lastRun` object
        - `id` string, uuid, required
        - `status` union, required
          - 'pending'
          - 'completed'
          - 'failed'
          - 'cancelled'
        - `outcome` object
          - `status` union, required: What the skill did: `succeeded` — it did its work; `no_action` — it ran but made no change; `needs_input` — it asked a blocking question and stopped; `failed` — it tried and could not complete. Not the same as the launch run's own status, which says whether the platform got the skill to run at all.
            - 'succeeded'
            - 'no_action'
            - 'needs_input'
            - 'failed'
          - `reason` string
        - `updatedAt` string, date-time, required
      - `definitionSource` union
        - 'app'
        - 'repo'
      - `sourceCommit` object
        - `sha` string, required
        - `repoFullName` string, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `triggers` union[], required
        - union
          - object
            - `kind` 'cron', required
            - `name` string, required: The trigger's name within the Loop.
            - `cron` string, required
            - `timezone` string, required
            - `overrides` object[], required: The fields of the Loop's action this trigger runs with a value of its own, sorted by field.
              - …
            - `inputOverrides` object[]: The inputs this trigger sets to a value of its own, sorted by name. Absent from listings and update responses, and when the trigger overrides no input.
              - …
            - `lastRunAt` string, date-time, nullable: When the latest request naming this trigger, a tick or a run now, that started a run was accepted. Absent from listings and update responses.
            - `error` object, nullable: The refusal this trigger's latest verdict is, or null when its latest verdict started a run, was not an error, or it has none. A verdict is a claim of this trigger that started a run or was refused; a claim still waiting, a skip because a run of the Loop was already running, and a claim settled because its run was lost are not. Absent from listings and update responses.
              - …
          - object
            - `kind` 'event', required
            - `name` string, required: The trigger's name within the Loop.
            - `eventCount` integer, required
            - `events` string[], required
            - `when` object: The conditions an event must meet to start a run, as the trigger declares them. Absent when the trigger has none, and from listings and update responses.
            - `overrides` object[], required: The fields of the Loop's action this trigger runs with a value of its own, sorted by field.
              - …
            - `inputOverrides` object[]: The inputs this trigger sets to a value of its own, sorted by name. Absent from listings and update responses, and when the trigger overrides no input.
              - …
            - `error` object, nullable: The refusal this trigger's latest verdict is, or null when its latest verdict started a run, was not an error, or it has none. A verdict is a claim of this trigger that started a run or was refused; a claim still waiting, a skip because a run of the Loop was already running, and a claim settled because its run was lost are not. Absent from listings and update responses.
              - …
      - `kind` union, required: `event` for a Loop with an event trigger, otherwise `schedule`. Read each trigger's kind from `triggers`.
        - 'schedule'
        - 'event'
      - `cron` string, nullable, required: The first cron trigger's cron, or null when there is none.
      - `timezone` string, nullable, required: The first cron trigger's timezone, or null when there is none.
      - `trigger` object, nullable, required: The events every event trigger listens for, or null when there is no event trigger.
        - `eventCount` integer, required
        - `events` string[], required
      - `action` object, nullable, required: The skill of a Loop with an event trigger; null otherwise, where `config.skillRef` carries it.
        - `skillRef` string, required
      - `triggerCount` integer, nullable: The number of event triggers, or null when there is none.
      - `tags` string[], required: The Loop's tags, from its action in tessl.json. Empty when it has none.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `500`: Internal Server Error

## Changes

- **2026-10-30** `4fa2a17154e4`: 1 info
  - added the required property `data/items/attributes/createdByProjectAutomation` to the response with the `200` status
- **2026-10-29** `06d2142ed144`: 1 info
  - api operation id `listOrgSchedules` was added
- **2026-10-23** `143208114a4e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/tessl/apis/tessl-api/changes/experimental/orgs/:orgId/schedules/get.md)

---

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