---
title: "List all GitOps workflows"
method: GET
path: "/gitops/workflows"
tags: ["gitops"]
---

# List all GitOps workflows

`GET /gitops/workflows`

Returns a list of GitOps workflows, each with its aggregated status and the artifacts it contains.
**Access policy**: authenticated

## Query parameters

- `search` string
- `sort` 'name' | 'status' | 'creationDate' | 'lastSyncDate'
- `order` 'asc' | 'desc'
- `start` integer
- `limit` integer
- `endpointIds` integer[]
- `status` 'healthy' | 'syncing' | 'error' | 'paused' | 'unknown'
- `type` 'stack'
- `platform` 'dockerStandalone' | 'dockerSwarm' | 'kubernetes'

## Response `200`

OK

- WorkflowsWorkflow[]
  - `artifacts` WorkflowsArtifactDetail[]
    - `autoUpdate` PortainerAutoUpdateSettings
      - `ForcePullImage` boolean — Pull latest image
      - `ForceUpdate` boolean — Force update ignores repo changes
      - `Interval` string — Auto update interval Deprecated: polling interval now lives on the associated Source (Source.Interval). Kept for DB backwards-compatibility only; new code must not read or write this field.
      - `JobID` string — Autoupdate job id
      - `Webhook` string — A UUID generated from client
    - `creationDate` integer
    - `files` WorkflowsArtifactFileDetail[]
      - `hash` string
      - `path` string
      - `pathError` string
      - `pathStatus` 'unknown' | 'healthy' | 'error'
      - `ref` string
      - `refError` string
      - `refStatus` 'unknown' | 'healthy' | 'error'
      - `sourceId` integer
    - `id` integer, required
    - `lastSyncDate` integer
    - `name` string, required
    - `platform` 'dockerStandalone' | 'dockerSwarm' | 'kubernetes'
    - `status` WorkflowsWorkflowStatusObject
      - `artifact` WorkflowsWorkflowPhaseStatus
        - `error` string
        - `status` 'healthy' | 'syncing' | 'error' | 'paused' | 'unknown'
      - `source` WorkflowsWorkflowPhaseStatus
        - `error` string
        - `status` 'healthy' | 'syncing' | 'error' | 'paused' | 'unknown'
      - `target` WorkflowsWorkflowPhaseStatus
        - `error` string
        - `status` 'healthy' | 'syncing' | 'error' | 'paused' | 'unknown'
    - `target` WorkflowsTarget
      - `edgeGroupIds` integer[]
      - `endpointId` integer
      - `groupStatus` object
      - `namespace` string
      - `resolvedEndpointIds` integer[]
    - `type` 'stack' | 'edgeStack', required
  - `creationDate` integer
  - `id` integer, required
  - `lastSyncDate` integer
  - `name` string, required
  - `status` WorkflowsWorkflowStatusObject, required
    - `artifact` WorkflowsWorkflowPhaseStatus
      - `error` string
      - `status` 'healthy' | 'syncing' | 'error' | 'paused' | 'unknown'
    - `source` WorkflowsWorkflowPhaseStatus
      - `error` string
      - `status` 'healthy' | 'syncing' | 'error' | 'paused' | 'unknown'
    - `target` WorkflowsWorkflowPhaseStatus
      - `error` string
      - `status` 'healthy' | 'syncing' | 'error' | 'paused' | 'unknown'

## Other responses

- `400` — Invalid request
- `500` — Server error

---

[API](https://skmtc.net/portainer/apis/portainerce-api.md) · [All operations](https://skmtc.net/portainer/apis/portainerce-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/portainer/portainerce-api/versions/c0b0975cd11b/schema)
