Fetch a specific flow version
const url = 'https://example.com/v1/flows/example/versions/example';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/v1/flows/example/versions/example \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”FlowId — dotted namespace (acme.ingest-invoice).
Semver of the flow version.
Responses
Section titled “Responses”Flow version.
object
FlowId — dotted namespace (e.g. ingest.contract-pdf).
Semver.
The flow’s project: every version of a flow is in the one project. Absent when the runtime doesn’t record it: a pack kindgi dev serves from disk, or a runtime before Kindgi 0.1.6.
object
Handler reference for leaf nodes.
object
object
Source node id or $start sentinel.
Destination node id or $end sentinel.
Optional predicate expression evaluated at edge dispatch time (see @kindgi/flow).
object
Optional per-edge runtime policy (retry, timeoutMs, …).
object
object
The exact tool and agent versions a flow version runs: its lockfile. Set by the runtime when the version is published, never in the publish body: each tool the flow runs resolves once to its version pinned where the flow version is made (the project, then its org, then the workspace), else to its latest version then; each agent it runs at no named version resolves once to its version pinned for that project, else its latest. Every run of that flow version uses them, except that an agent step in a run whose segment path one of that agent’s release gates set on a segment covers runs the agent’s version pinned for that segment. Absent on a version published before pins existed: each run of it binds each tool’s latest version, and each agent’s version pinned for the run, else its latest.
object
Tool id → exact version.
object
Agent id → exact version, for agent nodes that name no version.
object
Set by the runtime with pins: sha256:<hex> of the pins’ canonical JSON (sorted keys, no whitespace).
Set by the runtime on an agent or flow version a deploy registered in place of the definition’s version, which was registered already with other pins or content (versions never change). Never in the publish body.
object
The version the definition names.
pins-changed: a block it uses has a new version; unpinned: the definition’s version was published before pins existed; version-taken: the definition’s version holds another definition; edited: derived from version with some data-block pins swapped: a suggested change’s version (suggestedChangeId), or an earlier hand edit’s (label, by).
For edited: a short label for the version.
For edited: who derived it (user:<id>).
For edited: the suggested change it was derived for. Such a version serves no scope until a pin makes it serve.
Present only on an unregistered version (GET …/versions/{version} reads those too). Unregister stops a version being chosen, not the pins that hold it: a new run naming it is refused, while a resumed run and a published version that pins it still run it.
Example
{ "nodes": [ { "kind": "tool" } ], "derivedFrom": { "reason": "pins-changed" }}Missing / malformed / expired / revoked bearer token.
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}No flow at that (id, version) under this workspace.
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}The database was too busy to answer in time (database-busy); Retry-After (whole seconds) says when to try again.
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}See also
GET /v1/flows/{flowId}: Fetch the latest version of a flowGET /v1/flows/{flowId}/versions: List versions of a flowPOST /v1/flows/{flowId}/versions/{version}/unregister: Unregister a specific flow versionPOST /v1/flows/{flowId}/versions/{version}/reinstate: Reinstate a specific tombstoned flow version- Error code
database-busy - Every error code