All authenticated endpoints require a Bearer token in the Authorization header.
Authorization: Bearer <machine-account-token>
GET /health
GET /api/health?detailed=true
Response:
{
"status": "healthy",
"timestamp": "2026-06-12T00:00:00.000Z",
"version": "2026.1.0",
"services": {
"database": "ok",
"storage": "ok"
}
}POST /api/machine-accounts
Content-Type: application/json
{
"name": "agent-name",
"description": "Agent description"
}
Response:
{
"id": "uuid",
"name": "agent-name",
"user_id": "user-uuid",
"status": "active",
"created_at": "2026-06-12T00:00:00.000Z"
}POST /api/machine-accounts/:id/token
Content-Type: application/json
{
"expiry_days": 30
}
Response:
{
"access_token": "...",
"expires_at": "2026-07-12T00:00:00.000Z"
}POST /api/machine-accounts/:id/revoke-token
Response:
{
"success": true,
"message": "Token revoked"
}POST /api/projects
Content-Type: application/json
{
"name": "project-name",
"description": "Project description"
}
POST /api/machine-accounts/:id/projects/:project-id
Content-Type: application/json
{
"permission": "read",
"allowed_ip": ["192.168.1.0/24"],
"allowed_hours": {"start": 9, "end": 18},
"max_requests_per_minute": 60,
"expires_at": "2026-12-31T23:59:59.000Z"
}
POST /api/secrets
Content-Type: application/json
{
"name": "API_KEY",
"value": "sk-***",
"project_id": "...",
"environment": "prod"
}
GET /api/secrets/by-name/:name?project_id=...&environment=prod
Response:
{
"id": "...",
"name": "API_KEY",
"value": "decrypted-value",
"project_id": "...",
"environment": "prod"
}{
"error": "Error message",
"error_description": "Detailed error description",
"ErrorModel": {
"Message": "Error message",
"Object": "error"
}
}| Endpoint | Limit |
|---|---|
| Public API | 60 requests/minute |
| Authenticated API | 200 requests/minute |
| Login | 10 attempts/2 minutes |
| Register | 5 requests/minute |