REST API Reference
Complete API reference for deploying projects, checking status, and managing your infrastructure.
Base URL
https://api.tannur.xyzAuthentication
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.
/api/projects/{projectId}/provisionStart provisioning
/api/provisioning/{provisioningId}/statusCheck 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.
/api/projects/{projectId}/env-varsSet environment variables
/api/projects/{projectId}/env-varsGet environment variables
/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.
/api/deployments/{deploymentId}/logsGet logs
/api/deployments/{deploymentId}/logs/streamStream 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
}
}| Status | Code | Meaning |
|---|---|---|
| 400 | INVALID_* | Invalid input |
| 401 | UNAUTHORIZED | Missing/invalid token |
| 404 | NOT_FOUND | Resource not found |
| 429 | RATE_LIMITED | Too many requests |
| 500 | INTERNAL_ERROR | Server 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
