Hanzo AI

Project

Where your sites live: create one, deploy a build, roll back to any release.

Also for this capability: API · CLI · MCP · SDKs

Where your sites live: create one, deploy a build, roll back to any release.

Base URLhttps://api.hanzo.ai
Operations57
AuthAuthorization: Bearer $HANZO_API_KEY

Specification

Specification pending — no HIP in hanzoai/hips declares capability: project yet. What this capability serves is below, from the API document; what it is — the store it owns, how it meters, what it publishes — is written as a HIP under HIP-0139.

Four surfaces

SurfaceReaches this capability asCoverage
RESTproject at its own prefix57 operations
CLIhanzo project …57 of 57
SDKProjectApi in every published client28 of 57 — the clients are generated at their own release
MCPtool projects on https://api.hanzo.ai/v1/mcp48 operations, 1 under the document's own id — ask describe for the rest

Quickstart

export HANZO_API_KEY=sk-...   # console.hanzo.ai → API keys

Then the first call — a read that needs nothing but the key. GET /v1/project, operation get_project:

hanzo project list

Answers 200 with project.projectsProject[] — ok.

Endpoints

EndpointWhat it does
POST /v1/project/{slug}/deployUpload a built site as one archive and serve it
POST /v1/project/{slug}/deployments/{id}/completeCompleteDeployment is the CI completion hook that flips a queued git deployment to live (or error) once CI has synced the built site to S3.
GET /v1/project/{slug}/deployments/{id}Returns one deployment of a project by id.
GET /v1/project/{slug}/deploymentsReturns a project's deploy history, newest version first.
POST /v1/project/{slug}/deploymentsOpens a deployment and hands back a short-lived, prefix-scoped grant to write its bytes straight to object storage.
POST /v1/project/{slug}/domains/{host}/verifyChecks the DNS challenge for a pending custom hostname and, when it passes, promotes the host so it begins routing at the edge.
DELETE /v1/project/{slug}/domains/{host}Gives a custom hostname back, so the name is free to reuse.
GET /v1/project/{slug}/domainsReturns every custom hostname this site holds: the live ones, plus any pending claim with the DNS records it still owes.
POST /v1/project/{slug}/domainsAttaches one or more CUSTOM public hostnames to this org's site.
POST /v1/project/{slug}/publishPromotes a build output into a new release AND goes live with it — create+activate in one call, which is the 99% path.
POST /v1/project/{slug}/purgeFlushes the site's edge cache without redeploying anything.
POST /v1/project/{slug}/releases/{release}/activatePoints the site at an existing release — the go-live, and equally the ROLLBACK.
GET /v1/project/{slug}/releasesReturns a site's releases newest-first, marking the active one — the rollback menu.
POST /v1/project/{slug}/releasesPromotes a build output into a new immutable release WITHOUT serving it — the staged half of publishing, for when you want to check a release before…
GET /v1/project/{slug}/shotGet a PNG of the project's live site
PUT /v1/project/{slug}/starBookmarks a project for the person calling, and answers whether it is starred afterwards.
DELETE /v1/project/{slug}/starRemoves the caller's own bookmark from a project, and answers whether it is starred afterwards.
GET /v1/project/{slug}Returns one project of yours by slug — its settings, its live URL and the deployment currently serving it.
PATCH /v1/project/{slug}Changes a project's settings, and only the settings you send.
DELETE /v1/project/{slug}Deletes a project and takes its site off the internet.
GET /v1/project/edgehealth reports whether a publish reaches readers, rather than whether it was accepted.
POST /v1/project/forkCreates a project seeded from a PUBLISHED EXAMPLE — either a starter-kit template from the ONE embedded gallery catalog, or any live project on the…
GET /v1/project/sites/{slug}Returns one site — the same row ListSites carries, for one slug.
POST /v1/project/sites/deployDeploys a caller-supplied file manifest — the deploy_site capability an agent calls — and answers with where it went live.
GET /v1/project/sitesReturns the org's deployed sites at the pretty URLs they serve at.
POST /v1/project/sitesGenerates a self-contained, mobile-responsive static site from a natural-language brief and deploys it live in one call.
GET /v1/project/tagsThe site's browser tag set for the hosted tag — which pixels to inject, by publishable key
GET /v1/projectReturns every project your org owns.
POST /v1/projectCreates a project — the handle a site is deployed and served under — and answers 201 with it in draft.
POST /v1/projects/{slug}/deployUpload a built site as one archive and serve it
POST /v1/projects/{slug}/deployments/{id}/completeCompleteDeployment is the CI completion hook that flips a queued git deployment to live (or error) once CI has synced the built site to S3.
GET /v1/projects/{slug}/deployments/{id}Returns one deployment of a project by id.
GET /v1/projects/{slug}/deploymentsReturns a project's deploy history, newest version first.
POST /v1/projects/{slug}/deploymentsOpens a deployment and hands back a short-lived, prefix-scoped grant to write its bytes straight to object storage.
POST /v1/projects/{slug}/domains/{host}/verifyChecks the DNS challenge for a pending custom hostname and, when it passes, promotes the host so it begins routing at the edge.
DELETE /v1/projects/{slug}/domains/{host}Gives a custom hostname back, so the name is free to reuse.
GET /v1/projects/{slug}/domainsReturns every custom hostname this site holds: the live ones, plus any pending claim with the DNS records it still owes.
POST /v1/projects/{slug}/domainsAttaches one or more CUSTOM public hostnames to this org's site.
POST /v1/projects/{slug}/publishPromotes a build output into a new release AND goes live with it — create+activate in one call, which is the 99% path.
POST /v1/projects/{slug}/purgeFlushes the site's edge cache without redeploying anything.
POST /v1/projects/{slug}/releases/{release}/activatePoints the site at an existing release — the go-live, and equally the ROLLBACK.
GET /v1/projects/{slug}/releasesReturns a site's releases newest-first, marking the active one — the rollback menu.
POST /v1/projects/{slug}/releasesPromotes a build output into a new immutable release WITHOUT serving it — the staged half of publishing, for when you want to check a release before…
GET /v1/projects/{slug}/shotGet a PNG of the project's live site
PUT /v1/projects/{slug}/starBookmarks a project for the person calling, and answers whether it is starred afterwards.
DELETE /v1/projects/{slug}/starRemoves the caller's own bookmark from a project, and answers whether it is starred afterwards.
GET /v1/projects/{slug}Returns one project of yours by slug — its settings, its live URL and the deployment currently serving it.
PATCH /v1/projects/{slug}Changes a project's settings, and only the settings you send.
DELETE /v1/projects/{slug}Deletes a project and takes its site off the internet.
GET /v1/projects/edgehealth reports whether a publish reaches readers, rather than whether it was accepted.
POST /v1/projects/forkCreates a project seeded from a PUBLISHED EXAMPLE — either a starter-kit template from the ONE embedded gallery catalog, or any live project on the…
GET /v1/projects/sites/{slug}Returns one site — the same row ListSites carries, for one slug.
POST /v1/projects/sites/deployDeploys a caller-supplied file manifest — the deploy_site capability an agent calls — and answers with where it went live.
GET /v1/projects/sitesReturns the org's deployed sites at the pretty URLs they serve at.
POST /v1/projects/sitesGenerates a self-contained, mobile-responsive static site from a natural-language brief and deploys it live in one call.
GET /v1/projectsReturns every project your org owns.
POST /v1/projectsCreates a project — the handle a site is deployed and served under — and answers 201 with it in draft.

All Hanzo APIs · Interactive reference

How is this guide?