Halo v1 is live — read the launch notes.

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

http
POST /v1/projects
name 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.

Request example
bash
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

http
PATCH /v1/projects/{id}

Updatable: name, framework, regions, repo.branch.

Last updated Edit this page
↑↓ navigate open esc close