Tannur

REST API Reference

Complete API reference for deploying projects, checking status, and managing your infrastructure.

Base URL

https://api.tannur.xyz

Authentication

All requests require Bearer token authentication in the Authorization header.

Authorization: Bearer YOUR_API_TOKEN

Generate tokens from Settings → API Tokens in the dashboard.

Provisioning API

Deploy and monitor your projects using these endpoints.

POST
/api/projects/{projectId}/provision

Start provisioning

GET
/api/provisioning/{provisioningId}/status

Check status

POST /api/projects/{projectId}/provision

Start provisioning. Returns 202 with provisioning ID.

Request

{
  "projectSlug": "my-app",
  "buildCommand": "npm run build",
  "installCommand": "npm install",
  "startCommand": "npm start"
}

Response 202

{
  "status": "provisioning_in_progress",
  "provisioningId": "pvn_abc123",
  "statusCheckUrl": "/api/provisioning/pvn_abc123/status",
  "estimatedCompletionTime": 180000
}

GET /api/provisioning/{provisioningId}/status

Check deployment progress. Poll every 2 seconds.

In Progress

{
  "status": "provisioning_in_progress",
  "currentStep": "project_creation",
  "progressPercentage": 33,
  "estimatedTimeRemaining": 120000
}

Complete

{
  "status": "provisioning_complete",
  "url": "https://my-app.tannur.xyz",
  "deploymentId": "dpl_tannur_xyz",
  "totalDurationMs": 180000
}

Project Management

Manage environment variables and project settings.

POST
/api/projects/{projectId}/env-vars

Set environment variables

GET
/api/projects/{projectId}/env-vars

Get environment variables

DELETE
/api/projects/{projectId}/env-vars/{key}

Delete variable

POST /api/projects/{projectId}/env-vars

Set environment variables for your project.

{
  "DATABASE_URL": "postgresql://...",
  "API_KEY": "sk_...",
  "DEBUG": "false"
}

Logs API

Access and stream deployment logs in real-time.

GET
/api/deployments/{deploymentId}/logs

Get logs

GET
/api/deployments/{deploymentId}/logs/stream

Stream logs (SSE)

GET /api/deployments/{deploymentId}/logs/stream

Stream logs using Server-Sent Events. Perfect for real-time monitoring.

Error Handling

All errors follow a consistent format:

{
  "error": {
    "code": "INVALID_SLUG_FORMAT",
    "message": "Project slug must be 2-63 chars, kebab-case",
    "status": 400
  }
}
StatusCodeMeaning
400INVALID_*Invalid input
401UNAUTHORIZEDMissing/invalid token
404NOT_FOUNDResource not found
429RATE_LIMITEDToo many requests
500INTERNAL_ERRORServer error

Rate Limiting

Free tier: 60 requests/minute globally, 30 POST requests/minute per endpoint.

Check response headers for limits:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1722973200
Ctrl+I