> ## Documentation Index
> Fetch the complete documentation index at: https://docs.watchdog.no/llms.txt
> Use this file to discover all available pages before exploring further.

# List workflow runs

> Lists workflow runs, newest first. Filters combine with AND; comma-separated values within a filter combine with OR. Use statuses=queued,running to find active work.



## OpenAPI

````yaml /openapi.json get /v1/workflow-runs
openapi: 3.1.0
info:
  title: Watchdog API
  version: 1.0.0
  description: >-
    The Watchdog API is served from https://api.watchdog.no. Request bodies are
    limited to 2 MiB unless an endpoint says otherwise. Files are uploaded
    directly to storage, not through the API.
servers:
  - url: https://api.watchdog.no
    description: Watchdog API
security: []
paths:
  /v1/workflow-runs:
    get:
      tags:
        - Workflow runs
      summary: List workflow runs
      description: >-
        Lists workflow runs, newest first. Filters combine with AND;
        comma-separated values within a filter combine with OR. Use
        statuses=queued,running to find active work.
      operationId: listWorkflowRuns
      parameters:
        - name: X-Organization-Id
          in: header
          required: false
          schema:
            type: string
          description: >-
            The organization to act in. Required for personal API keys; list the
            organizations you can access with GET /v1/organizations.
        - name: fields
          in: query
          required: false
          schema:
            type: string
          description: >-
            Return only these fields of each row, comma-separated; use dots for
            nested fields, such as resource.type. id is always returned. Fields:
            id, retry_of_run_id, type, resource, status, progress, created_at,
            updated_at, started_at, finished_at, failure, label.
        - schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 50
            description: Maximum number of results per page.
          required: false
          description: Maximum number of results per page.
          name: limit
          in: query
        - schema:
            type: string
            maxLength: 4096
            description: >-
              Opaque next_cursor from the previous page. Keep the same filters
              and sort; omit for the first page.
          required: false
          description: >-
            Opaque next_cursor from the previous page. Keep the same filters and
            sort; omit for the first page.
          name: cursor
          in: query
        - schema:
            type: string
            maxLength: 4000
            description: >-
              Comma-separated statuses: queued, running, completed,
              completed_with_errors, failed, cancelled. Omit to include all
              statuses, including terminal runs.
          required: false
          description: >-
            Comma-separated statuses: queued, running, completed,
            completed_with_errors, failed, cancelled. Omit to include all
            statuses, including terminal runs.
          name: statuses
          in: query
        - schema:
            type: string
            maxLength: 4000
            description: >-
              Comma-separated workflow types: party_merge,
              organization_currency_conversion, document_extraction,
              document_index, agreement_document_classification,
              agreement_detail_suggestions, invoice_import,
              invoice_import_batch, invoice_agreement_matching,
              invoice_credit_note_matching, agreement_invoice_matching,
              invoice_compliance_check, agreement_compliance_check,
              integration_sync, integration_capture, alert_topic_reconciliation,
              alert_topic_proposal, agreement_context_suggestions,
              agreement_price_import, agreement_document_import.
          required: false
          description: >-
            Comma-separated workflow types: party_merge,
            organization_currency_conversion, document_extraction,
            document_index, agreement_document_classification,
            agreement_detail_suggestions, invoice_import, invoice_import_batch,
            invoice_agreement_matching, invoice_credit_note_matching,
            agreement_invoice_matching, invoice_compliance_check,
            agreement_compliance_check, integration_sync, integration_capture,
            alert_topic_reconciliation, alert_topic_proposal,
            agreement_context_suggestions, agreement_price_import,
            agreement_document_import.
          name: types
          in: query
        - schema:
            type: string
            maxLength: 27
            format: date-time
            description: >-
              Inclusive creation time, as a UTC timestamp with at most six
              fractional digits.
          required: false
          description: >-
            Inclusive creation time, as a UTC timestamp with at most six
            fractional digits.
          name: created_from
          in: query
        - schema:
            type: string
            maxLength: 27
            format: date-time
            description: >-
              Exclusive creation time, as a UTC timestamp with at most six
              fractional digits.
          required: false
          description: >-
            Exclusive creation time, as a UTC timestamp with at most six
            fractional digits.
          name: created_before
          in: query
        - schema:
            type: string
            enum:
              - invoice_import
              - workflow_run
              - invoice
              - agreement
              - document
              - integration
              - agreement_price_import
          required: false
          name: resource_type
          in: query
        - schema:
            type: string
            format: uuid
            description: Owner ID; requires resource_type.
          required: false
          description: Owner ID; requires resource_type.
          name: resource_id
          in: query
        - schema:
            type: string
            maxLength: 4000
            description: Comma-separated run IDs, at most 100. Unknown IDs are ignored.
          required: false
          description: Comma-separated run IDs, at most 100. Unknown IDs are ignored.
          name: ids
          in: query
      responses:
        '200':
          description: A page of runs.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/WorkflowRun'
                    maxItems: 1000
                  next_cursor:
                    type:
                      - string
                      - 'null'
                required:
                  - data
                  - next_cursor
              example:
                data:
                  - id: 44444444-4444-4444-8444-444444444444
                    retry_of_run_id: null
                    type: invoice_import
                    resource:
                      type: invoice_import
                      id: 33333333-3333-4333-8333-333333333333
                    status: completed
                    progress:
                      total: 1
                      queued: 0
                      running: 0
                      completed: 1
                      skipped: 0
                      failed: 0
                      cancelled: 0
                    created_at: '2026-09-08T12:00:00.000Z'
                    updated_at: '2026-09-08T12:00:30.000Z'
                    started_at: '2026-09-08T12:00:02.000Z'
                    finished_at: '2026-09-08T12:00:30.000Z'
                    failure: null
                    label: invoice-2026-0042.pdf
                next_cursor: null
        '400':
          description: >-
            The request is invalid. details lists up to 20 field errors. Request
            bodies are limited to 2 MiB.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_validation_error'
              example:
                error:
                  code: validation_error
                  message: >-
                    The request is invalid. details lists up to 20 field errors.
                    Request bodies are limited to 2 MiB.
                  request_id: req_example
        '401':
          description: The bearer token is missing or invalid.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
            WWW-Authenticate:
              schema:
                type: string
              required: false
              description: Bearer authentication challenge, when supplied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_invalid_token'
              example:
                error:
                  code: invalid_token
                  message: The bearer token is missing or invalid.
                  request_id: req_example
        '403':
          description: >-
            Access denied. The error code says why: forbidden, token_disabled,
            organization_required, insufficient_role or mfa_required.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Error_forbidden_token_disabled_organization_required_insufficient_role_mfa_required
              example:
                error:
                  code: forbidden
                  message: >-
                    Access denied. The error code says why: forbidden,
                    token_disabled, organization_required, insufficient_role or
                    mfa_required.
                  request_id: req_example
        '429':
          description: Too many requests. Wait for the Retry-After delay before retrying.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
            Retry-After:
              schema:
                type: string
                example: '60'
              required: true
              description: Seconds to wait before retrying the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_rate_limit_exceeded'
              example:
                error:
                  code: rate_limit_exceeded
                  message: >-
                    Too many requests. Wait for the Retry-After delay before
                    retrying.
                  request_id: req_example
        '500':
          description: >-
            Unexpected server failure. Include the request ID when contacting
            support.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_internal_error'
              example:
                error:
                  code: internal_error
                  message: >-
                    Unexpected server failure. Include the request ID when
                    contacting support.
                  request_id: req_example
        '503':
          description: >-
            Temporarily unavailable. Retry after the Retry-After delay, when
            provided.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
            Retry-After:
              schema:
                type: string
                example: '60'
              required: true
              description: Seconds to wait before retrying the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_service_unavailable'
              example:
                error:
                  code: service_unavailable
                  message: >-
                    Temporarily unavailable. Retry after the Retry-After delay,
                    when provided.
                  request_id: req_example
      security:
        - ApiKeyBearer: []
