Returns your org's projects, each with how many apps live under it.
Returns your org's projects, each with how many apps live under it. It lists the caller org's projects with the number of platform applications in each.
GET /v1/platform/projects
| Address | https://api.hanzo.ai/v1/platform/projects |
| Method | GET |
| Operation | get_platform_projects |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Returns your org's projects, each with how many apps live under it.
It lists the caller org's projects with the number of platform applications in each. A project is IAM's resource — it is created and deleted at /v1/iam/projects, never here — so this is the ONE projection IAM cannot serve: the project plus what the platform has put under it.
Request
GET /v1/platform/projects takes no parameters and no body — the credential is the whole request.
Response
| Status | Body | Meaning |
|---|---|---|
200 | projectView[] | ok |
200 body — 6 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
[].applications | body | integer | — | Applications is how many platform apps this org has under the project, counted per request. |
[].createdAt | body | integer | — | CreatedAt is IAM's creation time as unix seconds. |
[].description | body | string | — | Description is IAM's free text about the project. |
[].name | body | string | — | Name is IAM's display name, falling back to the slug when the project has none, so this is never empty. |
[].org | body | string | — | Org is the project's IAM owner, and the tenant every app under it deploys into. |
[].slug | body | string | — | Slug is the project's IAM name — half of the (org,name) identity, the :project path segment, and the scope key an app is filed under. |
Failure carries the platform error shape — see Errors.
Examples
hanzo platform projects listimport { Configuration, PlatformApi } from 'hanzoai';
const api = new PlatformApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getPlatformProjects();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import PlatformApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = PlatformApi(client).get_platform_projects()cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.PlatformAPI.GetPlatformProjects(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, platform_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = platform_api::get_platform_projects(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.PlatformApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new PlatformApi(client).getPlatformProjects();curl https://api.hanzo.ai/v1/platform/projects \
-H "Authorization: Bearer $HANZO_API_KEY"The door reaches platform through the platform tool, which names its 39 operations with its own verbs — this one among them, under a name only the door declares. describe explains any of them:
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe",
"arguments": {
"op": "list_builds"
}
}
}'How is this guide?