Getting started
Response format
Successes and failures use a consistent JSON envelope. The HTTP status matches http_code; an error is never hidden inside a successful 200 response.
Success envelope
{ "status": "OK", "http_code": 200, "message": "Request completed successfully", "internal_error_code": "R001", "api_info": { "version": "1", "timestamp": "2026-09-14T09:14:22Z", "provider": "CRU World Wine", "request_id": "example-request-id" }, "data": { "pong": true, "client_key": "YOUR_CLIENT_KEY", "organisation": "Example wine merchant", "label": "Partner integration", "scopes": [ "meta:read", "market:read" ], "expires_at": null, "server_time": "2026-09-14T09:14:22Z" }, "errors": null }
Envelope fields
statusstring
OK on success, ERROR on failure.
http_codeinteger
Matches the actual HTTP status.
messagestring
Human-readable response message.
internal_error_codestring
Machine-readable result code. Branch on this value.
api_infoobject
Version, timestamp, provider, and request_id.
page_infoobject · paginated endpoints
limit, offset, total, has_more. Counts markets, not bid levels.
dataobject | null
Endpoint payload. Null on error.
errorsarray | null
Null on success; exactly one error entry on failure.
Keep the request ID
api_info.request_id is also returned as X-Request-Id. Include it when contacting Cru about a request.