A blueprint's bill of images and what running it costs
Answers a blueprint's SBOM — the container images its compose stack runs, each with the CPU/memory footprint that was applied to it — together with the…
GET /v1/blueprint/sbom
| Address | https://api.hanzo.ai/v1/blueprint/sbom |
| Method | GET |
| Operation | get_blueprint_sbom |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Answers a blueprint's SBOM — the container images its compose stack runs, each with the CPU/memory footprint that was applied to it — together with the compute cost that footprint prices out to on the active rate card.
ONE address, TWO shapes at 200: ?template=<id> returns that blueprint's Estimate alone (404 on an id no embedded blueprint carries), and no template returns {data:[Estimate]} for every blueprint — the batch the console's template gallery reads in one round-trip.
The blueprints are reference content embedded in the binary and validated at mount, so this read is the same for every caller and is scoped to no tenant. The per-hour figure it returns is the one the deploy path meters the deploying org on and the 20% author royalty is taken from; GET /v1/blueprint/health echoes the rate card it was priced from.
Request
GET /v1/blueprint/sbom takes no parameters and no body — the credential is the whole request.
Response
The document declares no response body for this operation. It answers 200 on success and the platform error shape on failure — see Errors.
Examples
hanzo blueprint sbomimport { Configuration, BlueprintApi } from 'hanzoai';
const api = new BlueprintApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getBlueprintSbom();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import BlueprintApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = BlueprintApi(client).get_blueprint_sbom()cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.BlueprintAPI.GetBlueprintSbom(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, blueprint_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = blueprint_api::get_blueprint_sbom(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.BlueprintApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new BlueprintApi(client).getBlueprintSbom();curl https://api.hanzo.ai/v1/blueprint/sbom \
-H "Authorization: Bearer $HANZO_API_KEY"Tool blueprint, op get_blueprint_sbom — 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": "blueprint",
"arguments": {
"op": "get_blueprint_sbom",
"input": {}
}
}
}'How is this guide?