orders

Match rows to catalog SKUs

Turn the data you already have — a listing title, a variant string, a SKU — into the product_variant_id or product_id + options that POST /orders/batch expects. Nothing is created: this returns suggestions with a confidence, and you decide what to send.

Two deterministic passes run on every request and cost nothing: an exact SKU reference, then an exact product-plus-option-label match. Well-formed rows resolve here.

The AI pass is BRING YOUR OWN KEY. Send your own provider credentials in the X-AI-* headers and the leftover rows go to your model, on your bill — we never charge our own AI to your requests, and your key is used for that one call and never stored. Send no X-AI-* headers and you get the free passes only, with the rest reported as unmatched.

claude-sonnet-5 is the recommended model and what this endpoint is tested against. Matching quality is the model's, so a cheaper one matches worse.

This endpoint carries its own rate limit of 200 requests per minute, tighter than the API's usual 600. One match call builds the whole catalog digest and runs up to 200 rows, so it costs far more than a plain read. It counts in a separate bucket, so matching never eats the budget for reading your orders.

post/orders/match

Request

  • Base URL: https://0.0.0.0:3000/api/v1
  • URL: https://0.0.0.0:3000/api/v1/orders/match
  • Auth: API key in header x-api-key

Headers

X-AI-Providerstring

anthropic (default) or openai-compatible. Omit every X-AI-* header to skip the AI pass.

X-AI-Keystring

Your own provider key. Used for this request only — never stored, never logged, never returned.

X-AI-Modelstring

The model id, e.g. claude-sonnet-5. Required whenever a key is sent.

X-AI-Base-Urlstring

Required for openai-compatible — the endpoint your provider serves, e.g. https://api.openai.com/v1.

Request body

Response

Per-row results. status is matched (deterministic, confidence 1), suggested (your AI proposed it) or unmatched. Every suggestion is re-verified against the catalog before it is returned.

Changes

No recorded changes to this operation across all 1 revision of this API.