Get download

Resolves a release to its artifact, gated on a valid license.

GET /v1/licensing/download/{release}

Addresshttps://api.hanzo.ai/v1/licensing/download/{release}
MethodGET
Operationget_licensing_download_by_release
AuthAuthorization: Bearer $HANZO_API_KEY

Resolves a release to its artifact, gated on a valid license.

The gate is the LICENSE token, not the IAM bearer: being signed in is not permission to download a paid binary — holding a good license for it is. The token must verify against this deployment's public key, be unrevoked, be scoped to the release's app, and carry every feature the release requires. Present it as the X-License-Token header (preferred, since a header does not land in proxy logs) or as ?token=.

The response pairs the artifact URL with its cosign signature so the client verifies the binary BEFORE trusting it: a signed URL alone proves where the bytes came from, not what they are. A yanked release is 410 Gone.

Request

3 fields.

FieldInTypeRequiredDescription
releasepathstringyes
tokenquerystring—
X-License-Tokenheaderstring—

Response

StatusBodyMeaning
200licensing.ReleaseAssetok
defaultproblem-detailsrefused

200 body — 16 fields.

FieldInTypeAlwaysDescription
cosign_certbodystring—
cosign_signaturebodystring—
download_urlbodystring—DownloadURL is a short-lived signed URL to the artifact bytes.
releasebodylicensing.Release—
release.app_idbodystring—AppID scopes the release to an app build ("hanzo" | "lux" | "zoo").
release.artifact_refbodystring—ArtifactRef is where the binary lives (object-store key / OCI ref / path).
release.cosign_certbodystring—CosignCert is the cosign/Fulcio cert (keyless) or public key ref used to verify CosignSignature.
release.cosign_signaturebodystring—CosignSignature is the base64 cosign signature over the artifact digest.
release.created_atbodyinteger (int64)—
release.idbodystring—ID is the release identifier, e.g. "engine-rocm-0.4.2-linux-amd64".
release.min_featuresbodystring[]—MinFeatures, when set, are features the license must include to download.
release.platformbodystring—Platform is "<os>/<arch>", e.g. "linux/amd64".
release.productbodystring—Product is the licensed product this artifact belongs to (commerce SKU): "engine" for every one of those builds.
release.sha256bodystring—SHA256 is the hex digest of the artifact (integrity + cosign subject).
release.versionbodystring—Version is the semantic version of the binary.
release.yankedbodyboolean—Yanked marks a pulled release (download refused; tokens may be revoked release-scoped too).

Failure carries the platform error shape — see Errors.

Examples

hanzo licensing download get <release>
import { Configuration, LicensingApi } from 'hanzoai';

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

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

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

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

let result = licensing_api::get_licensing_download_by_release(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.LicensingApi;

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

var result = new LicensingApi(client).getLicensingDownloadByRelease();
curl https://api.hanzo.ai/v1/licensing/download/<release> \
  -H "Authorization: Bearer $HANZO_API_KEY"

MCP reaches licensing through the licensing tool, which names its 9 operations with its own verbs — this one among them, under a name only MCP 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": "get_licensing_download"
         }
       }
     }'

Licensing API · All Hanzo APIs · Interactive reference

Was this page useful?