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

Your listings

Wine the customer has listed for sale on Cru: what get_my_portfolio gives, in the same shape (its wines under offers) and with the same filters, but only the lines that are listed (is_listed true). Grouped by wine (LWIN18), with total_quantity the units listed. Each wine's portfolio is split into lines of identical units: stock_type "cru" (stored with Cru), "external" (the customer's own storage, sold through Cru), and for a corporate supplier "supplier" (their own offers) and "bpo" (their stock on a broking purchase order) - a supplier's stock has no cost, is due in, is never sold into a bid and is listed at what the supplier is paid, so its listing_price is its net_proceeds; warehouse, stock_status (in_stock, in_transit, due_in), duty_paid, condition_status (verified, apd, client_reserves; with condition_text and photo_urls when there are any), whether it is listed (is_listed) and pricing: what was paid (cost) and, while listed, the asking price per unit (listing_price), Cru's commission on it (commission_percent and commission), any settlement_fee, and what the customer receives when it sells (net_proceeds, listing_price less commission and settlement_fee). Each wine has market_price (Cru's market price), lowest_offer_price (the lowest offer on Cru) and highest_bid_price (the highest bid, at the net price list_bids quotes), each null when there is none. Every amount is in the wine's currency, the market's, converted at today's rate where the wine was bought or listed in another; update_listing relists a line listed in another currency in the market's, but a supplier offer stays in its feed's. portfolio_id names the line: pass a listed line's to update_listing or remove_offers to change or remove just its units; it changes when the line does, e.g. once repriced. warehouse says where the wine is: location_type, "cru" (a Cru warehouse), "inbond" (an inbond warehouse outside Cru), "address" (the customer's own address) or "supplier" (a supplier's own stock); current_location, the name of where it is now; current_location_code, the code to filter on - a Cru warehouse's own code (list_warehouses), IB_ and the inbond_address_id of an inbond warehouse outside Cru (list_inbond_warehouses), or ADDR_ and the id of the customer's own address, and null for a supplier's own stock or when nobody said where the wine is; and deliverable_warehouse_code, the Cru warehouse the wine is in or, for wine outside Cru, the one it goes to once sold - the code bids list as deliverable_warehouses - which the customer's own wine outside Cru has only while it is listed. Pass warehouse.deliverable_warehouse_code to list_bids as deliverable_warehouse to see the bids they can fill. Prices are normal amounts in the market currency - 12345.5 is 12,345.50 - and every market states its currency.

READlist_my_listingsLIVE
Needsoffers:readRESTGET /offersTry it
Reads, and changes nothing

Marked readOnlyHint, so an assistant may call it without asking the customer first.

Arguments

ALL OPTIONAL
ARGUMENTDESCRIPTION
lwin18array<string> · LWIN18 · ≤ 20 Only these wines, as 18-digit LWIN18 codes (wine, vintage and pack). Get them from search_wines.
wine_namestring · ≤ 100 chars Only wines whose name holds every word given, as search_wines matches, e.g. "Lafite 2010".
current_location_codearray<string> · ≤ 50 Only portfolio lines stored now at any of these: Cru warehouse codes, IB_ and an inbond_address_id from list_inbond_warehouses, or ADDR_ and an address id, as current_location_code shows them, e.g. ["SG_TOLL", "IB_72", "ADDR_123"].
deliverable_warehouse_codearray<string> · one of UK_DRAK, HK_KERRY, SG_TOLL, FR_DARTESS, US_NAPA · ≤ 5 Only portfolio lines whose deliverable_warehouse_code is any of these Cru warehouses - see list_warehouses.
stock_typearray<string> · one of cru, external, supplier, bpo · ≤ 4 Only these kinds of portfolio line.
stock_statusarray<string> · one of in_stock, in_transit, due_in · ≤ 3 Only portfolio lines with any of these stock_status values.
duty_paidboolean true for only duty-paid portfolio lines, false for only those whose duty is not paid. Omit for both.
condition_statusarray<string> · one of verified, apd, client_reserves · ≤ 3 Only portfolio lines with any of these condition_status values.
limitinteger · 1–50 Wines per page. Default: 10
offsetinteger · 0–10000 Wines to skip, for the next page. Default: 0

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

offers, each a wine with currency, total_quantity, market_price, lowest_offer_price, highest_bid_price and portfolio (portfolio_id, stock_type, stock_status, duty_paid, condition_status, condition_text, is_listed, pricing with its cost, listing_price, commission_percent, commission, settlement_fee and net_proceeds, photo_urls, quantity, warehouse with its location_type, current_location, current_location_code and deliverable_warehouse_code), pagination.

The same object also comes as JSON text in content, for hosts that read only that.

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:read 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 List wine for sale

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