Volcano/ Docs

API reference

The Volcano REST API lets you manage projects, deploy functions and frontends, provision databases, and handle user authentication.

The Volcano REST API lets you manage projects, deploy functions and frontends, provision databases, and handle user authentication.

Base URL

https://api.volcano.dev

For local development:

http://localhost:8000

Authentication

All API requests require authentication. Include your token in the Authorization header:

curl "https://api.volcano.dev/projects" \
  -H "Authorization: Bearer YOUR_TOKEN"

Different endpoints require different token types:

Token typeUse forExample
Platform tokenManaging projects, deploying functions, provisioning databasesProject management API
Anon keyUser authentication (signup, signin, refresh)Auth endpoints with anon key
Access tokenAccessing user profile, invoking functions as a userUser-authenticated requests
Service keyAdmin operations, invoking functions, bypassing RLSBackend admin operations

See Authentication for details on each token type.

Request format

Send JSON data in request bodies:

curl -X POST "https://api.volcano.dev/projects" \
  -H "Authorization: Bearer $PLATFORM_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-project"}'

For file uploads (function deployment), use multipart/form-data:

curl -X POST "https://api.volcano.dev/projects/$PROJECT_ID/functions" \
  -H "Authorization: Bearer $PLATFORM_TOKEN" \
  -F "name=hello" \
  -F "runtime=nodejs24.x" \
  -F "handler=handler" \
  -F "code=@function.zip"

Response format

Success responses

Single resource:

{
  "id": "proj_abc123",
  "name": "my-project",
  "status": "active",
  "created_at": "2024-01-15T10:30:00Z",
  "updated_at": "2024-01-15T10:30:00Z"
}

Paginated list:

{
  "data": [
    { "id": "proj_abc123", "name": "project-1" },
    { "id": "proj_def456", "name": "project-2" }
  ],
  "page": 1,
  "limit": 10,
  "total": 25,
  "has_more": true,
  "next": "/projects?page=2&limit=10"
}

Error responses

{
  "error": "project not found"
}

HTTP status codes

CodeDescription
200Success
201Resource created
204Success with no response body
400Bad request — invalid parameters
401Unauthorized — missing or invalid token
403Forbidden — valid token but insufficient permissions
404Not found — resource doesn't exist
409Conflict — duplicate resource or incompatible resource state
429Too many requests — rate limited
500Internal server error

Pagination

List endpoints support pagination with page and limit parameters:

curl "https://api.volcano.dev/projects?page=2&limit=20" \
  -H "Authorization: Bearer $PLATFORM_TOKEN"
ParameterDefaultMaximumDescription
page1Page number (1-indexed)
limit10100Items per page

The response includes pagination metadata:

{
  "data": [...],
  "page": 2,
  "limit": 20,
  "total": 45,
  "has_more": true,
  "next": "/projects?page=3&limit=20"
}

Rate limiting

API requests are rate limited. Rate limit information is included in response headers:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 73
X-RateLimit-Reset: 1704128400

When you exceed the rate limit, you'll receive a 429 response:

HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
Retry-After: 60

Wait until the Retry-After period has passed before making more requests.

Function invocation responses also include:

X-Volcano-Version: <version>                  # production
X-Volcano-Version: <env>-<version>            # non-production (e.g. staging-xyz)

CLI version gating

A CLI reports its version via the X-Volcano-CLI-Version request header. The API replies with X-Volcano-CLI-Instruction (suggestion_version_upgrade / require_version_upgrade) and X-Volcano-Device-Instruction (reauth), and hard-blocks deprecated versions with 426 Upgrade Required. Requests without the header are unaffected. See CLI Version Gating.

API endpoints

Projects

MethodEndpointDescription
POST/projectsCreate a project
GET/projectsList projects
GET/projects/{id}Get a project
PATCH/projects/{id}Update project name/region policy
DELETE/projects/{id}Delete a project

See Projects for details.

Functions

MethodEndpointDescription
POST/projects/{id}/functionsDeploy a function
GET/projects/{id}/functionsList functions
GET/projects/{id}/functions/{functionId}Get a function
PATCH/projects/{id}/functions/{functionId}Update function settings (visibility)
DELETE/projects/{id}/functions/{functionId}Delete a function
POST/functions/{functionId}/invokeInvoke a function
GET/functions/resolveResolve function name to function ID
POST/projects/{id}/logs/searchSearch and filter function runtime logs
GET/projects/{id}/functions/{functionId}/deploymentsList function deployments

See Functions for details.

Frontends

MethodEndpointDescription
POST/projects/{id}/frontendsDeploy a frontend archive (subject to plan deployment limits)
GET/projects/{id}/frontendsList frontends
GET/projects/{id}/frontends/{frontendId}Get a frontend
POST/projects/{id}/frontends/{frontendId}/redeployRedeploy latest frontend artifact
DELETE/projects/{id}/frontends/{frontendId}Delete/deprovision a frontend
GET/projects/{id}/frontends/{frontendId}/deploymentsList frontend deployments
POST/projects/{id}/logs/searchSearch and filter frontend runtime and deployment logs

See Frontend Endpoints for details.

Databases

MethodEndpointDescription
POST/projects/{id}/databasesCreate a database
GET/projects/{id}/databasesList databases
GET/projects/{id}/databases/{databaseName}Get a database
DELETE/projects/{id}/databases/{databaseName}Delete a database
GET/projects/{id}/databases/{databaseName}/queriesGet top query performance from pg_stat_statements
GET/databases/regionsList available regions
GET/databases/versionsList PostgreSQL versions

See Databases for details.

Authentication

MethodEndpointDescription
POST/auth/signupCreate a new user
POST/auth/signinSign in a user
POST/auth/refreshRefresh access token
POST/auth/logoutSign out a user
GET/auth/userGet current user
PUT/auth/userUpdate current user
POST/auth/forgot-passwordRequest password reset
POST/auth/reset-passwordReset password with token

See Auth endpoints for details.

Service keys

MethodEndpointDescription
POST/projects/{id}/service-keysCreate a service key
GET/projects/{id}/service-keysList service keys
DELETE/projects/{id}/service-keys/{keyId}Delete a service key

Anon keys

MethodEndpointDescription
POST/projects/{id}/anon-keysCreate an anon key
GET/projects/{id}/anon-keysList anon keys
DELETE/projects/{id}/anon-keys/{keyId}Delete an anon key

What's next

ReferenceDescription
AuthenticationToken types and auth headers
ProjectsProject management API
FunctionsFunction deployment and invocation
DatabasesDatabase provisioning
Auth endpointsUser authentication API
ErrorsError codes and handling

On this page