> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getdialed.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# List schedules

> Lists the caller's schedules with offset pagination (`limit`/`skip`) and a real filtered `total`. Sort with `sort_by`/`order` (default `created_at` desc, newest first) and filter with `enabled`. `next_fire_at` is computed from the cron expression at read time; `next_cursor` is always null on this offset endpoint.



## OpenAPI

````yaml /openapi.json get /schedules
openapi: 3.1.0
info:
  title: GetDialed Flows API
  version: 0.1.0
servers:
  - url: https://api.getdialed.ai/flows
    description: Production
security: []
paths:
  /schedules:
    get:
      tags:
        - schedules
      summary: List schedules
      description: >-
        Lists the caller's schedules with offset pagination (`limit`/`skip`) and
        a real filtered `total`. Sort with `sort_by`/`order` (default
        `created_at` desc, newest first) and filter with `enabled`.
        `next_fire_at` is computed from the cron expression at read time;
        `next_cursor` is always null on this offset endpoint.
      operationId: list_schedules_schedules_get
      parameters:
        - name: skip
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
            title: Skip
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 500
            minimum: 1
            default: 50
            title: Limit
        - name: enabled
          in: query
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: 'null'
            title: Enabled
        - name: sort_by
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/ScheduleSortBy'
            default: created_at
        - name: order
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/Order'
            default: desc
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Page_ScheduleResponse_'
        '401':
          description: Missing or invalid authentication
          content:
            application/json:
              example:
                detail: Authentication required
        '422':
          description: Validation error (see body for field details)
          content:
            application/json:
              example:
                detail: Validation error
      security:
        - APIKeyHeader: []
        - HTTPBearer: []
components:
  schemas:
    ScheduleSortBy:
      type: string
      enum:
        - created_at
        - description
      title: ScheduleSortBy
      description: >-
        Allowed `sort_by` fields for GET /schedules (screen 13).


        Deliberately EXCLUDES `next_fire` — it is computed at read time via

        croniter (D-14) and is not a stored, sortable field (Pitfall 4). Only

        stored columns are members, so no read-time-computed field can ever
        reach

        the repo's `.sort()`. `description` is the schedule's human label (the

        Schedule model has no `name` field).
    Order:
      type: string
      enum:
        - asc
        - desc
      title: Order
      description: |-
        Sort direction for config-family list endpoints (D-08).

        Renders as a real named enum (`components.schemas["Order"]`) in the
        generated OpenAPI so the Phase 50 typed client gets a compile-time
        `"asc" | "desc"` string-literal union.
    Page_ScheduleResponse_:
      properties:
        items:
          items:
            $ref: '#/components/schemas/ScheduleResponse'
          type: array
          title: Items
        total:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total
        limit:
          type: integer
          title: Limit
        skip:
          type: integer
          title: Skip
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
      type: object
      required:
        - items
        - limit
        - skip
      title: Page[ScheduleResponse]
    ScheduleResponse:
      properties:
        id:
          type: string
          title: Id
        definition_id:
          type: string
          title: Definition Id
        org_id:
          type: string
          title: Org Id
        description:
          type: string
          title: Description
        cron_expression:
          type: string
          title: Cron Expression
        enabled:
          type: boolean
          title: Enabled
        input_data:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Input Data
        metadata:
          additionalProperties: true
          type: object
          title: Metadata
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
        next_fire_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Next Fire At
        last_fired_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Last Fired At
        last_fire_status:
          anyOf:
            - type: string
              enum:
                - success
                - failure
                - running
            - type: 'null'
          title: Last Fire Status
      type: object
      required:
        - id
        - definition_id
        - org_id
        - description
        - cron_expression
        - enabled
        - input_data
        - metadata
        - created_at
        - updated_at
        - next_fire_at
        - last_fired_at
        - last_fire_status
      title: ScheduleResponse
      description: |-
        A schedule. `next_fire_at` is computed from the cron expression
        at read time (never stored) and is null only if the stored expression
        cannot produce a future fire.
      example:
        created_at: '2026-07-09T09:00:00Z'
        cron_expression: 0 9 * * 1-5
        definition_id: def_a1b2c3d4
        description: Nightly Five9 report sync
        enabled: true
        id: sched_1a2b3c4d
        input_data:
          report: daily_calls
        metadata:
          owner: ops
        next_fire_at: '2026-07-10T09:00:00Z'
        org_id: org_e5f6g7h8
        updated_at: '2026-07-09T09:00:00Z'
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
    HTTPBearer:
      type: http
      scheme: bearer
      bearerFormat: JWT

````