components:
  schemas:
    WorkflowRun:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Run ID. Retrying a run can create a new run with its own ID.
        retry_of_run_id:
          type:
            - string
            - 'null'
          format: uuid
        type:
          type: string
          enum:
            - party_merge
            - organization_currency_conversion
            - document_extraction
            - document_index
            - agreement_document_classification
            - agreement_detail_suggestions
            - invoice_import
            - invoice_import_batch
            - invoice_agreement_matching
            - invoice_credit_note_matching
            - agreement_invoice_matching
            - invoice_compliance_check
            - agreement_compliance_check
            - integration_sync
            - integration_capture
            - alert_topic_reconciliation
            - alert_topic_proposal
            - agreement_context_suggestions
            - agreement_price_import
            - agreement_document_import
        resource:
          type: object
          properties:
            type:
              type: string
              enum:
                - invoice_import
                - workflow_run
                - invoice
                - agreement
                - document
                - integration
                - agreement_price_import
            id:
              type: string
              format: uuid
          required:
            - type
            - id
          description: The resource this run belongs to.
        status:
          type: string
          enum:
            - queued
            - running
            - completed
            - completed_with_errors
            - failed
            - cancelled
        progress:
          type: object
          properties:
            total:
              type:
                - integer
                - 'null'
              minimum: 0
            queued:
              type: integer
              minimum: 0
            running:
              type: integer
              minimum: 0
            completed:
              type: integer
              minimum: 0
            skipped:
              type: integer
              minimum: 0
            failed:
              type: integer
              minimum: 0
            cancelled:
              type: integer
              minimum: 0
          required:
            - total
            - queued
            - running
            - completed
            - skipped
            - failed
            - cancelled
          description: >-
            Counts of admitted items. total is null while more items may be
            discovered.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
          description: When the run last changed.
        started_at:
          type:
            - string
            - 'null'
          format: date-time
        finished_at:
          type:
            - string
            - 'null'
          format: date-time
        failure:
          type:
            - object
            - 'null'
          properties:
            code:
              type: string
              minLength: 1
              maxLength: 100
            message:
              type: string
              minLength: 1
              maxLength: 2000
          required:
            - code
            - message
        label:
          type:
            - string
            - 'null'
          description: >-
            Agreement title, invoice number, file name or integration name, when
            known.
      required:
        - id
        - retry_of_run_id
        - type
        - resource
        - status
        - progress
        - created_at
        - updated_at
        - started_at
        - finished_at
        - failure
        - label
    Error_validation_error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - validation_error
            message:
              type: string
            request_id:
              type: string
            description:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - field
                  - message
              maxItems: 20
            workflow_run_id:
              type: string
              format: uuid
            import_id:
              type: string
              format: uuid
            existing_party:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - supplier
                    - recipient
                id:
                  type: string
                  format: uuid
              required:
                - type
                - id
          required:
            - code
            - message
            - request_id
      required:
        - error
    Error_invalid_token:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - invalid_token
            message:
              type: string
            request_id:
              type: string
            description:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - field
                  - message
              maxItems: 20
            workflow_run_id:
              type: string
              format: uuid
            import_id:
              type: string
              format: uuid
            existing_party:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - supplier
                    - recipient
                id:
                  type: string
                  format: uuid
              required:
                - type
                - id
          required:
            - code
            - message
            - request_id
      required:
        - error
    Error_forbidden_token_disabled_organization_required_insufficient_role_mfa_required:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - forbidden
                - token_disabled
                - organization_required
                - insufficient_role
                - mfa_required
            message:
              type: string
            request_id:
              type: string
            description:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - field
                  - message
              maxItems: 20
            workflow_run_id:
              type: string
              format: uuid
            import_id:
              type: string
              format: uuid
            existing_party:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - supplier
                    - recipient
                id:
                  type: string
                  format: uuid
              required:
                - type
                - id
          required:
            - code
            - message
            - request_id
      required:
        - error
    Error_rate_limit_exceeded:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - rate_limit_exceeded
            message:
              type: string
            request_id:
              type: string
            description:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - field
                  - message
              maxItems: 20
            workflow_run_id:
              type: string
              format: uuid
            import_id:
              type: string
              format: uuid
            existing_party:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - supplier
                    - recipient
                id:
                  type: string
                  format: uuid
              required:
                - type
                - id
          required:
            - code
            - message
            - request_id
      required:
        - error
    Error_internal_error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - internal_error
            message:
              type: string
            request_id:
              type: string
            description:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - field
                  - message
              maxItems: 20
            workflow_run_id:
              type: string
              format: uuid
            import_id:
              type: string
              format: uuid
            existing_party:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - supplier
                    - recipient
                id:
                  type: string
                  format: uuid
              required:
                - type
                - id
          required:
            - code
            - message
            - request_id
      required:
        - error
    Error_service_unavailable:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - service_unavailable
            message:
              type: string
            request_id:
              type: string
            description:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - field
                  - message
              maxItems: 20
            workflow_run_id:
              type: string
              format: uuid
            import_id:
              type: string
              format: uuid
            existing_party:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - supplier
                    - recipient
                id:
                  type: string
                  format: uuid
              required:
                - type
                - id
          required:
            - code
            - message
            - request_id
      required:
        - error
  securitySchemes:
    ApiKeyBearer:
      type: http
      scheme: bearer
      description: >-
        Personal API key sent as a bearer token, together with
        X-Organization-Id. The key must have at least the access level the
        endpoint requires (read, write or admin).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.