API
API Endpoints
Complete reference for all VULK API endpoints
API Access requires a Pro, Team, Business, or Enterprise plan. Upgrade your plan →
Overview
VULK provides a public REST API for developers to integrate AI-powered app generation into their workflows.
Base URL
https://vulk.dev/api/v1Authentication
All API requests require authentication via API key.
Getting an API Key
- Go to Settings → API Keys
- Click Create API Key
- Name your key and set permissions
- Copy the key (starts with
vk_)
Using Your Key
Include the key in the Authorization header:
curl https://vulk.dev/api/v1/projects \
-H "Authorization: Bearer vk_your_key_here"Endpoints
List Projects
GET /api/v1/projectsParameters:
| Parameter | Type | Description |
|---|---|---|
limit | integer | Max results (1-100, default: 20) |
offset | integer | Skip first N results |
Response:
{
"projects": [
{
"id": "abc-123",
"prompt": "Build a todo app",
"createdAt": "2026-01-10T12:00:00Z",
"deploymentUrl": "https://abc-123.vulk.dev",
"visibility": "private"
}
],
"pagination": { "limit": 20, "offset": 0 }
}Get Project
GET /api/v1/projects/:idResponse:
{
"project": {
"id": "abc-123",
"prompt": "Build a todo app",
"code": "// Full project code...",
"createdAt": "2026-01-10T12:00:00Z",
"updatedAt": "2026-01-10T14:30:00Z",
"deploymentUrl": "https://abc-123.vulk.dev",
"visibility": "private"
}
}Create Project
POST /api/v1/projectsBody:
{
"prompt": "Create a landing page for a SaaS product",
"model": "google/gemini-3-pro-preview",
"type": "web"
}| Field | Type | Required | Description |
|---|---|---|---|
prompt | string | Yes | Description of what to build |
model | string | No | AI model ID (default: gemini-3-flash) |
type | string | No | web, mobile-expo, mobile-flutter |
Response:
{
"project": {
"id": "xyz-789",
"prompt": "Create a landing page...",
"status": "generating",
"createdAt": "2026-01-10T12:00:00Z"
}
}Delete Project
DELETE /api/v1/projects/:idResponse:
{
"success": true,
"deletedAt": "2026-01-10T15:00:00Z"
}List Models
GET /api/v1/modelsLists all available AI models.
Response:
{
"models": [
{
"id": "google/gemini-3-flash-preview",
"name": "Gemini 3 Flash",
"provider": "Google",
"category": "free",
"contextWindow": 1048576,
"multiplier": "0.25x"
},
{
"id": "anthropic/claude-opus-4.5",
"name": "Claude Opus 4.5",
"provider": "Anthropic",
"category": "paid",
"multiplier": "5x"
}
]
}Get Usage
GET /api/v1/usageGet API usage statistics for your account.
Response:
{
"apiKeys": [
{
"id": "key-123",
"name": "Production",
"keyPrefix": "vk_prod",
"usageCount": 1520,
"lastUsedAt": "2026-01-10T12:00:00Z"
}
],
"recentUsage": [
{
"endpoint": "/api/v1/projects",
"method": "POST",
"statusCode": 201,
"createdAt": "2026-01-10T12:00:00Z"
}
],
"totalRequests": 1520
}Rate Limits
| Plan | Requests/minute | Daily Limit |
|---|---|---|
| Pro | 300 | 10,000 |
| Team | 500 | 25,000 |
| Business | 1,000 | 100,000 |
| Enterprise | Custom | Unlimited |
Free and Builder plans do not include API access. Upgrade to Pro →
When rate limited, you'll receive:
{
"error": "Rate limit exceeded",
"retryAfter": 30
}Error Responses
All errors follow this format:
{
"error": "Error message",
"code": "ERROR_CODE",
"status": 400
}| Status | Code | Description |
|---|---|---|
| 400 | BAD_REQUEST | Invalid parameters |
| 401 | UNAUTHORIZED | Invalid or missing API key |
| 403 | FORBIDDEN | Insufficient permissions |
| 404 | NOT_FOUND | Resource not found |
| 429 | RATE_LIMITED | Too many requests |
| 500 | SERVER_ERROR | Internal server error |
Webhooks (Coming Soon)
Subscribe to events like:
project.createdproject.generation.completedproject.deployed
SDKs
For easier integration, use our official SDK:
- JavaScript/TypeScript:
@vulk/sdk- View SDK Docs