Deploys
Deploy history, manual deploys, source uploads (ferry up), cancellation and build logs.
/api/v1/services/{id}/deploysNewest first.
An API token: one created in the dashboard or by ferry login, or the server token stored in <data-dir>/api_token. GET requests may send it as ?access_token= instead.
In: header
Path Parameters
Service id or name.
Query Parameters
Maximum number of entries (default 20, clamped to 1..=500).
int320 <= valueResponse Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/services/string/deploys" \ -H "Authorization: Bearer $FERRY_TOKEN"[ { "commit_message": "string", "commit_sha": "string", "created_at": "2019-08-24T14:15:22Z", "error": "string", "finished_at": "2019-08-24T14:15:22Z", "id": "string", "image": "string", "port": 0, "service_id": "string", "source": { "branch": "string", "commit": "string", "kind": "git", "repo_url": "string" }, "started_at": "2019-08-24T14:15:22Z", "status": "queued", "trigger": "create" }]/api/v1/services/{id}/deploysQueues a manual deploy of the configured source: the branch head (or commit) of the repository, or the image. An empty body deploys with the defaults.
An API token: one created in the dashboard or by ferry login, or the server token stored in <data-dir>/api_token. GET requests may send it as ?access_token= instead.
In: header
Path Parameters
Service id or name.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
POST /api/v1/services/{id}/deploys
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/services/string/deploys" \ -H "Authorization: Bearer $FERRY_TOKEN" \ -H "Content-Type: application/json" \ -d '{}'{ "commit_message": "string", "commit_sha": "string", "created_at": "2019-08-24T14:15:22Z", "error": "string", "finished_at": "2019-08-24T14:15:22Z", "id": "string", "image": "string", "port": 0, "service_id": "string", "source": { "branch": "string", "commit": "string", "kind": "git", "repo_url": "string" }, "started_at": "2019-08-24T14:15:22Z", "status": "queued", "trigger": "create"}/api/v1/services/{id}/deploys/uploadDeploys a .tar.gz of the source tree (what ferry up sends) to a service without a repository or image; the deploy has trigger upload and an archive source.
An API token: one created in the dashboard or by ferry login, or the server token stored in <data-dir>/api_token. GET requests may send it as ?access_token= instead.
In: header
Path Parameters
Service id or name.
Query Parameters
Build without the build cache.
Request Body
application/gzip
The raw gzip-compressed tar archive (at most 512 MiB).
TypeScript Definitions
Use the request body type in TypeScript.
A gzip-compressed tar archive of the source tree (.tar.gz, at most 512 MiB).
binaryResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/services/string/deploys/upload" \ -H "Authorization: Bearer $FERRY_TOKEN" \ -H "Content-Type: application/gzip" \ -d 'string'{ "commit_message": "string", "commit_sha": "string", "created_at": "2019-08-24T14:15:22Z", "error": "string", "finished_at": "2019-08-24T14:15:22Z", "id": "string", "image": "string", "port": 0, "service_id": "string", "source": { "branch": "string", "commit": "string", "kind": "git", "repo_url": "string" }, "started_at": "2019-08-24T14:15:22Z", "status": "queued", "trigger": "create"}/api/v1/deploys/{deploy_id}An API token: one created in the dashboard or by ferry login, or the server token stored in <data-dir>/api_token. GET requests may send it as ?access_token= instead.
In: header
Path Parameters
Deploy id.
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/deploys/string" \ -H "Authorization: Bearer $FERRY_TOKEN"{ "commit_message": "string", "commit_sha": "string", "created_at": "2019-08-24T14:15:22Z", "error": "string", "finished_at": "2019-08-24T14:15:22Z", "id": "string", "image": "string", "port": 0, "service_id": "string", "source": { "branch": "string", "commit": "string", "kind": "git", "repo_url": "string" }, "started_at": "2019-08-24T14:15:22Z", "status": "queued", "trigger": "create"}/api/v1/deploys/{deploy_id}/cancelStops a queued or running deploy (status canceled); the live deploy keeps serving.
An API token: one created in the dashboard or by ferry login, or the server token stored in <data-dir>/api_token. GET requests may send it as ?access_token= instead.
In: header
Path Parameters
Deploy id.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/deploys/string/cancel" \ -H "Authorization: Bearer $FERRY_TOKEN"{ "commit_message": "string", "commit_sha": "string", "created_at": "2019-08-24T14:15:22Z", "error": "string", "finished_at": "2019-08-24T14:15:22Z", "id": "string", "image": "string", "port": 0, "service_id": "string", "source": { "branch": "string", "commit": "string", "kind": "git", "repo_url": "string" }, "started_at": "2019-08-24T14:15:22Z", "status": "queued", "trigger": "create"}/api/v1/deploys/{deploy_id}/logsAn API token: one created in the dashboard or by ferry login, or the server token stored in <data-dir>/api_token. GET requests may send it as ?access_token= instead.
In: header
Path Parameters
Deploy id.
Query Parameters
Keep streaming new lines until the deploy or job finishes (instead of only the stored log).
Response Body
text/event-stream
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/deploys/string/logs" \ -H "Authorization: Bearer $FERRY_TOKEN""event: log\ndata: {\"ts\":\"2026-01-01T12:00:00Z\",\"stream\":\"system\",\"line\":\"==> Build succeeded\"}\n\nevent: end\ndata: \n\n"Services
Web services, private services, background workers, static sites and cron jobs: CRUD, lifecycle actions (restart, suspend, resume, scale, rollback), status and runtime logs.
Environment variables
A service's own environment variables. ?restart=true restarts the live service when its effective environment changed.