List releases — GET /v1/projects/{slug}/releases

Returns a site's releases newest-first, marking the active one — the rollback menu.

GET /v1/projects/{slug}/releases

Addresshttps://api.hanzo.ai/v1/projects/{slug}/releases
MethodGET
Operationget_projects_by_slug_releases
AuthAuthorization: Bearer $HANZO_API_KEY

Returns a site's releases newest-first, marking the active one — the rollback menu.

Each row carries the release id to activate, the source it was promoted from, its object and byte counts, and the URL if it is the one serving. Retention bounds the list, so it is the set that can actually still be rolled back to, not a full history.

Scope: a validated principal is required (401 without one) and the site is resolved within that principal's org, so another tenant's slug is a 404.

Request

1 field.

FieldInTypeRequiredDescription
slugpathstringyesSlug is the project to act on, from the path.

Response

StatusBodyMeaning
200project.projectsRelease[]ok
defaultproblem-detailsrefused

200 body — 8 fields.

FieldInTypeAlwaysDescription
[].activebodyboolean—Active is whether this is the release the site is SERVING right now.
[].bytesbodyinteger (int64)—Bytes is their total size in bytes.
[].createdAtbodyinteger (int64)—CreatedAt is when the release was cut, as Unix seconds — not when it was last activated.
[].objectsbodyinteger (int64)—Objects is how many files the release holds.
[].releaseIdbodystring—ReleaseID is derived from a DIGEST of the release's own manifest, so identical content is the same release and a release can never be confused with another one.
[].slugbodystring—Slug is the site this release belongs to.
[].sourcebodystring—Source is what the release was cut from — the build output or upload it was promoted out of.
[].urlbodystring—URL is where the site serves.

Failure carries the platform error shape — see Errors.

Examples

hanzo projects releases list <slug>
import { Configuration, ProjectApi } from 'hanzoai';

const api = new ProjectApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getProjectsBySlugReleases({ slug: 'slug' });
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_by_slug_releases(slug='slug')
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.ProjectAPI.GetProjectsBySlugReleases(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_by_slug_releases(&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).getProjectsBySlugReleases();

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/<slug>/releases \
  -H "Authorization: Bearer $HANZO_API_KEY"

Tool project, op get_projects_by_slug_releases — 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_by_slug_releases",
           "input": {
             "slug": "<slug>"
           }
         }
       }
     }'

Project API · All Hanzo APIs · Interactive reference

Was this page useful?