Deployments
Publish your project to production and track the rollout.
Deployments build your project and publish it to its production URL. Deploying is asynchronous — start the deploy, then poll for status. All endpoints require the api-key header.
#Deploy to Production
/api/v1/vcaas/projects/:projectId/deployments/deployUses creditsBuild and deploy your project to a production URL. This endpoint is asynchronous — it returns immediately with status "deploying" and the deployment continues in the background for 2 to 5 minutes.
Poll GET /projects/:projectId/deployments/status every 10–15 seconds until status is "success", then read the public URL from GET /projects/:projectId → productionProjectUrl. If the server is not active, it auto-starts (charging extra START_SERVER credits) and returns SERVER_NOT_READY; poll GET /projects/:projectId until agentServerStatus is "Active", then retry.
Path parameters
| Parameter | Type | Description |
|---|---|---|
projectId | string | The project ID |
Response fields
| Field | Type | Description |
|---|---|---|
data.projectId | string | The project ID |
data.status | string | Always "deploying" on success |
data.message | string | Instructions on how to poll for status |
Example request
curl -X POST -H "api-key: tlm_sk_your_key" \
https://api-accounts.totalum.app/api/v1/vcaas/projects/my-app/deployments/deploy{
"errors": null,
"data": {
"projectId": "my-app",
"status": "deploying",
"message": "Deployment started. It will take from 2 to 5 minutes. Fetch GET .../deployments/status every 10-15 seconds to track progress."
}
}{
"errors": {
"errorCode": "DEPLOYMENT_RUNNING",
"errorMessage": "A deployment is already in progress"
},
"data": null
}Error codes
| Code | HTTP | Meaning |
|---|---|---|
MISSING_PROJECT_ID | 400 | projectId is required |
PROJECT_NOT_FOUND | 404 | Project does not exist or you don't own it |
AGENT_RUNNING | 409 | Cannot deploy while agent is running |
DEPLOYMENT_RUNNING | 409 | A deployment is already in progress |
RECOVERY_RUNNING | 409 | A version recovery is in progress |
SERVER_NOT_READY | 409 | Server auto-starting, poll until Active then retry |
INSUFFICIENT_CREDITS | 402 | Not enough credits for deployment |
#Get Deployment Status
/api/v1/vcaas/projects/:projectId/deployments/statusFreeCheck the current deployment status. Poll until status is "success".
Path parameters
| Parameter | Type | Description |
|---|---|---|
projectId | string | The project ID |
Response fields
| Field | Type | Description |
|---|---|---|
data.status | string | null | "deploying" | "success" | "error" | null (if never deployed) |
data.createdAt | string | null | ISO 8601 deployment date |
data.versionId | string | undefined | Version that was deployed |
Example request
curl -H "api-key: tlm_sk_your_key" \
https://api-accounts.totalum.app/api/v1/vcaas/projects/my-app/deployments/status{
"errors": null,
"data": {
"status": "success",
"createdAt": "2026-03-11T11:00:00.000Z",
"versionId": "v_abc123"
}
}{
"errors": {
"errorCode": "PROJECT_NOT_FOUND",
"errorMessage": "Project does not exist or you don't own it"
},
"data": null
}Error codes
| Code | HTTP | Meaning |
|---|---|---|
MISSING_PROJECT_ID | 400 | projectId is required |
PROJECT_NOT_FOUND | 404 | Project does not exist or you don't own it |
