The version in use for a project
const url = 'https://example.com/v1/tools/example/pinned';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/tools/example/pinned \ --header 'Authorization: Bearer <token>'Resolves the version in use for a project (or an org, or the whole workspace): the most specific pin covering it (the project, its org, then the workspace) whose version is still active, else the newest active version, the one a flow version made now would lock its tool step to. via says which; pinnedScope names the pin that matched.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”ToolId — dotted namespace (acme.lookup-order).
Query Parameters
Section titled “Query Parameters”The project to resolve for; omit → only the org’s pin (with orgId) and the workspace-wide pin apply.
The project’s org, when it has one. A runtime may look it up from projectId itself.
Responses
Section titled “Responses”The version in use.
object
The flow or tool.
The version in use there (semver): what a run that names no flow version takes, or what the next agent or flow version made there locks for a tool.
A pin chose it, or nothing is pinned on the way up and it is the newest version (for a flow, the newest the project reaches; for a tool, the newest active one).
Example
{ "via": "pinned", "pinnedScope": { "kind": "tenant" }}A malformed project or org id.
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" }}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" }}tool-not-found: no tool with that id, or no version of it for that project.
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/tools/{toolId}: Fetch a tool manifest (latest active version)GET /v1/tools/{toolId}/versions: List all versions of a toolGET /v1/tools/{toolId}/versions/{version}: Fetch a specific tool versionPOST /v1/tools/{toolId}/versions/{version}/unregister: Unregister a specific tool version- Error code
database-busy - Error code
tool-not-found - Every error code