API
The hosted API lives at api.getdesign.app. Design endpoints require a WorkOS bearer token and your own provider keys.
Endpoint
Section titled “Endpoint”GET https://api.getdesign.app/v1/design?url=<absolute-url>Authorization: Bearer <WorkOS access token>x-daytona-api-key: <key>x-openai-api-key: <key>Accept: text/markdownExample
Section titled “Example”curl "https://api.getdesign.app/v1/design?url=https://stripe.com" \ -H "Authorization: Bearer $WORKOS_ACCESS_TOKEN" \ -H "x-daytona-api-key: $DAYTONA_API_KEY" \ -H "x-openai-api-key: $OPENAI_API_KEY" \ -H "Accept: text/markdown" \ -o stripe.design.mdQuery parameters
Section titled “Query parameters”| Name | Type | Required | Description |
|---|---|---|---|
url | string | yes | Absolute URL to extract from. Must be publicly reachable. |
format | string | no | json for a structured result; otherwise Markdown. |
siteName | string | no | Override the detected site name. Same as x-getdesign-site-name. |
format=json selects JSON. The Accept header does not.
Headers
Section titled “Headers”| Header | Required | Description |
|---|---|---|
Authorization | yes | Bearer <WorkOS access token> |
x-daytona-api-key | visual runs | Daytona key for this request |
x-openai-api-key | yes | OpenAI key for this request |
x-getdesign-mode | no | text_only skips screenshots. OpenAI is still required; Daytona is optional |
x-getdesign-site-name | no | Override the detected site name |
Response
Section titled “Response”200 OKwithContent-Type: text/markdown; charset=utf-8and the fulldesign.mdbody. Visual Markdown embeds screenshots as data URLs so a single downloaded file keeps its evidence. Viewers that block data URLs, including GitHub, should use JSON and save the companion files.200 OKwithContent-Type: application/jsonwhenformat=json. Includesmarkdown,doc,tokens,images, capture metadata, and run mode. Decode each image at its relativepath.400 Bad Requestifurlis missing or invalid.401 Unauthorizedif the WorkOS bearer token is missing or invalid.409withcode: credentials_missingif Daytona and/or OpenAI request-scoped keys are absent.409withcode: capture_failedif visual capture cannot finish. Retry withx-getdesign-mode: text_onlyif you accept degraded output.500witherror: internalif the run fails unexpectedly.
Progress stream
Section titled “Progress stream”GET /v1/design/stream?url=<absolute-url> accepts the same authentication and provider headers. It returns text/event-stream, with progress events followed by a result or error event. The result includes the full Markdown and images. Progress events do not include image bytes. It does not stream Markdown chunks.
GET /?url=<absolute-url> remains a Markdown compatibility route with the same authentication and provider requirements. GET /health is unauthenticated.
- Send
Authorization: Bearer <WorkOS access token>. There is no getdesign API key in v1. - Visual runs need
x-daytona-api-keyandx-openai-api-key. Text-only still needs the OpenAI key. Daytona is optional in that mode. - Send provider keys in headers over HTTPS, never in URLs. API credentials are request-scoped, not saved to your dashboard Account.
- V1 has no getdesign run billing. You pay Daytona and OpenAI directly; run duration and provider costs vary by site.
- Respect the target site’s terms when using the output.