---
title: "Get the schedule"
method: GET
path: "/v1/flows/{flowId}/schedule"
tags: ["flows"]
---

# Get the schedule

`GET /v1/flows/{flowId}/schedule`

## Request

- Base URL: `https://api.flowral.app`
- URL: `https://api.flowral.app/v1/flows/{flowId}/schedule`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (client credentials, token URL `https://api.flowral.app/v1/oauth/token`, scopes: `flows:read`)

Runs the critical-path pass: earliest and latest start and finish per task, slack, and the projected finish for the flow. Computed from estimates and dependencies — no dates are stored, so this is always current.

## Path parameters

- `flowId` string, required

## Query parameters

- `startDate` string: ISO 8601. Defaults to today.

## Response `200`

SUCCESS

- Schedule
  - `flowId` string, required
  - `dueDate` string, nullable: The day the flow is meant to land, `YYYY-MM-DD`.
  - `projectedFinish` string, nullable: Working day it lands at the current shape and estimates, `YYYY-MM-DD`.
  - `onTrack` boolean, nullable: Null when there is no due date to be on track against.
  - `entries` ScheduleEntry[], required
    - `taskId` string, required
    - `taskName` string, required
    - `earliestStart` string: Working day, `YYYY-MM-DD`.
    - `earliestFinish` string: Working day, `YYYY-MM-DD`.
    - `criticalPath` boolean, required: On the chain that decides the finish date — no slack.
    - `estimated` boolean: False when the span is a one-day guess because nothing was estimated.

## Other responses

- `401`: UNAUTHORIZED
- `403`: FORBIDDEN · PLAN_REQUIRED · INSUFFICIENT_SCOPE
- `404`: NOT_FOUND
- `429`: RATE_LIMITED

---

[API](https://skmtc.dev/flowral/apis/flowral-api.md) · [All operations](https://skmtc.dev/flowral/apis/flowral-api/llms.txt) · [OpenAPI document](https://skmtc.dev/flowral/apis/flowral-api/revisions/6cd2337b682c?raw)
