VULK is callable
Build VULK projects from Claude Desktop, Cursor, ChatGPT, custom GPTs, or any OpenAPI-aware agent. Public REST API + machine-readable spec.
TL;DR
Generate an API key in your VULK settings, point your agent at https://vulk.dev/openapi.json, and call POST https://app.vulk.dev/api/v1/projects with { "prompt": "..." }. Auth is Authorization: Bearer vk_.... Cost is debited from the user’s credit balance.
OpenAPI 3.1 spec
Every public endpoint is described in a machine-readable spec at https://vulk.dev/openapi.json. Drop the URL into Claude Desktop, Cursor, ChatGPT custom GPT, or any tool that imports OpenAPI — the agent gets typed tools for every operation, with descriptions, request shapes, and error codes.
| Method | Path | Purpose |
|---|---|---|
| POST | /projects | Create a project from a prompt |
| GET | /projects | List the user’s projects |
| GET | /projects/{id} | Fetch a single project |
| GET | /projects/{id}/files | Fetch every file in a project |
| DELETE | /projects/{id} | Delete a project |
| GET | /credits/balance | Check credits before generating |
| GET | /models | List available models |
| GET | /usage | API-key usage stats |
Base URL: https://app.vulk.dev/api/v1
Generate a project from curl
curl -X POST https://app.vulk.dev/api/v1/projects \
-H "Authorization: Bearer vk_$YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "prompt": "Build a SaaS dashboard with auth + Stripe + Postgres" }'
# → 201 Created
# {
# "project": {
# "id": "8c1a2b3d-...",
# "prompt": "Build a SaaS dashboard with auth + Stripe + Postgres",
# "createdAt": "2026-05-08T..."
# }
# }Generation runs asynchronously. Poll GET /projects/{id} for status, or fetch the source tree via GET /projects/{id}/files once ready.
Claude Desktop, Cursor, Windsurf
For native tool-calling without writing HTTP code, install the VULK MCP server. The MCP client auto-exposes vulk_generate, vulk_export, and vulk_deploy as native tools.
{
"mcpServers": {
"vulk": {
"command": "npx",
"args": ["vulk-mcp-server"],
"env": {
"VULK_API_KEY": "vk_your_key_here"
}
}
}
}Drop into ~/Library/Application Support/Claude/claude_desktop_config.json (Claude Desktop) or ~/.cursor/mcp.json (Cursor). See the vulk-mcp-server npm page for the full tool list.
Keys, rate limits, and credits
- Generate keys at app.vulk.dev/settings/api-keys. Each key is scoped to a single user account and starts with
vk_. Revoke any time. - Auth header:
Authorization: Bearer vk_<key>. No query parameter, no cookie auth — Bearer only. - Rate limits are enforced via the credit ledger, not a per-second quota. Each generation debits credits based on prompt complexity and model. Check
GET /credits/balancebefore triggering a generation; you’ll get HTTP 402 if the user is out of credits. - Errors: 401 = bad key, 402 = no credits, 404 = project not owned by this key, 400 = missing prompt.
Beta — limits in effect
- 30 project creates per 5 minutes per API key. Beyond that the API returns HTTP 429 with a
Retry-Afterheader. - Floor of 25 credits checked synchronously when calling
POST /projects. Below that the API returns HTTP 402 with the current balance — the user needs to top up before retrying. modelparameter is whitelisted against the live catalog. Unknown ids return HTTP 400. CallGET /modelsfor the current set.- Treat
deploymentUrlanddeployedUrlas the same field — one or the other is set depending on which endpoint returned the project. Legacy DB artifact ( #318 ). - Never put your API key in browser code. The API has no CORS headers — keys belong server-side or in MCP-client configs only.