Skip to content

Publish, domains & rollback

Every app has two deploy targets:

  • Previewhttps://p1.exepad.com/a/preview-{app_id}/, redeployed on every completed edit (POST /v1/apps/{id}/deploy/preview forces one). Viewing requires an authenticated session — it is not a public URL.
  • Production — the public release at https://{subdomain}.exepad.app, updated only when you publish.
Terminal window
curl -X POST https://api.exepad.com/v1/apps/{id}/deploy/publish \
-H "Authorization: Bearer $EXEPAD_KEY" -d '{}'
{ "status": "publishing", "mode": "production", "published_url": "https://field-notes.exepad.app" }

Publishing snapshots the current preview configuration as an immutable release and deploys it. A subdomain is allocated automatically from the app’s alias on first publish. Poll GET /v1/apps/{id}/deploy/status until production.status: deployed (usually under two minutes), or subscribe to the app.deployed webhook.

Republish any time — each publish creates a new release version; your subdomain stays stable.

Terminal window
curl -X PUT https://api.exepad.com/v1/apps/{id}/domains \
-H "Authorization: Bearer $EXEPAD_KEY" \
-H "Content-Type: application/json" \
-d '{"subdomain": "field-notes"}'
# → { "subdomain": { "domain": "https://field-notes.exepad.app", "status": "active" } }

Labels are lowercase a–z0–9-. Fully custom domains (your own hostname) are managed from the Studio.

Terminal window
curl https://api.exepad.com/v1/apps/{id}/deployments -H "Authorization: Bearer $EXEPAD_KEY"

Each production publish appears with its id, config_version, and is_active flag. Roll back to any previous release:

Terminal window
curl -X POST https://api.exepad.com/v1/apps/{id}/rollback \
-H "Authorization: Bearer $EXEPAD_KEY" \
-H "Content-Type: application/json" \
-d '{"deployment_id": "271029f5-..."}'
# → { "status": "rolling_back", "target_version": 5, "poll": "GET /v1/apps/{id}/deploy/status" }

Rollback redeploys the selected release; it does not modify your preview/working configuration.

Terminal window
curl -X POST https://api.exepad.com/v1/apps/{id}/deploy/unpublish \
-H "Authorization: Bearer $EXEPAD_KEY" -d '{}'

Takes the production site offline immediately; the preview environment and all your configuration remain intact, so you can republish later.

Publishing is throttled at 30 deploy operations/hour per key, and accounts are subject to a publish-velocity cap on *.exepad.app as an anti-abuse measure — hitting it returns 429 with a Retry-After.