---
title: "Discover workflow blocks and actions"
method: GET
path: "/blocks"
tags: ["Blocks"]
---

# Discover workflow blocks and actions

`GET /blocks`

## Request

- Base URL: `https://workflow.loopfour.ai/api/v1`
- URL: `https://workflow.loopfour.ai/api/v1/blocks`
- Auth: API key in header `x-api-key`

Start here when the integration is unknown. Returns the deployed non-hidden block catalog, including action IDs, typed inputs, field requirements and static choices. Filter kind=integrations for provider actions, then follow each result's links.self or call getBlock with its type. Requires workflows:read. Uses the standard read rate limit. No provider API calls or tenant connection data; no pagination.

## Query parameters

- `kind` 'core' | 'integrations' | 'triggers'

## Response `200`

Success

- object
  - `success` unknown
  - `data` BlockMetadata[]
    - `type` string, required
    - `name` string, required
    - `description` string, required
    - `kind` 'core' | 'integrations' | 'triggers', required
    - `category` string
    - `connectionRequired` boolean, required
    - `links` object, required: Resolve against the API origin. Follow self for block details and collection to return to the catalog.
      - `self` string, uri-reference, required
      - `collection` string, uri-reference, required
    - `actions` string[], required: Action IDs declared by this block. Discover the deployed catalog at runtime.
    - `inputs` object[], required
      - `key` string, required
      - `type` 'string' | 'number' | 'boolean' | 'json' | 'array' | 'file', required
      - `description` string
      - `schema` object: Nested input schema, when declared by the block.
    - `outputs` string[], required
    - `subBlocks` object[], required: Field definitions. Join id to inputs.key for types and nested schemas. A required field applies only when visibleWhen matches.
      - `id` string, required
      - `title` string
      - `type` string, required: Authoring control type; the value type is in inputs.
      - `required` boolean
      - `requiredWhen` BlockFieldCondition
        - `field` string, required
        - `value` union, required: Match a scalar, or any member of an array. Negate with not; combine with and.
          - string
          - number
          - boolean
          - union[]
            - union
              - …
        - `not` boolean
        - `and` BlockFieldCondition (recursive)
      - `visibleWhen` BlockFieldCondition
        - `field` string, required
        - `value` union, required: Match a scalar, or any member of an array. Negate with not; combine with and.
          - string
          - number
          - boolean
          - union[]
            - union
              - …
        - `not` boolean
        - `and` BlockFieldCondition (recursive)
      - `options` object[]: Static choices, including all QuickBooks report names. Connection-dependent choices are not resolved.
        - `id` string, required
        - `label` string, required

## Other responses

- `400`: Bad request — invalid parameters or request body.
- `401`: Missing or invalid API key.
- `403`: Forbidden — insufficient permissions for this resource.
- `429`: Too many requests — rate limit exceeded.

---

[API](https://skmtc.dev/loopfour/apis/loopfour-workflows-api.md) - [All operations](https://skmtc.dev/loopfour/apis/loopfour-workflows-api/llms.txt) - [OpenAPI document](https://skmtc.dev/loopfour/apis/loopfour-workflows-api/revisions/872822a3af00?raw)
