List a registry component's versions
Lists a registry component's versions, newest first by semantic version, with where each is used across the organization, or the one published as version.
Guide: Publishing
A project secret key: vh_sk_... for production, vh_sk_test_... for test. Keep it on your servers.
In: header
Path parameters
The project's id, proj_.... A secret key works only in the project it belongs to.
The registry component's id, cmp_pkg_....
Query parameters
Where the page starts: the pageInfo.endCursor of the previous page. Omit it for the first page.
How many items to return, from 1 to 100. Defaults to 50.
1 <= value <= 100Only the version published as this semantic version; the page then holds at most one.
Examples
curl -X GET "https://api.voidhash.com/api/v1/projects/proj_tz4a98xxat96iws9zmbrgj3a/registry-components/cmp_pkg_h2j7k4l9z1x6c3v8b5n0m4q7/versions?version=1.2.0" \ -H "Authorization: Bearer vh_sk_..."{ "data": [ { "id": "cmp_pkg_ver_w8e3r6t1y4u9i2o7p5a0s3d6", "registryComponentId": "cmp_pkg_h2j7k4l9z1x6c3v8b5n0m4q7", "version": "1.2.0", "number": 4, "status": "ready", "statusMessage": null, "bundleHash": "0b6d3f8a2c7e1d9b5a4f6e0c8d2b7a3f1e9c5d0a6b4f8e2d7c1a3b9f5e0d6c4a", "contentHash": "c2e7a9f4b1d6083e5f7a2c9b4d1e8f0a3c6b9d2e5f8a1b4c7d0e3f6a9b2c5d8e", "byteSize": 60488, "capabilities": [ "commerce" ], "definition": { "id": "acme/plan-picker", "version": "1.2.0", "title": "Plan picker", "description": "Selectable plans.", "icon": { "kind": "builtin", "name": "component" }, "category": "", "keywords": [ "plans", "pricing" ], "implementation": { "kind": "wasm", "abi": 2 }, "traits": { "frame": { "resize": "width" }, "appearance": {}, "effects": {} }, "children": { "kind": "none" }, "props": [ { "name": "plans", "type": { "kind": "list", "of": { "kind": "product" } }, "default": [] }, { "name": "accent", "type": { "kind": "color" }, "default": "#7c3aed" } ], "events": [ { "name": "selected", "payload": [ { "name": "productId", "type": { "kind": "string" } } ] } ], "previewStates": [ "default" ], "capabilities": [ "commerce" ], "panel": false, "fallback": "placeholder", "defaultSize": { "width": "fill", "height": "hug" } }, "manifest": { "id": "acme/plan-picker", "version": "1.2.0", "title": "Plan picker", "description": "Selectable plans.", "icon": { "kind": "builtin", "name": "component" }, "category": "", "keywords": [ "plans", "pricing" ], "implementation": { "kind": "wasm", "abi": 2 }, "traits": { "frame": { "resize": "width" }, "appearance": {}, "effects": {} }, "children": { "kind": "none" }, "props": [ { "name": "plans", "type": { "kind": "list", "of": { "kind": "product" } }, "default": [] }, { "name": "accent", "type": { "kind": "color" }, "default": "#7c3aed" } ], "events": [ { "name": "selected", "payload": [ { "name": "productId", "type": { "kind": "string" } } ] } ], "previewStates": [ "default" ], "capabilities": [ "commerce" ], "panel": false, "fallback": "placeholder", "defaultSize": { "width": "fill", "height": "hug" } }, "hasPanel": false, "hasIcon": true, "hasReadme": true, "hasAgentGuide": false, "thumbnailStates": [ "default" ], "warnings": [], "conformance": { "hasPassed": true, "checks": [ { "name": "module", "status": "pass", "errors": [], "warnings": [] }, { "name": "manifest", "status": "pass", "errors": [], "warnings": [] }, { "name": "imports", "status": "pass", "errors": [], "warnings": [] }, { "name": "exports", "status": "pass", "errors": [], "warnings": [] }, { "name": "lifecycle", "status": "pass", "errors": [], "warnings": [] }, { "name": "values", "status": "pass", "errors": [], "warnings": [] }, { "name": "tree", "status": "pass", "errors": [], "warnings": [] }, { "name": "determinism", "status": "pass", "errors": [], "warnings": [] }, { "name": "events", "status": "pass", "errors": [], "warnings": [] }, { "name": "timers", "status": "pass", "errors": [], "warnings": [] }, { "name": "layout", "status": "pass", "errors": [], "warnings": [] }, { "name": "actions", "status": "pass", "errors": [], "warnings": [] }, { "name": "frames", "status": "pass", "errors": [], "warnings": [] }, { "name": "memory", "status": "pass", "errors": [], "warnings": [] }, { "name": "golden", "status": "skip", "errors": [], "warnings": [] } ] }, "installCount": 1, "publishedPaywallCount": 2, "createdBy": "user_k3m8q1z6v9c2x5b7n4w0e8r1", "publishedAt": "2026-03-11T15:40:00.000Z" } ], "pageInfo": { "endCursor": null, "hasNextPage": false }}{ "error": { "type": "invalid_request", "code": "invalid_query", "message": "The request query is invalid: Expected a finite number\n at [\"limit\"]" }}{ "error": { "type": "unauthenticated", "code": "invalid_api_key", "message": "This secret key is not valid." }}{ "error": { "type": "permission_denied", "code": "permission_denied", "message": "Insufficient permissions." }}{ "error": { "type": "not_found", "code": "registry_component_not_found", "message": "This organization's registry has no component cmp_pkg_h2j7k4l9z1x6c3v8b5n0m4q7.", "param": "registryComponentId" }}{ "error": { "type": "internal", "code": "internal_error", "message": "Something went wrong on our side. Try again, and contact support with the Request-Id header if it keeps failing." }}Response body
application/json
application/json
application/json
application/json
application/json
application/json
Errors
| Status | type | code | When |
|---|---|---|---|
| 404 | not_found | registry_component_not_found | — |
It can also fail with the errors every operation shares, such as unauthenticated; see Errors.
More in Component registry
- Retrieve the registry publisher
GET - Claim a registry namespace
PUT - List registry components
GET - Publish a component bundle
POST - Publish a project component
POST - Retrieve a registry component
GET - Update a registry component
PATCH - Retrieve a registry component version
GET - Update a registry component version
PATCH - Retrieve a version's file
GET - Review an install
GET - List installed components
GET - Install a registry component
POST - Retrieve an install
GET - Update an install
PATCH - Uninstall a registry component
DELETE
Something wrong or missing on this page? Tell us by email or on Discord.