Update listings
Edits one of the caller org's listings — its copy, price, payout wallet, visibility and documentation — under the same rules publish applies, and answers the listing as it now stands.
PATCH /v1/marketplace/listings/{id}
| Address | https://api.hanzo.ai/v1/marketplace/listings/{id} |
| Method | PATCH |
| Operation | patch_marketplace_listings_by_id |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Edits one of the caller org's listings — its copy, price, payout wallet, visibility and documentation — under the same rules publish applies, and answers the listing as it now stands. Another org's listing and one that does not exist are the same 404. An org admin edits.
Request
10 fields, body application/json (required).
| Field | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | ID is the listing to edit, from the path. |
category | body | string | — | Category groups the listing in the shop window. |
currency | body | string | — | Currency denominates Price. |
description | body | string | — | Description is the long copy, at most 4096 characters. |
docs | body | string | — | Docs is where the listing's documentation lives; empty clears it. |
id | body | string | — | ID is the listing to edit, from the path. |
price | body | string | — | Price is the decimal USD price, exact to 18 places; "0" makes it free. |
public | body | boolean | — | Public makes the listing discoverable by other orgs, or withdraws it. |
recipient | body | string | — | Recipient is the payout wallet id, in the publishing org. |
title | body | string | — | Title is the shop-window name, 1-200 characters. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | marketplace.Listing | ok |
default | problem-details | refused |
200 body — 15 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
category | body | string | — | Category groups the listing in the shop window. |
createdAt | body | integer (int64) | — | CreatedAt is when the listing was published, in Unix SECONDS, minted at insert. |
currency | body | string | — | Currency is the ISO 4217 code Price is quoted in; Create defaults it to "USD" when the publisher names none. |
description | body | string | — | Description is the long copy. |
docs | body | string | — | Docs is where the listing's documentation lives: an https URL, or a path on docs.hanzo.ai. |
id | body | string | — | ID is the listing's id, minted here as "lst_" + 16 hex characters. |
kind | body | string | — | Kind is what the listing sells: agent, persona, app, skill, mcp or tool. |
price | body | any | — | Price is the exact price, 18 decimal places of USD: per call for a tool, the price a job is offered at for an agent. |
public | body | boolean | — | Public is whether other orgs can discover the listing. |
publisherOrg | body | string | — | PublisherOrg is the org that published the listing, taken from the validated principal and never off the wire. |
recipient | body | string | — | Recipient is the seller's payout WALLET id in PublisherOrg: the wallet x402 pays for a call or a job bought through this listing. |
ref | body | string | — | Ref is the id the thing's owning app knows it by, resolved when the listing was published — the agent id for an agent named by its name. |
title | body | string | — | Title is the shop-window name, required and refused past 200 bytes. |
tool | body | string | — | Tool names the thing sold, as the seller named it: the agent, app, skill or MCP server's name or id, or the tool's registry name. |
updatedAt | body | integer (int64) | — | UpdatedAt is when the listing was last edited, unix seconds; its creation when it never was. |
Failure carries the platform error shape — see Errors.
Examples
hanzo has no subcommand for this operation — the CLI serves only what cloud's live route table confirms. Use HTTP or an SDK.
import { Configuration, MarketplaceApi } from 'hanzoai';
const api = new MarketplaceApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.patchMarketplaceListingsById({ id: 'id', category: "<category>", currency: "<currency>" });from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import MarketplaceApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = MarketplaceApi(client).patch_marketplace_listings_by_id(id='id', category="<category>", currency="<currency>")cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)
resp, _, err := client.MarketplaceAPI.PatchMarketplaceListingsById(context.Background()).Execute()
if err != nil {
return err
}use hanzo_client::apis::{configuration::Configuration, marketplace_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = marketplace_api::patch_marketplace_listings_by_id(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.MarketplaceApi;
ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));
var result = new MarketplaceApi(client).patchMarketplaceListingsById();The method above is the one at the current release of the document. [email protected] (npm) and [email protected] (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 -X PATCH https://api.hanzo.ai/v1/marketplace/listings/<id> \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"category": "<category>",
"currency": "<currency>"
}'MCP reaches marketplace through the marketplace tool, which names its 6 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_marketplace"
}
}
}'How is this guide?