Skip to content

Frontend API

MethodPathPurpose
POST/v1/{app_id}/frontend/deploymentsCreate a deployment
POST/v1/{app_id}/frontend/deployments/{id}/startStart a deployment
GET/v1/{app_id}/frontend/deploymentsList deployment history
GET/v1/{app_id}/frontend/deployments/{id}Get deployment details
POST/v1/{app_id}/frontend/deployments/{id}/syncForce-sync status
POST/v1/{app_id}/frontend/deployments/{id}/cancelCancel deployment
DELETE/v1/{app_id}/frontend/deployments/{id}Delete a deployment
PUT/v1/{app_id}/frontend/envSet environment variables
GET/v1/{app_id}/frontend/envList environment variable keys
POST /v1/{app_id}/frontend/deployments
Authorization: Bearer {token}
{
"framework": "react-vite"
}

Response:

{
"id": "deployment-uuid",
"uploadUrl": "https://...",
"expiresIn": 900,
"maxSizeBytes": 104857600
}
FrameworkValue
React (Vite)react-vite
Next.js (static)nextjs-static
Static HTMLstatic
Otherother

Upload zip:

Terminal window
curl -X PUT "{uploadUrl}" \
-H "Content-Type: application/zip" \
--data-binary @frontend.zip

Start deployment:

POST /v1/{app_id}/frontend/deployments/{id}/start
StatusMeaning
WAITINGCreated, awaiting upload
UPLOADINGProcessing
BUILDINGBuilding
READYSucceeded
ERRORFailed
CANCELEDCanceled
PUT /v1/{app_id}/frontend/env
{
"VITE_API_URL": "https://api.butterbase.ai/v1/app_abc123",
"NEXT_PUBLIC_API_KEY": "pk_test_123"
}

Values are encrypted at rest. Only keys are returned when listing.

LimitValue
Max size100 MB (compressed)
Upload expiration15 minutes
Free plan1 active deployment
Pro planUnlimited