API Reference
The DesignVerse REST API lets you integrate design system sync and component generation into your own tooling, CI/CD pipelines, or automation workflows. All requests require Bearer token authentication.
Authentication
Generate an API key from your workspace settings under Settings then API Keys. Pass the key as a Bearer token in the Authorization header on every request.
Authorization: Bearer dvs_live_xxxxxxxxxxxxxxxxxxx
Keys prefixed with dvs_live_ operate on real workspaces. Keys prefixed with dvs_test_ operate on isolated test environments and do not trigger billable generation.
POST /systems
Create a new design system or update token values for an existing one. Pass a system name and a token object. If a system with the given name already exists in your workspace, its tokens are updated in place.
curl -X POST https://api.deisgnverse.com/v1/systems \
-H "Authorization: Bearer dvs_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "acme-design-system",
"framework": "react",
"tokens": {
"color.brand.500": "#4F46E5",
"spacing.md": "1rem",
"radius.base": "6px"
}
}'
{
"id": "sys_4e8b1d",
"name": "acme-design-system",
"framework": "react",
"token_count": 3,
"created_at": "2026-07-14T09:22:00Z"
}
GET /systems/:id/components
List all component definitions associated with a design system. Returns the component name, variant count, and last generation timestamp.
curl https://api.deisgnverse.com/v1/systems/sys_4e8b1d/components \
-H "Authorization: Bearer dvs_live_xxx"
{
"system_id": "sys_4e8b1d",
"components": [
{
"name": "Button",
"variant_count": 9,
"last_generated": "2026-07-14T09:31:00Z"
},
{
"name": "Input",
"variant_count": 4,
"last_generated": "2026-07-14T09:31:00Z"
}
]
}
POST /systems/:id/generate
Trigger a generation job for a design system. You can specify a list of component names to generate only those components, or omit components to regenerate everything.
curl -X POST https://api.deisgnverse.com/v1/systems/sys_4e8b1d/generate \
-H "Authorization: Bearer dvs_live_xxx" \
-H "Content-Type: application/json" \
-d '{"components": ["Button", "Input"]}'
{
"job_id": "job_9f3a2c",
"system_id": "sys_4e8b1d",
"status": "queued",
"components_queued": 2
}
GET /jobs/:id
Poll the status of a generation job. Jobs transition through queued, running, and completed (or failed). When complete, the response includes a signed download URL valid for 24 hours.
curl https://api.deisgnverse.com/v1/jobs/job_9f3a2c \
-H "Authorization: Bearer dvs_live_xxx"
{
"job_id": "job_9f3a2c",
"status": "completed",
"components_generated": 2,
"duration_ms": 1840,
"download_url": "https://cdn.deisgnverse.com/jobs/job_9f3a2c/output.zip?token=...",
"download_expires_at": "2026-07-15T09:31:00Z"
}
Error responses
All errors follow a consistent shape with an error.code string and a human-readable error.message.
{
"error": {
"code": "system_not_found",
"message": "No design system with id sys_4e8b1d in this workspace."
}
}
Common error codes: unauthorized (401), system_not_found (404), job_not_found (404), plan_limit_exceeded (402), invalid_token_format (400).
Rate limits
The Starter plan allows 60 API requests per minute. Pro allows 300. Team allows 1000. Limits are applied per workspace. Exceeded requests return 429 with a Retry-After header indicating when to retry.
Need help integrating the API? Email [email protected] or read the Quickstart to see how the CLI wraps these endpoints for local development.