Beta

The Partner Trading API v1 is in beta — endpoints and response shapes may still change.

Developers
Cru World Wine
API v1 · REST & MCP
Your offers

Change a listing

Prepares a change to the asking price or quantity of one listed line of the customer's portfolio (portfolio_id from list_my_listings, get_my_portfolio or the offer list_for_sale or an earlier change answered with), which changes that line's units only, or of a whole listing by its code. A repriced line gets a new portfolio_id. For wine held outside Cru (stock_type "external"), lowering the quantity removes those units from the portfolio; for wine stored with Cru, they just come off sale. BPO stock (stock_type "bpo") cannot be changed. The result's offer is the wine as list_my_listings gives it, with only the lines the changed units are on now. This only prepares the instruction: it returns a summary and a confirmation_code and changes nothing until confirm_instruction is called with that code, after the customer agrees. Prices are normal amounts in the market currency - 12345.5 is 12,345.50 - and every market states its currency.

STAGEupdate_listingLIVE
Needsoffers:writeRESTPATCH /offers/{code}Try it
Prepares offer.update, and changes nothing

With a connected app’s token, Cru checks the request against live data and either refuses it with a reason or returns a summary and a confirmation code. Nothing happens until confirm_instruction is called with that code — once, within 15 minutes, after the customer says yes.

With partner keys, carried out straight away

A partner key is offered this tool opening “Changes the asking price” instead of “Prepares a change to the asking price”. It is carried out at once, with no confirmation step, and takes a required reference as its last argument, so sending the same one again returns the first result. It returns the action’s result as the REST response’s data gives it, with replayed, and is marked destructiveHint. Partner keys over MCP →

Arguments

ALL OPTIONAL
ARGUMENTDESCRIPTION
portfolio_idstring A listed line's portfolio_id, from list_my_listings, get_my_portfolio or an earlier offer result, to change only that line's units. Give this or code.
codestring A listing's code, to change the whole listing. Give this or portfolio_id.
pricenumber · > 0 New price per unit, in the market currency, as pricing.listing_price quotes it. Omit to keep it.
quantityinteger · 1–1000 New quantity. Omit to keep it.

Any other argument is refused with a tool error that lists what the tool accepts. Numbers may also be sent as strings, and booleans as "true" or 1.

Returns

STRUCTUREDCONTENT

Once confirmed: offer, the wine as list_my_listings gives it, with only the lines the changed units are on now: a repriced line under its new portfolio_id.

The same object also comes as JSON text in content, for hosts that read only that. What a staging tool returns →

Errors

A refusal — a wine that is not on Cru, a price out of range — comes back as a result with isError: true and a message worded for the assistant to act on. A connection without offers:write is not offered this tool, and calling it anyway returns 403 with a JSON-RPC error naming the scope. Missing or invalid credentials return 401. Conventions every tool shares →

UP NEXT Remove an offer

API credentials

Enter the client key and secret issued by Cru. They are kept for this browser tab’s session — a reload keeps them, closing the tab or clearing them ends them.

Credentials are never included in copied examples, and are redacted from anything the console prints back.

Request API access

Tell us who you are and what you want to build. Cru issues a client key and secret for your organisation, scoped to what you need.

Markets you trade in (choose one or more)

We use what you send here to reply about API access, and for nothing else. Cloudflare Turnstile checks the form for bots (privacy policy).