List projects

Returns every project your org owns.

GET /v1/projects

Addresshttps://api.hanzo.ai/v1/projects
MethodGET
Operationget_projects
AuthAuthorization: Bearer $HANZO_API_KEY

Returns every project your org owns.

Each row carries the slug, name, framework, visibility, status and live URL — the same rows console and the builder render, because there is only one store behind both. It requires a validated principal (401 without one) and is keyed by that principal's org, so it never contains another tenant's project.

Request

GET /v1/projects takes no parameters and no body — the credential is the whole request.

Response

StatusBodyMeaning
200project.projectsProject[]ok
defaultproblem-detailsrefused

200 body — 32 fields.

FieldInTypeAlwaysDescription
[].analyticsbodyboolean—Analytics is whether the web-analytics beacon is injected into this site's pages.
[].bucketbodystring—Bucket is the object-store bucket the site's files are served out of.
[].cacheControlbodystring—CacheControl is the Cache-Control policy the edge serves this site's HTML under — how long a reader may hold a stale page before asking again.
[].createdAtbodyinteger (int64)—CreatedAt is when the project was created, as Unix seconds.
[].currentDeploymentIdbodystring—CurrentDeploymentID names the deployment currently serving, so a caller can ask what is live without scanning the history.
[].descriptionbodystring—Description is the one-line summary, which is copied onto forks of this project and shown on a gallery card.
[].dropLocalbodyboolean—DropLocal is whether events a developer's own machine sends (localhost, 127.0.0.1, *.local) are dropped at ingest.
[].forkedFrombodystring—ForkedFrom is the parent this project was forked from ("<org>/<slug>" of a published project, or a catalog template slug) — the attribution edge a gallery credits.
[].frameworkbodystring—Framework is a BUILD HINT from a closed set, defaulting to static.
[].hiddenbodyboolean—Hidden is PLATFORM MODERATION, and it is a different axis from visibility: it pulls a public project out of the catalogue without editing the publisher's own choice, so un-hiding restores exactly what they asked for.
[].hiddenReasonbodystring—HiddenReason is why moderation hid it.
[].idbodystring—ID is the project's internal identifier.
[].internalNetworksbodystring[]—InternalNetworks are the site's own addresses, as CIDRs ("203.0.113.0/24").
[].keybodystring—Key is the project's publishable ingest key, minted at create.
[].lastPurgeAtbodyinteger (int64)—LastPurgeAt is when the edge cache was last cleared, as Unix seconds, so a console can say how fresh what readers see actually is.
[].licensebodystring—License is the terms that upstream work carries.
[].liveUrlbodystring—LiveURL is where the site answers today.
[].namebodystring—Name is the project's display name, free text a person chose.
[].orgbodystring—Org is the organisation that owns the project, and therefore who pays for it and who may change it.
[].repobodyproject.projectsRepo—
[].repo.branchbodystring—Branch is the ref a push has to touch for this project to rebuild.
[].repo.providerbodystring—Provider is the forge the URL was recognised as — it decides which webhook and which credential reach the repository, and is DERIVED from the URL rather than chosen by the caller.
[].repo.urlbodystring—URL is the clone address of the repository this project builds from.
[].slugbodystring—Slug is the identifier that MATTERS: the handle every later call addresses, the S3 key segment the site's objects live under, and the label of the public host &lt;slug&gt;.hanzo.app.
[].spacebodystring—Space is the project's Base data space, which is where a deployed site's form, forum and data submissions land.
[].starredbodyboolean—Starred is THIS CALLER's star, not a property of the project — two people in the same org see different values for the same row, which is the whole point of it.
[].statusbodystring—Status is where the project stands — whether a build has ever succeeded and whether anything is serving right now.
[].tagsbodyobject—Tags is the site's browser tag config: platform slug → non-secret pixel id (GA measurement, Meta pixel, …) — what track.js injects and the server CAPI reads, per site.
[].tags.*bodystring—
[].updatedAtbodyinteger (int64)—UpdatedAt is when the project's own record last changed, as Unix seconds.
[].upstreambodystring—Upstream credits the third-party work this project was published from — a free-text line, because the honest answer is a name and a title that no enum could hold.
[].visibilitybodystring—Visibility is "public" or "private", and Hidden reports platform moderation.

Failure carries the platform error shape — see Errors.

Examples

hanzo projects list
import { Configuration, ProjectApi } from 'hanzoai';

const api = new ProjectApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getProjects();
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import ProjectApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = ProjectApi(client).get_projects()
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.ProjectAPI.GetProjects(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, project_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = project_api::get_projects(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.ProjectApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new ProjectApi(client).getProjects();

The method above is the one at the current release of the document. hanzoai@8.5.914 (npm) and hanzoai@8.5.914 (PyPI) were generated from an earlier release, where this operation carried a different id, so it spells the method differently — regenerating the clients is what makes the two agree. SDKs →

curl https://api.hanzo.ai/v1/projects \
  -H "Authorization: Bearer $HANZO_API_KEY"

Tool project, op get_projects — POST the JSON-RPC envelope to https://api.hanzo.ai/v1/mcp.

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "project",
         "arguments": {
           "op": "get_projects",
           "input": {}
         }
       }
     }'

Project API · All Hanzo APIs · Interactive reference

Was this page useful?