---
title: "Get approval workflows"
method: GET
path: "/api/v2/approval_workflows"
tags: ["Approval Workflow"]
---

# Get approval workflows

`GET /api/v2/approval_workflows`

## Request

- Base URL: `https://developer.productive.io` (the document declares no server; this is the origin it was published from)
- URL: `https://developer.productive.io/api/v2/approval_workflows`
- Auth: none declared

List approval workflows, optionally filtered by approval policy, absence category or ID.

## Query parameters

- `filter` union: Filter schema for `approval_workflow` list endpoints — pass a single condition or a logical group.
  - object: A logical filter group — combine multiple conditions with the `$op` operator.
    - `$op` 'or' | 'and', required: Logical operator combining conditions in this group. `or` matches records satisfying any condition; `and` requires all conditions to match.
  - FilterApprovalWorkflow: Filter conditions for listing approval workflows.
    - `approval_policy_id` union: Filter by the approval policy the workflow belongs to.
      - object: Filter using explicit operator syntax.
        - `eq` ApprovalPolicyId (unresolved $ref)
        - `not_eq` ApprovalPolicyId (unresolved $ref)
        - `contains` ApprovalPolicyId (unresolved $ref)
        - `not_contain` ApprovalPolicyId (unresolved $ref)
      - ApprovalPolicyId (unresolved $ref)
    - `event_id` union: Filter by the absence category (event) the workflow applies to.
      - object: Filter using explicit operator syntax.
        - `eq` EventId (unresolved $ref)
        - `not_eq` EventId (unresolved $ref)
        - `contains` EventId (unresolved $ref)
        - `not_contain` EventId (unresolved $ref)
      - EventId (unresolved $ref)
    - `id` union: Filter by approval workflow ID.
      - object: Filter using explicit operator syntax.
        - `eq` Id (unresolved $ref)
        - `not_eq` Id (unresolved $ref)
        - `contains` Id (unresolved $ref)
        - `not_contain` Id (unresolved $ref)
      - Id (unresolved $ref)
    - `approver_id` union
      - object
        - `eq` union
          - ApproverId (unresolved $ref)
          - string
          - ApproverId[] (unresolved $ref)
        - `not_eq` union
          - ApproverId (unresolved $ref)
          - string
          - ApproverId[] (unresolved $ref)
        - `contains` union
          - ApproverId (unresolved $ref)
          - string
          - ApproverId[] (unresolved $ref)
        - `not_contain` union
          - ApproverId (unresolved $ref)
          - string
          - ApproverId[] (unresolved $ref)
        - `any_of` union
          - ApproverId (unresolved $ref)
          - string
          - ApproverId[] (unresolved $ref)
        - `none_of` union
          - ApproverId (unresolved $ref)
          - string
          - ApproverId[] (unresolved $ref)
      - ApproverId (unresolved $ref)
      - string
      - ApproverId[] (unresolved $ref)
    - `subscriber_id` union
      - object
        - `eq` union
          - SubscriberId (unresolved $ref)
          - string
          - SubscriberId[] (unresolved $ref)
        - `not_eq` union
          - SubscriberId (unresolved $ref)
          - string
          - SubscriberId[] (unresolved $ref)
        - `contains` union
          - SubscriberId (unresolved $ref)
          - string
          - SubscriberId[] (unresolved $ref)
        - `not_contain` union
          - SubscriberId (unresolved $ref)
          - string
          - SubscriberId[] (unresolved $ref)
        - `any_of` union
          - SubscriberId (unresolved $ref)
          - string
          - SubscriberId[] (unresolved $ref)
        - `none_of` union
          - SubscriberId (unresolved $ref)
          - string
          - SubscriberId[] (unresolved $ref)
      - SubscriberId (unresolved $ref)
      - string
      - SubscriberId[] (unresolved $ref)
    - `target_type_id` union
      - object
        - `eq` TargetTypeId (unresolved $ref)
        - `not_eq` TargetTypeId (unresolved $ref)
        - `contains` TargetTypeId (unresolved $ref)
        - `not_contain` TargetTypeId (unresolved $ref)
      - TargetTypeId (unresolved $ref)
- `sort` string[]

## Response `200`

Collection of approval workflows

- object: A list of approval workflow records in JSON:API format.
  - `data` object[]: The approval workflow resource objects.
    - `attributes` object: Approval workflow attributes.
      - `approval_requirement_id` ApprovalRequirementId (unresolved $ref)
      - `dynamic_approver_ids` DynamicApproverIds (unresolved $ref)
      - `dynamic_subscriber_ids` DynamicSubscriberIds (unresolved $ref)
      - `target_type_id` TargetTypeId (unresolved $ref)
    - `relationships` object: Approval workflow relationships.
      - `approval_policy` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
      - `approvers` union: A JSON:API collection relationship — links to zero or more related resources.
        - CollectionLinkage
          - `data` Resource[], required
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
      - `event` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
      - `organization` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
      - `subscribers` union: A JSON:API collection relationship — links to zero or more related resources.
        - CollectionLinkage
          - `data` Resource[], required
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
  - `included` unknown[]: Sideloaded related resources.
    - unknown
  - `meta` Meta: Pagination and response metadata returned with every collection endpoint.
    - `current_page` integer: The current page number in this paginated response (1-based).
    - `max_page_size` integer: Maximum number of records allowed per page for this endpoint.
    - `organization_features` object: Feature flags and capabilities enabled for the current organization, used for UI rendering.
    - `page_size` integer: Number of records returned per page in this response.
    - `settings` object: Organization or user settings relevant to this resource's display.
    - `total_count` integer: Total number of records matching the current query across all pages.
    - `total_pages` integer: Total number of pages available for the current query and page size.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `408`: Request Timeout
- `423`: Locked
- `429`: Too Many Requests
- `500`: Internal Server Error

## Changes

- **2026-11-02** `fa3060fd0144`: 7 info
  - added the non-success response with the status `400`
  - added the non-success response with the status `401`
  - added the non-success response with the status `403`
  - added the non-success response with the status `408`
  - …3 more
- **2026-10-27** `f11a8740641a`: 1 info
  - endpoint added
  - …this revision’s changelog is incomplete

[Operation history](https://skmtc.dev/productive/apis/api-documentation/changes/api/v2/approval_workflows/get.md)

---

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