Projects
Group deployments under a project. One project per repo, in most cases.
A project is a long-lived collection of deployments. It owns the production alias, the env vars, and the team membership.
Create a project
POST /v1/projectsname string body required Slug-like identifier, lowercase, dashes allowed. Used in default deployment URLs.
framework string body Auto-detected from the repo if linked. One of next, astro, remix, sveltekit, static, node, go, python, custom.
repo object body { provider, owner, name, branch }. Optional — projects can be deployed CLI-only.
Response
id string Project identifier, e.g. prj_abc123.
default_url string Stable preview URL: <name>.halo.app.
halo.json
The repo-level config that controls how your project builds. Lives at the repo root.
framework string Override auto-detection.
build string Build command. Default: framework-specific.
output string Build output directory. Default: framework-specific.
regions string[] IATA-style codes for which POPs to run edge functions in. Default: all.
env object Build-time env vars. Runtime vars belong in halo env.
curl https://api.halo.app/v1/projects \
-H "Authorization: Bearer $HALO_TOKEN" \
-d '{
"name": "my-app",
"framework": "next",
"repo": { "provider": "github", "owner": "example", "name": "my-app", "branch": "main" }
}'Update
PATCH /v1/projects/{id}Updatable: name, framework, regions, repo.branch.