# Ever API

> EverAU wholesale channel API: stock, orders, drop-shipping, webhooks. One set of auth, rate limits and error codes. Base URL https://connect.everugg.net.au.

Auth: exchange channel code + secret for a token (`POST https://connect.everugg.net.au/api/v1/auth/token`, body `{"channel_code":"…","secret":"…"}`), then send `Authorization: Bearer <token>` on every request (`?token=` is not accepted); without credentials use the public sandbox `sandbox` / `sandbox` (demo data, real stock untouched). Read responses by HTTP status only: 2xx carries `{ data }`, 4xx / 5xx carries `{ error: { code, message, hint, request_id, doc_url } }`. Parameters and fields are snake_case; warehouse codes come from `GET /api/v1/warehouses` (AU / AUSYD2 / AUSYD1 / CN / CHNZJ1). Rate limiting is point-based — see the `RateLimit-*` headers; sync stock through `/stock/changes` and pull the whole warehouse only the first time or when the cursor expires.

Other languages: [zh-CN](https://connect.everugg.net.au/llms.txt?lang=zh) · [en](https://connect.everugg.net.au/llms.txt?lang=en) · [ko](https://connect.everugg.net.au/llms.txt?lang=ko)

## Guide

- [Ever API · Getting Started](https://connect.everugg.net.au/start.md?lang=en): Three steps to your first successful call. Every error response tells you how to fix it; the full error catalogue is one click away.

## Auth

- [Exchange for an access token: client_credentials (client_id = channel code, client_secret = secret) or password (username = OMS login account, password = OMS password) → Bearer access_token](https://connect.everugg.net.au/reference/post-api-v1-auth-token.md?lang=en): `POST /api/v1/auth/token`
- [Who this token is: account, channel, usable warehouses, permissions, business switches (OMS profile for OMS logins; warehouse allowlist and gateway scopes for channel-secret tokens)](https://connect.everugg.net.au/reference/get-api-v1-me.md?lang=en): `GET /api/v1/me`

## Warehouses & stock

- [Warehouse list: code, name, country, company, aggregate / physical, ships, currency](https://connect.everugg.net.au/reference/get-api-v1-warehouses.md?lang=en): `GET /api/v1/warehouses`
- [Stock in one warehouse: no filter = whole warehouse (page / page_size; X-Stock-Version header for incremental sync); sku= one variant; product_code= all variants of a style](https://connect.everugg.net.au/reference/get-api-v1-warehouses-warehouse-code-stock.md?lang=en): `GET /api/v1/warehouses/{warehouse_code}/stock`
- [Stock changes (incremental)](https://connect.everugg.net.au/reference/get-api-v1-warehouses-warehouse-code-stock-changes.md?lang=en): `GET /api/v1/warehouses/{warehouse_code}/stock/changes`

## Products

- [Products in one warehouse (deduplicated by style code, with prices)](https://connect.everugg.net.au/reference/get-api-v1-products.md?lang=en): `GET /api/v1/products`
- [Product detail by style code (images / description / prices + all variants; Chinese name / weight / materials not yet fed from upstream, present only when set)](https://connect.everugg.net.au/reference/get-api-v1-products-product-code.md?lang=en): `GET /api/v1/products/{product_code}`
- [Variant detail by SKU (one object)](https://connect.everugg.net.au/reference/get-api-v1-skus-sku.md?lang=en): `GET /api/v1/skus/{sku}`
- [Products on sale in the drop-ship system (paged)](https://connect.everugg.net.au/reference/get-api-v1-dropship-products.md?lang=en): `GET /api/v1/dropship-products`

## Prices

- [Your channel's product prices (paged; product_code may be comma-separated)](https://connect.everugg.net.au/reference/get-api-v1-prices.md?lang=en): `GET /api/v1/prices`

## Wholesale orders

- [Shipping methods available to your account](https://connect.everugg.net.au/reference/get-api-v1-shipping-methods.md?lang=en): `GET /api/v1/shipping-methods`
- [Carriers your account can choose from](https://connect.everugg.net.au/reference/get-api-v1-carriers.md?lang=en): `GET /api/v1/carriers`
- [Your OMS delivery address book](https://connect.everugg.net.au/reference/get-api-v1-addresses.md?lang=en): `GET /api/v1/addresses`
- [Create a wholesale order (draft by default; auto_confirm=true submits for review)](https://connect.everugg.net.au/reference/post-api-v1-orders.md?lang=en): `POST /api/v1/orders` · write
- [Your channel's wholesale orders within a date range](https://connect.everugg.net.au/reference/get-api-v1-orders.md?lang=en): `GET /api/v1/orders`
- [Wholesale order detail (ownership checked)](https://connect.everugg.net.au/reference/get-api-v1-orders-order-id.md?lang=en): `GET /api/v1/orders/{order_id}`
- [Void the wholesale order and release the stock it was holding](https://connect.everugg.net.au/reference/delete-api-v1-orders-order-id.md?lang=en): `DELETE /api/v1/orders/{order_id}` · write
- [Allocation preview: per line, how much can be allocated, how much is owed, when pre-sale stock arrives, the amount payable and whether the balance covers it](https://connect.everugg.net.au/reference/post-api-v1-orders-order-id-allocation-preview.md?lang=en): `POST /api/v1/orders/{order_id}/allocation-preview` · write
- [Submit the wholesale order (lines can no longer be changed)](https://connect.everugg.net.au/reference/post-api-v1-orders-order-id-submit.md?lang=en): `POST /api/v1/orders/{order_id}/submit` · write

## Drop-ship orders

- [Create a drop-ship order (recipient + lines)](https://connect.everugg.net.au/reference/post-api-v1-dropship-orders.md?lang=en): `POST /api/v1/dropship-orders` · write
- [Drop-ship orders: by warehouse + date range, or look one up by client_order_number / serial_number](https://connect.everugg.net.au/reference/get-api-v1-dropship-orders.md?lang=en): `GET /api/v1/dropship-orders`
- [Drop-ship order summary list (paged)](https://connect.everugg.net.au/reference/get-api-v1-dropship-orders-summary.md?lang=en): `GET /api/v1/dropship-orders/summary`
- [Drop-ship order detail (ownership checked)](https://connect.everugg.net.au/reference/get-api-v1-dropship-orders-dropship-order-id.md?lang=en): `GET /api/v1/dropship-orders/{dropship_order_id}`
- [Void the drop-ship line and release the stock it was holding](https://connect.everugg.net.au/reference/delete-api-v1-dropship-orders-dropship-order-id.md?lang=en): `DELETE /api/v1/dropship-orders/{dropship_order_id}` · write
- [Drop-ship pre-allocation: per line, whether it can be filled, how much is short, when pre-sale stock arrives and what is payable](https://connect.everugg.net.au/reference/post-api-v1-dropship-orders-allocation-preview.md?lang=en): `POST /api/v1/dropship-orders/allocation-preview` · write
- [Submit drop-ship lines (no changes afterwards)](https://connect.everugg.net.au/reference/post-api-v1-dropship-orders-submit.md?lang=en): `POST /api/v1/dropship-orders/submit` · write
- [Release the stock this drop-ship line holds from a pre-allocation you decided not to submit](https://connect.everugg.net.au/reference/delete-api-v1-dropship-orders-dropship-order-id-allocation.md?lang=en): `DELETE /api/v1/dropship-orders/{dropship_order_id}/allocation` · write

## Shipments & logistics

- [Your channel's shipments](https://connect.everugg.net.au/reference/get-api-v1-shipments.md?lang=en): `GET /api/v1/shipments`
- [Upload recipient ID images ⚠️ front and back of the end consumer's ID (PII)](https://connect.everugg.net.au/reference/post-api-v1-shipments-identity-documents.md?lang=en): `POST /api/v1/shipments/identity-documents` · write
- [Shipment detail (ownership checked)](https://connect.everugg.net.au/reference/get-api-v1-shipments-shipment-id.md?lang=en): `GET /api/v1/shipments/{shipment_id}`
- [Tracking events (Auexpress; off by default, apply to enable)](https://connect.everugg.net.au/reference/get-api-v1-shipments-shipment-id-tracking.md?lang=en): `GET /api/v1/shipments/{shipment_id}/tracking`

## Stock reservations

- [Your channel's stock reservations](https://connect.everugg.net.au/reference/get-api-v1-reservations.md?lang=en): `GET /api/v1/reservations`
- [Reservation detail (ownership checked)](https://connect.everugg.net.au/reference/get-api-v1-reservations-reservation-id.md?lang=en): `GET /api/v1/reservations/{reservation_id}`
- [Adjust reservation lines (write; ownership checked)](https://connect.everugg.net.au/reference/patch-api-v1-reservations-reservation-id.md?lang=en): `PATCH /api/v1/reservations/{reservation_id}` · write

## Finance

- [Your account balances (Australia / China / New Zealand — whichever you have)](https://connect.everugg.net.au/reference/get-api-v1-balances.md?lang=en): `GET /api/v1/balances`
- [Transactions (top-up / payment / refund) with the balance after each; amount_total is the page total](https://connect.everugg.net.au/reference/get-api-v1-transactions.md?lang=en): `GET /api/v1/transactions`
- [Monthly bills by warehouse and month, including whether they are paid](https://connect.everugg.net.au/reference/get-api-v1-bills.md?lang=en): `GET /api/v1/bills`
- [Refund notes (wholesale / drop-ship) with review status and reason](https://connect.everugg.net.au/reference/get-api-v1-refunds.md?lang=en): `GET /api/v1/refunds`
- [Freight notes (carrier, tracking number, cartons, amount)](https://connect.everugg.net.au/reference/get-api-v1-freight-bills.md?lang=en): `GET /api/v1/freight-bills`

## Carts

- [One account's cart](https://connect.everugg.net.au/reference/get-api-v1-carts-account.md?lang=en): `GET /api/v1/carts/{account}`
- [Add / update cart items (idempotent)](https://connect.everugg.net.au/reference/put-api-v1-carts-account-lines.md?lang=en): `PUT /api/v1/carts/{account}/lines` · write
- [Remove one SKU from the cart](https://connect.everugg.net.au/reference/delete-api-v1-carts-account-lines-sku.md?lang=en): `DELETE /api/v1/carts/{account}/lines/{sku}` · write
- [Remove every SKU of one style from the cart](https://connect.everugg.net.au/reference/delete-api-v1-carts-account-products-product-code.md?lang=en): `DELETE /api/v1/carts/{account}/products/{product_code}` · write

## Me

- [How far you have got: exchanged a token / can read the catalogue / can create an order / can see what is short / can submit](https://connect.everugg.net.au/reference/get-api-v1-me-readiness.md?lang=en): `GET /api/v1/me/readiness`

## Feeds

- [Build a product feed (Google Merchant spec — this is also the bulk export): produces csv / xml / json in one go and stores them for scheduled fetch](https://connect.everugg.net.au/reference/get-api-v1-feeds-products.md?lang=en): `GET /api/v1/feeds/products`
- [Check where the product feed build stands: building / done / failed (with the failure reason), plus the row count, build time and issues of the latest artifact](https://connect.everugg.net.au/reference/get-api-v1-feeds-products-status.md?lang=en): `GET /api/v1/feeds/products/status`

## Reference material

- [Error codes](https://connect.everugg.net.au/reference/errors.md?lang=en): `error.code` in error responses is stable — branch on it, never on the text. `error.docUrl` points at the matching row here.
- [Data model](https://connect.everugg.net.au/reference/ontology.md?lang=en): The domain model behind the business: entities, fields, relations. Only externally visible fields are listed. Machine-readable JSON-LD is at `/ontology`.
- [Connect your AI (MCP)](https://connect.everugg.net.au/reference/mcp.md?lang=en): Your AI (Claude Desktop, Cursor, or an agent you wrote) connects to the gateway with your token; the tool list is trimmed to your permissions — connecting an AI never widens access.
- [Changelog](https://connect.everugg.net.au/changelog.md?lang=en): Only customer-visible changes are recorded: endpoints, parameters, response shapes, error codes, rate limits, authentication. The version is in every response's `X-API-Version` header.

## Tools

- [CLI](https://connect.everugg.net.au/cli.md?lang=en): Command line for developers, scripts and command-capable AI agents; install: `curl -fsSL https://connect.everugg.net.au/cli/install.sh | sh`
- [MCP](https://connect.everugg.net.au/reference/mcp.md?lang=en): Your AI (Claude Desktop, Cursor, or an agent you wrote) connects to the gateway with your token; the tool list is trimmed to your permissions — connecting an AI never widens access.

## Machine-readable

- [OpenAPI](https://connect.everugg.net.au/swagger/json?lang=en): OpenAPI spec (JSON)
- [Domain ontology (JSON-LD)](https://connect.everugg.net.au/ontology)
- [A2A agent card](https://connect.everugg.net.au/.well-known/agent-card.json)
- MCP: `https://connect.everugg.net.au/mcp`

## Optional

- [Full version (every page in one file)](https://connect.everugg.net.au/llms-full.txt?lang=en)
