---
title: List Workflows
description: Discover workflows your API key can access, with schemas in legacy mode or paginated marketplace catalog.
source: https://www.edgaze.ai/docs/api/list-workflows
section: api
---
# List Workflows

> Discover workflows your API key can access, with schemas in legacy mode or paginated marketplace catalog.

```apibar
list-workflows
```

## Overview

Use this endpoint to discover which workflows your API key can access before starting a run. It is the first call in most integrations: list or search workflows, read each `inputSchema`, then POST /runs with the workflow id and inputs.

Two discovery modes exist. With no query parameters you get a legacy list of owned and purchased workflows, each with a full `inputSchema` and an `exampleRequest` you can copy. With `scope=marketplace` you get a paginated catalog of public listings with pricing, access state, and `apiRunnableNow` flags.

```doccallout
{"variant":"info","text":"Call without query params during development to inspect schemas for workflows you already own or bought. Use scope=marketplace with q, offset, and limit when building a marketplace browser or automated runner that searches public per-run listings."}
```

## Authorization

Required scopes (either satisfies this endpoint):

```apiscopes
list-workflows
```

Pass the key as a Bearer token: `Authorization: Bearer edgaze_sk_live_…`

## Parameters

```apiparams
list-workflows
```

## Response

All responses are JSON. Errors use `{ error: { code, message } }`. Example success and error payloads are in the request/response panel above.

## Edge cases

```apiedges
list-workflows
```

---

## Endpoint reference
- **Method:** `GET`
- **Path:** `https://api.edgaze.ai/v1/workflows`
- **Scopes:** `run:read`, `run:execute`
## Parameters
| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Authorization` | header | string | yes | Bearer token with your secret API key. |
| `scope` | query | string | no | Set to marketplace for paginated public catalog. Omit for legacy owned + purchased list. |
| `q` | query | string | no | Search title, description, tags, owner handle, or Edgaze Code. |
| `offset` | query | integer | no | Pagination offset. Used with marketplace scope. |
| `limit` | query | integer | no | Page size (max 50). |
| `sort` | query | string | no | Marketplace sort order. |
| `runModel` | query | string | no | Filter by pricing model. |
| `runnableOnly` | query | boolean | no | When true, only workflows the key holder can run right now. |
## Example responses

### 200 Success

Legacy mode (no query params): owned and purchased workflows with full inputSchema.

```json
{
  "workflows": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Weekly Newsletter Draft",
      "access": "owned",
      "versionId": "ver_abc123",
      "priceUsd": null,
      "inputSchema": [
        {
          "nodeId": "input_1",
          "specId": "text",
          "name": "topic",
          "type": "text",
          "required": true,
          "placeholder": "What should the newsletter cover?"
        }
      ],
      "exampleRequest": {
        "method": "POST",
        "url": "https://api.edgaze.ai/v1/runs",
        "body": {
          "workflow": "550e8400-e29b-41d4-a716-446655440000",
          "inputs": {
            "topic": "AI trends"
          }
        }
      }
    }
  ]
}
```

### 200 Marketplace catalog

With ?scope=marketplace&offset=0

```json
{
  "workflows": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "SEO Blog Writer",
      "description": "Generate an SEO-optimized blog post from a topic.",
      "ownerHandle": "creator",
      "edgazeCode": "SEO1",
      "runModel": "per_run",
      "displayedRunPriceUsd": 2.5,
      "unlockPriceUsd": null,
      "userAccess": "wallet",
      "accessLabel": "Pay per run",
      "apiRunnableNow": true,
      "runsCount": 1240
    }
  ],
  "pagination": {
    "offset": 0,
    "limit": 24,
    "hasMore": true
  }
}
```

### 401 Unauthorized
```json
{
  "error": {
    "code": "unauthorized",
    "message": "Invalid or missing API key."
  }
}
```

### 403 Insufficient scope
```json
{
  "error": {
    "code": "insufficient_scope",
    "message": "Missing required scope: run:read"
  }
}
```

## Edge cases

### Legacy vs marketplace mode

Calling GET /workflows with no query params returns owned + purchased workflows with inputSchema. Adding scope=marketplace switches to paginated catalog metadata without full schemas.

### Legacy unlock listings

Workflows with runModel legacy_unlock appear in discovery but apiRunnableNow is false until the buyer completes a one-time unlock purchase.

### Scope requirement

Either run:read or run:execute satisfies the scope check for this endpoint.

