Quick Deploy
The one-call deploy: create a static application, push its first deploy, and create + assign an agentless endpoint — all at once. Returns the application, the deploy, the endpoint, and the live HTTPS url. Use this for the common case; the granular endpoints exist for finer control.
Two request shapes are accepted. Send multipart/form-data with a file to deploy an uploaded .zip, or application/json with a repo_url to connect a git repo. Requires the application_hosting entitlement. Content is served as-is — upload built files with index.html at the publish-dir root (there is no build step).
Request body — upload (multipart/form-data)
name string
Required. Application name, unique within the account (1–255 chars).
file file (.zip)
Required. A
.zip of your built static site. Max size is plan-limited (default 100 MB).subdomain string
Optional. Desired subdomain for the endpoint; auto-generated when omitted.
wait boolean
Optional. When
true, block up to 90s until the build is live before responding.Request body — git (application/json)
name string
Required. Application name (1–255 chars).
repo_url string
Required. A
github.com or gitlab.com repository URL.branch string
Optional. Branch to deploy (default
main).git_token string
Optional. A GitHub PAT / GitLab token for private repos. Encrypted at rest.
subdomain string
Optional. Desired endpoint subdomain; auto-generated when omitted.
wait boolean
Optional. Block up to 90s for the first build to go live.
Response (201 Created)
application object
The created application (see Create Application).
deploy object
The first deploy, with its
status (queued…ready).endpoint object
The agentless endpoint serving the app, including
hostname / public_url.url string
The ready-to-open
https://… URL for the site.Errors
207 Multi-Status
The app + deploy succeeded but endpoint creation failed; retry endpoint creation separately.
403 Forbidden
application_hosting not on your plan, or an application/quota limit was hit.
409 Conflict
An application with that name already exists.
413 / 507
Upload exceeds the size limit (413) or object storage is not configured (507).
Request — upload
curl -X POST "https://api.ngris.com/v1/applications/quick-deploy" \
-H "X-API-KEY: <your_api_key>" \
-F "name=my-site" \
-F "file=@dist.zip" \
-F "wait=true"
Request — git
curl -X POST "https://api.ngris.com/v1/applications/quick-deploy" \
-H "X-API-KEY: <your_api_key>" \
-H "Content-Type: application/json" \
-d '{
"name": "my-site",
"repo_url": "https://github.com/acme/site",
"branch": "main"
}'
Response — 201 Created
{
"application": { "uuid": "a1b2…", "name": "my-site", "source": "upload", "type": "static" },
"deploy": { "uuid": "d3e4…", "version": 1, "trigger_type": "upload", "status": "ready" },
"endpoint": { "uuid": "e5f6…", "hostname": "my-site.ngris.app", "public_url": "my-site.ngris.app", "serving_mode": "agentless" },
"url": "https://my-site.ngris.app"
}