RESTful API for managing projects, services, databases, and deployments programmatically.
https://api.raidframe.com/v1
All API requests require a Bearer token:
curl https://api.raidframe.com/v1/projects \
-H "Authorization: Bearer rf_tok_your_token_here"
Create tokens with the CLI:
rf auth token create --name "API Access" --scope full
| Plan | Requests/min | Burst |
|---|---|---|
| Starter | 60 | 100 |
| Pro | 300 | 500 |
| Enterprise | 1000 | 2000 |
Rate limit headers are included in every response:
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 298
X-RateLimit-Reset: 1710600000
List endpoints return paginated results:
GET /v1/projects?page=1&per_page=20
Response includes pagination metadata:
{
"data": [...],
"pagination": {
"page": 1,
"per_page": 20,
"total": 42,
"total_pages": 3
}
}
Errors follow a consistent format:
{
"error": {
"code": "not_found",
"message": "Service 'web' not found in project 'my-app'",
"request_id": "req_abc123"
}
}
| HTTP Status | Meaning |
|---|---|
| 200 | Success |
| 201 | Created |
| 204 | Deleted (no content) |
| 400 | Bad request (invalid parameters) |
| 401 | Unauthorized (invalid/missing token) |
| 403 | Forbidden (insufficient permissions) |
| 404 | Not found |
| 409 | Conflict (resource already exists) |
| 422 | Validation error |
| 429 | Rate limited |
| 500 | Internal server error |
GET /v1/projects List projects
POST /v1/projects Create project
GET /v1/projects/:id Get project
PATCH /v1/projects/:id Update project
DELETE /v1/projects/:id Delete project
GET /v1/projects/:id/services List services
POST /v1/projects/:id/services Create service
GET /v1/projects/:id/services/:name Get service
PATCH /v1/projects/:id/services/:name Update service
DELETE /v1/projects/:id/services/:name Delete service
POST /v1/projects/:id/services/:name/restart Restart
POST /v1/projects/:id/services/:name/scale Scale
GET /v1/projects/:id/deployments List deployments
POST /v1/projects/:id/deployments Trigger deploy
GET /v1/projects/:id/deployments/:dep_id Get deployment
POST /v1/projects/:id/deployments/rollback Rollback
POST /v1/projects/:id/deployments/:dep_id/promote Promote
POST /v1/projects/:id/deployments/:dep_id/cancel Cancel
GET /v1/projects/:id/databases List databases
POST /v1/projects/:id/databases Create database
GET /v1/projects/:id/databases/:name Get database
PATCH /v1/projects/:id/databases/:name Update database
DELETE /v1/projects/:id/databases/:name Delete database
POST /v1/projects/:id/databases/:name/backup Create backup
GET /v1/projects/:id/databases/:name/backups List backups
POST /v1/projects/:id/databases/:name/restore Restore backup
POST /v1/projects/:id/databases/:name/branch Create branch
GET /v1/projects/:id/databases/:name/branches List branches
GET /v1/projects/:id/databases/:name/insights Query insights
GET /v1/projects/:id/env List variables
PUT /v1/projects/:id/env Set variables (bulk)
GET /v1/projects/:id/env/:key Get variable
DELETE /v1/projects/:id/env/:key Delete variable
GET /v1/projects/:id/domains List domains
POST /v1/projects/:id/domains Add domain
DELETE /v1/projects/:id/domains/:domain Remove domain
GET /v1/projects/:id/domains/:domain/verify Verify DNS/SSL
GET /v1/projects/:id/logs Query logs
GET /v1/projects/:id/logs/stream Stream logs (SSE)
GET /v1/projects/:id/metrics Get metrics
GET /v1/projects/:id/metrics/:metric Get specific metric
GET /v1/projects/:id/cron List cron jobs
POST /v1/projects/:id/cron Create cron job
DELETE /v1/projects/:id/cron/:name Delete cron job
POST /v1/projects/:id/cron/:name/run Trigger run
GET /v1/projects/:id/cron/:name/runs List runs
GET /v1/projects/:id/alerts List alerts
POST /v1/projects/:id/alerts Create alert
PATCH /v1/projects/:id/alerts/:alert_id Update alert
DELETE /v1/projects/:id/alerts/:alert_id Delete alert
GET /v1/projects/:id/alerts/:alert_id/history Alert history
Receive notifications for events in your project:
POST /v1/projects/:id/webhooks Create webhook
GET /v1/projects/:id/webhooks List webhooks
DELETE /v1/projects/:id/webhooks/:webhook_id Delete webhook
deployment.started
deployment.succeeded
deployment.failed
deployment.rolled_back
service.scaled
service.crashed
alert.firing
alert.resolved
database.backup.completed
cron.run.completed
cron.run.failed
Every webhook request includes a signature header:
X-RaidFrame-Signature: sha256=abc123...
Verify with your webhook secret:
import crypto from "crypto";
function verifyWebhook(body, signature, secret) {
const expected = crypto
.createHmac("sha256", secret)
.update(body)
.digest("hex");
return `sha256=${expected}` === signature;
}
Official client libraries wrap this API:
npm install @raidframe/sdkpip install raidframego get github.com/raidframe/sdk-goSee Node.js SDK, Python SDK, Go SDK for usage.