---
title: "List all workflows"
method: GET
path: "/v2/workflows"
tags: ["Workflows"]
---

# List all workflows

`GET /v2/workflows`

## Request

- Base URL: `https://api.notifly.io`
- URL: `https://api.notifly.io/v2/workflows`
- Auth: API key in header `Authorization`

Retrieves a list of workflows with optional filtering and pagination

## Query parameters

- `limit` number
- `offset` number
- `orderDirection` 'ASC' | 'DESC'
- `orderBy` 'createdAt' | 'updatedAt' | 'name' | 'lastTriggeredAt'
- `query` string
- `tags` string[]
- `status` WorkflowStatusEnum[]

## Response `200`

OK

- object
  - `data` ListWorkflowResponse
    - `workflows` WorkflowListResponseDto[], required: List of workflows
      - `name` string, required: Name of the workflow
      - `tags` string[]: Tags associated with the workflow
      - `updatedAt` string, required: Last updated timestamp
      - `createdAt` string, required: Creation timestamp
      - `updatedBy` UserResponseDto
        - `_id` string, required: User ID
        - `firstName` string, nullable: User first name
        - `lastName` string, nullable: User last name
        - `externalId` string, nullable: User external ID
      - `lastPublishedAt` string, nullable: Timestamp of the last workflow publication
      - `lastPublishedBy` UserResponseDto
        - `_id` string, required: User ID
        - `firstName` string, nullable: User first name
        - `lastName` string, nullable: User last name
        - `externalId` string, nullable: User external ID
      - `_id` string, required: Unique database identifier
      - `workflowId` string, required: Workflow identifier
      - `slug` string, required: Workflow slug
      - `status` 'ACTIVE' | 'INACTIVE' | 'ERROR', required: Status of the workflow
      - `origin` 'novu-cloud' | 'novu-cloud-v1' | 'external', required: Origin of the layout
      - `lastTriggeredAt` string, nullable: Timestamp of the last workflow trigger
      - `stepTypeOverviews` StepTypeEnum[], required: Overview of step types in the workflow
      - `isTranslationEnabled` boolean: Is translation enabled for the workflow
      - `steps` StepListResponseDto[], required: Steps of the workflow
        - `slug` string, required: Slug of the step
        - `type` 'in_app' | 'email' | 'sms' | 'chat' | 'push' | 'tool' | 'digest' | 'trigger' | 'delay' | 'throttle' | 'custom' | 'http_request', required: Type of the step
        - `issues` StepIssuesDto
          - `controls` object: Controls-related issues
          - `integration` object: Integration-related issues
    - `totalCount` number, required: Total number of workflows

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `405`: Method Not Allowed
- `409`: Conflict
- `413`: Payload Too Large
- `414`: URI Too Long
- `415`: Unsupported Media Type
- `422`: Unprocessable Entity
- `429`: The client has sent too many requests in a given amount of time.
- `500`: Internal Server Error
- `503`: The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.

---

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