# get a token curl -X POST "https://connect.everugg.net.au/api/v1/auth/token" -H "content-type: application/json" \ -d '{"client_id":"CHANNEL","client_secret":"SECRET"}' # only what changed (114 bytes when nothing did) curl "https://connect.everugg.net.au/api/v1/warehouses/AU/stock/changes?since=51204" \ -H "Authorization: Bearer $TOKEN"
ever call stock_changes --warehouse_code AU --since 0 --limit 1000
import requests
r = requests.get(
"https://connect.everugg.net.au/api/v1/warehouses/AU/stock/changes?since=0&limit=1000",
headers={"Authorization": "Bearer " + TOKEN},
)
data = r.json()
r.raise_for_status() # 4xx/5xx: data["error"]["code"] / ["hint"]const res = await fetch("https://connect.everugg.net.au/api/v1/warehouses/AU/stock/changes?since=0&limit=1000", {
headers: { Authorization: `Bearer ${TOKEN}` },
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error?.code}: ${data.error?.message}`)HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://connect.everugg.net.au/api/v1/warehouses/AU/stock/changes?since=0&limit=1000"))
.header("Authorization", "Bearer " + token)
.GET()
.build();
HttpResponse<String> res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());{
"mcpServers": {
"ever-api": {
"url": "https://connect.everugg.net.au/mcp",
"headers": {
"Authorization": "Bearer <your-token>"
}
}
}
}200 · 5 ms · x-stock-version: 51218 { "code": 200, "result": { "version": 51218, "hasMore": false, "changes": [ { "Barcode": "OB0021611", "AvaiStockQty": 14 } ] } }
Today's calls, error rate, webhook success, per-warehouse sync cursors; filter and export logs, rotate your own secret. No need to ask anyone.
Look around in the sandbox →Pull the whole warehouse once, then only /Changes. Response headers carry a version; fall behind and you catch up, fall too far and it tells you to do a full sync. Rate limiting counts rows actually returned, so staying current costs almost nothing.
Create wholesale and drop-ship orders. Orders are drafts by default, confirmed by a person in the ERP; send an Idempotency-Key header and a repeated submit never creates a second order.
Register an endpoint and we push whenever stock changes. Every delivery is signed, failures retry automatically, dead letters can be re-sent by hand — all visible in the console.
check_stock, find_products, get_statement, quote_order / place_order / cancel_order, and quote_dropship / place_dropship / release_dropship. One action may chain several calls internally and returns the answer (what is short, what it costs, which document was created). Nothing was removed: list_endpoints and call_endpoint still reach every endpoint, with exactly the same permissions.GET /api/v1/balances, /transactions (each with the balance after it), /bills, /refunds and /freight-bills. Until now these existed only on the OMS website, so month-end had to be reconciled by hand.POST /api/v1/dropship-orders/allocation-preview tells you line by line what can be allocated, what is short, when it arrives and what it costs; then POST /api/v1/dropship-orders/submit. Note the preview holds stock — release it with DELETE /api/v1/dropship-orders/{dropship_order_id}/allocation if you decide not to submit.