---
title: "Get Workflow Overview"
method: GET
path: "/api/v1/workflows/{workflow_id}"
tags: ["Workflows"]
---

# Get Workflow Overview

`GET /api/v1/workflows/{workflow_id}`

## Request

- Base URL: `http://localhost:3009`
- URL: `http://localhost:3009/api/v1/workflows/{workflow_id}`
- Auth: HTTP bearer

Returns operational info for a single workflow — the bootstrap call after List Workflows.

Includes workflow metadata (`name`, timestamps), a per-sheet roster with settings (`auto_run`, cache), webhook URLs for pushing rows into each sheet, and sharing metadata.

`data.sheets[0]` is always the main sheet; child sheets follow `sheets_config.sheetsOrder` when set, otherwise creation order.

`is_owner` is `true` when the caller owns the workflow. `shared_users` lists who it is shared with, for the owner and org admins — the people who can share it (Share Workflow); other callers get `[]`.

## Path parameters

- `workflow_id` string, required

## Response `200`

Default Response

- object
  - `status` integer
  - `data` WorkflowOverview: Operational info for a workflow: metadata (same fields as List Workflows), sheet roster with settings and webhook URLs, and shared users.
    - `workflow_id` string, uuid, required: UUID of the parent workflow.
    - `name` string, required: Workflow name as set at creation.
    - `created_at` string, date-time, required: UTC timestamp (ISO 8601) when the workflow was created.
    - `updated_at` string, date-time, required: UTC timestamp (ISO 8601) of the most recent configuration change (name, inputs, actions, sheet settings).
    - `last_run_at` string, date-time, required: UTC timestamp (ISO 8601) of the most recent run across every sheet in this workflow. `null` if no sheet has ever been run.
    - `folder_id` unknown, required
    - `folder_path` string[], required: Folder names from the top-level folder down to the one holding the workflow, e.g. `["Reporting", "Weekly"]`. `null` when `folder_id` is `null`.
    - `is_owner` boolean, required: `true` when the caller is the workflow owner.
    - `shared_users` string[], required: Emails the workflow is shared with (edit access). Populated for the owner and org admins; otherwise `[]`.
    - `sheets` WorkflowOverviewSheet[], required: Every sheet in the workflow with its settings and webhook URL. `sheets[0]` is the main sheet.
      - `sheet_id` string, uuid, required: UUID of the sheet. Pass as `{sheet_id}` on every sheet-scoped endpoint, and as `target_sheet_id` when another sheet routes data here via `send_to_sheet`.
      - `name` string, required: Sheet name as set at creation. Not required to be unique within a workflow.
      - `is_main_sheet` boolean, required: `true` for the workflow's main sheet — auto-created with the workflow, always present, and has `sheet_id === data.workflow_id`.
      - `auto_run` boolean, required: When `true` (default), the sheet's action chain runs automatically whenever new data rows arrive.
      - `cache_enabled` boolean, required: When `true` (default), a row with input column values identical to a previously-run row reuses the previous row's outputs instead of re-running the action chain.
      - `cache_since` string, date, required: Earliest date (`YYYY-MM-DD`, UTC) from which cached runs are considered fresh. `null` means all cached runs are considered fresh regardless of age.
      - `continue_on_fail` boolean, required: When `true`, a row keeps moving to the next action after an action fails on it. When `false` (default), the row stops at the failing action. Every action follows this setting unless it has its own `continue_workflow_if_action_fails`.
      - `webhook_url` unknown, required

## Other responses

- `401`: Unauthorized — missing or invalid API key
- `403`: Forbidden. `code` says which permission refused: ROLE_FORBIDDEN (your role), INSUFFICIENT_SCOPE (the API key's scopes), WORKFLOW_FORBIDDEN (no access to the workflow), KEY_WORKFLOW_FORBIDDEN (the API key's workflow restriction).
- `404`: Workflow not found
- `429`: Too Many Requests — rate limit exceeded. Check `Retry-After` header for seconds until the limit resets.

---

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