The REST API gives programs and agents what the docs say, as JSON: the components, their docs as markdown, a search of the docs and the catalog of ready-made blocks. It answers the same questions as the MCP server, for any client that speaks HTTP.
https://www.audio-ui.dev/api/v1It is public and read-only: no key, no account. Answers can be read from any origin and are cached for five minutes. The whole API is described in OpenAPI 3.1 at /openapi.json, and listed at /.well-known/api-catalog.
Endpoints
Endpoints · 5
GET /api/v1GET /api/v1/componentskind keeps one kind: elements, workstation or devices.GET /api/v1/components/{name}section returns one part, such as installation or api-reference.GET /api/v1/searchq, best first, limit of them (8 by default, 20 at most).GET /api/v1/catalogq searches them, offset turns the page.Find a component, then read the part of its docs you need:
curl "https://www.audio-ui.dev/api/v1/search?q=log+scale+knob"
curl "https://www.audio-ui.dev/api/v1/components/knob?section=api-reference"Every component carries the command that installs it, such as npx shadcn@latest add @audio-ui/knob.
Errors
Every error is JSON, whatever the request accepts, with the status, a stable code, what went wrong and what to do next:
{
"error": "not_found",
"message": "There is no component named \"knobb\".",
"hint": "Did you mean knob? List the components at https://www.audio-ui.dev/api/v1/components, or search them at https://www.audio-ui.dev/api/v1/search?q=.",
"status": 404
}Error codes · 4
invalid_parameternot_foundmethod_not_allowedrate_limitedRetry-After.Rate limits
Each address may send 120 requests a minute, counted in each Cloudflare location. Every answer states the quota in a RateLimit-Policy header, from the IETF RateLimit header fields:
RateLimit-Policy: "api";q=120;w=60Past it, the API answers 429 with a RateLimit header that says nothing is left in the window, and a Retry-After header in seconds. Wait that long, then go on at a slower pace:
HTTP/1.1 429 Too Many Requests
RateLimit: "api";r=0;t=60
Retry-After: 60Versioning and deprecation
The version is in the path: /api/v1. Within a version, changes only add: new endpoints, new optional parameters, new fields in the answers. Ignore the fields you do not know. A change that could break a client, such as removing or renaming an endpoint, a parameter or a field, ships as a new version, /api/v2, and /api/v1 keeps answering beside it.
An endpoint is deprecated at least six months before it is removed. From that day:
- Its answers carry a
Deprecationheader (RFC 9745) with the date it was deprecated, and aSunsetheader (RFC 8594) with the date after which it may stop answering. - Its entry in /openapi.json is marked
deprecated. - This page says what replaces it.
Nothing is deprecated today. /api lists the versions and their status.
The registry, the markdown docs, llms.txt and the MCP server are not part of this API: they follow their own formats, the shadcn registry schema, llmstxt.org and the MCP protocol version.