---
title: "Get workflow"
method: GET
path: "/workflows/{id}"
tags: ["Workflows"]
---

# Get workflow

`GET /workflows/{id}`

## Request

- Base URL: `https://api.edgaze.ai/v1`
- URL: `https://api.edgaze.ai/v1/workflows/{id}`
- Auth: HTTP bearer

Retrieve a single workflow with its input schema, access state, pricing, version visibility, and an example run request.

## Path parameters

- `id` string, required: UUID of the workflow.

## Response `200`

Workflow detail.

- WorkflowDetail: Full workflow detail with input schema and version visibility.
  - `id` string, uuid, required
  - `name` string, required
  - `description` string, nullable, required
  - `ownerHandle` string, nullable, required
  - `edgazeCode` string, nullable, required
  - `runModel` 'free' | 'per_run', required: Pricing model for a workflow listing.
  - `displayedRunPriceUsd` number, nullable, required: Estimated run price shown to the buyer. The final price is confirmed when the run starts and may differ slightly from older catalog data. USD amount as a JSON number with up to six decimal places. Preserve the documented precision and do not round intermediate calculations to two decimal places.
  - `pricingExplanation` string, nullable, required: Human-readable note on how this listing is priced. Present whenever `displayedRunPriceUsd` is a positive estimate; explains that settlement uses the live quote at run start.
  - `userAccess` 'owned' | 'purchased' | 'wallet' | 'purchase_required', required: How the authenticated key holder can currently pay to run this workflow: `owned` (the caller is the creator), `purchased` (a prior purchase covers it), or `wallet` (it will be billed to wallet balance at run time). `purchase_required` marks legacy unlock listings that cannot be run or bought through the API — `apiRunnableNow` is false and POST /runs returns 403 `forbidden`. Purchasing is a web-only checkout flow; send the buyer to `purchaseUrl` on the workflow detail response.
  - `accessLabel` string, required
  - `apiRunnableNow` boolean, required
  - `apiAccessAllowed` boolean, required
  - `purchaseUrl` string, uri, nullable, required: Web checkout page for this workflow, or `null` when it has no public listing. Purchasing is not available through the API; send a buyer here when `userAccess` is `purchase_required`.
  - `credentialMode` 'edgaze_hosted' | 'byok', required: Whether the workflow runs on Edgaze-hosted credentials or the caller's own keys.
  - `requiredProviders` RequiredProvider[], required
  - `versionId` string, uuid, nullable, required
  - `versionLabel` string, nullable, required
  - `pinnedVersionId` string, uuid, nullable, required: Version the caller is pinned to via a prior purchase, or `null` when they follow the active version.
  - `activeVersionId` string, uuid, nullable, required: Current active version published by the workflow owner.
  - `updateAvailable` boolean, required: True when the caller is pinned to an older version than the active one. Same workflow id can execute different immutable graphs.
  - `inputCount` integer, required
  - `inputSchema` WorkflowInputField[], required
    - `nodeId` string, required: Stable key for this field. Use it as the `inputs` key when calling POST /runs — `name` is a display label and is not guaranteed unique.
    - `specId` string: Identifier of the node kind that produced this field. Informational.
    - `name` string, required: Display label for the field.
    - `description` string: Helper text explaining the field.
    - `type` 'text' | 'password' | 'number' | 'textarea' | 'url' | 'file' | 'json' | 'dropdown', required: Control type for an input field. `dropdown` is the only type that populates `options`. `password` fields are per-run credentials: encrypted at rest and deleted when the run ends. `file` and `json` expect a JSON-encoded value.
    - `required` boolean: When true, POST /runs rejects the run if this key is absent.
    - `placeholder` string: Suggested placeholder text.
    - `defaultValue` string: Pre-filled value to use when the caller supplies nothing.
    - `options` WorkflowInputOption[]: Allowed choices. Present only when `type` is `dropdown`.
      - `label` string, required: Human-readable choice shown to a person.
      - `value` string, required: Value to send in `inputs` when this choice is picked.
  - `responseShape` WorkflowRunResponseShape, required: Documentation-only shape showing what POST /runs returns for this workflow.
    - `run` object, required
      - `id` string, uuid, required
      - `status` string, required
      - `statusUrl` string, uri, required
      - `eventsUrl` string, uri, required
      - `streamUrl` string, uri, required
  - `exampleRequest` WorkflowExampleRunRequest, required: Ready-to-copy example POST /runs payload for this workflow.
    - `method` 'POST', required
    - `url` string, uri, required
    - `body` object, required
      - `workflow` string, uuid, required
      - `inputs` object, required
      - `idempotencyKey` string

## Other responses

- `400`: Missing or malformed workflow id.
- `401`: Invalid or missing API key.
- `403`: Not entitled to this workflow.
- `404`: Workflow not found.
- `500`: Unexpected server error.

---

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