Beta

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

Developers
Cru World Wine
API v1 · REST & MCP
Buy and sell

Sell into a bid

Prepares selling wine straight away into one bid from list_bids, at that bid's price, which is already net of Cru's commission. The proceeds are credited to the customer's Cru account. stock_type says what is sold. To sell from the portfolio, give the line's portfolio_id from get_my_portfolio, whose stock_type it must match: only that line's units are sold, and wine held outside Cru only while its line is listed. Wine stored with Cru is always sold that way. Without portfolio_id, new stock is sold: wine held outside Cru that is not in the portfolio yet, by giving warehouse_code, for customers Cru has set up to sell it, or a supplier's stock that is not in their offer feed, which is added to it for the sale and taken back if it cannot fill the bid. Check the bid's requirements first; the customer's own bids (is_own_bid) cannot be sold into. 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.

STAGEsell_to_bidLIVE
Needsoffers:write + orders:writeRESTPOST /market/bids/{code}/sellTry it
Prepares offer.sell, 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 “Sells” instead of “Prepares selling”. 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

3 REQUIRED
ARGUMENTDESCRIPTION
bid_codestring · required The bid's code, from list_bids.
stock_typestring · one of cru, external, supplier · required What is sold: "cru" (wine stored with Cru), "external" (wine held outside Cru) or "supplier" (the customer's own supplier stock).
portfolio_idstring A portfolio line's portfolio_id, from get_my_portfolio, to sell that line's units; its stock_type must match. Required for stock_type "cru". Omit to sell new "external" or "supplier" stock.
quantityinteger · 1–1000 · required How many units to sell.
min_pricenumber · > 0 Optional lowest price per unit, after commission, the customer will take, in the market currency. Nothing is sold if the bid pays less.
warehouse_codestring · one of UK_DRAK, HK_KERRY, SG_TOLL, FR_DARTESS, US_NAPA For new wine held outside Cru (stock_type "external", no portfolio_id), and required then: the Cru warehouse it is delivered to, one of the bid's deliverable_warehouses that list_warehouses marks sells_your_inbond_wine. They then receive the bid's price less that warehouse's settlement fee.
condition_statusstring · one of verified For new stock (stock_type "external" or "supplier", no portfolio_id): only verified wine can fill a bid, which is also the default.
costnumber · > 0 For new wine held outside Cru, optional: what the customer paid per unit, in the market currency.
inbond_address_idinteger · ≥ 1 For new wine held outside Cru, optional: the inbond warehouse the wine is in now, from list_inbond_warehouses. Omit if the customer is not sure. Left out, Cru records it as not sure, as the website’s Sell Now does.

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: sold (which can be less than requested), requested, bid_code, stock_type, portfolio_id (null for new stock), lwin18, price, total, currency — price and total after the settlement fee for wine held outside Cru.

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 + orders: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 Inbond addresses

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).