Required scope: deployments:read (read), deployments:write (mutations)
Trigger a deployment
POST /v1/servers/:serverId/deploy
Start a new deployment by providing an OCI image URI.
Request body:
{
"imageUri": "registry.fly.io/my-project/my-server:latest"
}
| Field | Type | Required | Description |
|---|
imageUri | string | ✓ | OCI image URI to deploy |
Response 201: Deployment created and pipeline complete.
{
"data": {
"id": "dep_qrs456",
"serverId": "srv_xyz789",
"status": "running",
"imageUri": "registry.fly.io/my-project/my-server:latest",
"version": 1,
"trivyScanResult": null,
"createdAt": "2026-01-15T12:00:00Z",
"deployedAt": "2026-01-15T12:03:15Z"
}
}
Deployment statuses:
| Status | Description |
|---|
pending | Queued, not yet started |
building | Image is being built or scanned |
running | Successfully deployed and serving traffic |
failed | Deploy failed (see errorMessage) |
rolled_back | Superseded by a rollback |
List deployments
GET /v1/servers/:serverId/deployments
Returns deployment history, newest first.
Query parameters: Standard pagination (limit, cursor)
Response 200:
{
"data": [
{
"id": "dep_qrs456",
"status": "running",
"imageUri": "registry.fly.io/my-project/my-server:latest",
"version": 1,
"trivyScanResult": {
"critical": 0,
"high": 0,
"medium": 2
},
"createdAt": "2026-01-15T12:00:00Z",
"deployedAt": "2026-01-15T12:03:15Z"
}
],
"meta": { "cursor": null, "hasMore": false, "total": 1 }
}
Roll back
POST /v1/servers/:serverId/rollback
Redeploy a previous version by version number. Up to 10 historical deployments are kept (3 on the Free tier).
Request body:
| Field | Type | Required | Description |
|---|
version | integer | ✓ | Version number of the deployment to roll back to |
Response 201: New deployment object (type: rollback).
Stream logs
GET /v1/servers/:serverId/logs
Coming soon. This endpoint is planned but not yet implemented. It currently returns 501 Not Implemented.
Returns a Server-Sent Events (SSE) stream of real-time server logs.
Query parameters:
| Parameter | Description |
|---|
level | Filter by level: debug, info, warn, error |
since | ISO 8601 timestamp; return logs after this time |
limit | Number of historical lines to return before streaming |
Response: Content-Type: text/event-stream
data: {"level":"info","message":"MCP server listening on port 8080","timestamp":"2026-01-15T12:00:00Z"}
data: {"level":"info","message":"Tool called: get_weather","timestamp":"2026-01-15T12:00:01Z"}
Required scope: logs:read