# List project

URL: https://docs.hanzo.ai/docs/openapi/project/get-project

> Returns every project your org owns.

`GET /v1/project`

> [Project →](https://docs.hanzo.ai/docs/openapi/project) · [All API references →](https://docs.hanzo.ai/docs/openapi) · [Get started →](https://docs.hanzo.ai/docs/guides)

|               |                                        |
| ------------- | -------------------------------------- |
| **Address**   | `https://api.hanzo.ai/v1/project`      |
| **Method**    | `GET`                                  |
| **Operation** | `get_project`                          |
| **Auth**      | `Authorization: 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/project` takes no parameters and no body — the credential is the whole request.

## Response

| Status    | Body                       | Meaning |
| --------- | -------------------------- | ------- |
| `200`     | project.projectsProject\[] | ok      |
| `default` | problem-details            | refused |

`200` body — 32 fields.

| Field                    | In   | Type                 | Always | Description                                                                                                                                                                                                              |
| ------------------------ | ---- | -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `[].analytics`           | body | boolean              | —      | Analytics is whether the web-analytics beacon is injected into this site's pages.                                                                                                                                        |
| `[].bucket`              | body | string               | —      | Bucket is the object-store bucket the site's files are served out of.                                                                                                                                                    |
| `[].cacheControl`        | body | string               | —      | 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.                                                                           |
| `[].createdAt`           | body | integer (int64)      | —      | CreatedAt is when the project was created, as Unix seconds.                                                                                                                                                              |
| `[].currentDeploymentId` | body | string               | —      | CurrentDeploymentID names the deployment currently serving, so a caller can ask what is live without scanning the history.                                                                                               |
| `[].description`         | body | string               | —      | Description is the one-line summary, which is copied onto forks of this project and shown on a gallery card.                                                                                                             |
| `[].dropLocal`           | body | boolean              | —      | DropLocal is whether events a developer's own machine sends (localhost, 127.0.0.1, \*.local) are dropped at ingest.                                                                                                      |
| `[].forkedFrom`          | body | string               | —      | 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.                                                    |
| `[].framework`           | body | string               | —      | Framework is a BUILD HINT from a closed set, defaulting to static.                                                                                                                                                       |
| `[].hidden`              | body | boolean              | —      | 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. |
| `[].hiddenReason`        | body | string               | —      | HiddenReason is why moderation hid it.                                                                                                                                                                                   |
| `[].id`                  | body | string               | —      | ID is the project's internal identifier.                                                                                                                                                                                 |
| `[].internalNetworks`    | body | string\[]            | —      | InternalNetworks are the site's own addresses, as CIDRs ("203.0.113.0/24").                                                                                                                                              |
| `[].key`                 | body | string               | —      | Key is the project's publishable ingest key, minted at create.                                                                                                                                                           |
| `[].lastPurgeAt`         | body | integer (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.                                                                                       |
| `[].license`             | body | string               | —      | License is the terms that upstream work carries.                                                                                                                                                                         |
| `[].liveUrl`             | body | string               | —      | LiveURL is where the site answers today.                                                                                                                                                                                 |
| `[].name`                | body | string               | —      | Name is the project's display name, free text a person chose.                                                                                                                                                            |
| `[].org`                 | body | string               | —      | Org is the organisation that owns the project, and therefore who pays for it and who may change it.                                                                                                                      |
| `[].repo`                | body | project.projectsRepo | —      |                                                                                                                                                                                                                          |
| `[].repo.branch`         | body | string               | —      | Branch is the ref a push has to touch for this project to rebuild.                                                                                                                                                       |
| `[].repo.provider`       | body | string               | —      | 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.url`            | body | string               | —      | URL is the clone address of the repository this project builds from.                                                                                                                                                     |
| `[].slug`                | body | string               | —      | 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`.                                 |
| `[].space`               | body | string               | —      | Space is the project's Base data space, which is where a deployed site's form, forum and data submissions land.                                                                                                          |
| `[].starred`             | body | boolean              | —      | 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.                                                         |
| `[].status`              | body | string               | —      | Status is where the project stands — whether a build has ever succeeded and whether anything is serving right now.                                                                                                       |
| `[].tags`                | body | object               | —      | 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.*`              | body | string               | —      |                                                                                                                                                                                                                          |
| `[].updatedAt`           | body | integer (int64)      | —      | UpdatedAt is when the project's own record last changed, as Unix seconds.                                                                                                                                                |
| `[].upstream`            | body | string               | —      | 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.                                                       |
| `[].visibility`          | body | string               | —      | Visibility is "public" or "private", and Hidden reports platform moderation.                                                                                                                                             |

Failure carries the platform error shape — see [Errors](https://docs.hanzo.ai/docs/errors).

## Examples

**CLI**

```bash
hanzo project list
```

**SDK**

**.ts**

```ts
import { Configuration, ProjectApi } from 'hanzoai';

const api = new ProjectApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getProject();
```

**.py**

```python
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_project()
```

**.go**

```go
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.ProjectAPI.GetProject(context.Background()).Execute()
if err != nil {
	return err
}
```

**.rs**

```rust
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_project(&cfg, Default::default()).await?;
```

**.java**

```java
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).getProject();
```

**HTTP**

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

**MCP**

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

```bash
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_project",
           "input": {}
         }
       }
     }'
```

---

[Project API](https://docs.hanzo.ai/docs/openapi/project) · [All Hanzo APIs](https://docs.hanzo.ai/docs/openapi) · [Interactive reference](https://docs.hanzo.ai/docs/openapi/reference)
