// developers
REST + webhooks. JSON in, JSON out.
Two API surfaces share the same auth and conventions: an inventory and order API for ERPs and partners, and a B2B-specific API for companies, contract pricing, and quote requests. Both versioned (v1), paginated and rate-limited.
# Place a B2B order (wire / Net-30)
curl https://ol-y.com/api/v1/public/orders \
-H "X-API-Key: $OLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"purchase_order_number": "PO-2026-0418",
"payment_method": "wire",
"items": [
{ "ean": "7350012340001", "qty": 24 },
{ "ean": "7350012340018", "qty": 12 }
],
"shipping": {
"company": "Acme Wholesale GmbH",
"street": "Hauptstrasse 12",
"postal_code": "10115",
"city": "Berlin",
"country": "DE"
}
}'// Pull live inventory every 5 minutes
import { Velicoo } from "velicoo-sdk";
const client = new Velicoo({ apiKey: process.env.VELICOO_API_KEY });
setInterval(async () => {
const stock = await client.inventory.list({
updatedSince: lastSync,
limit: 500,
});
await syncToErp(stock);
}, 5 * 60 * 1000);b2b api
Wholesale-specific surfaces, called out explicitly.
Companies, buyers and quote requests are first-class resources — not customer-table workarounds.
| Method | Path | Required scope |
|---|---|---|
| GET | /api/v1/public/inventory | read:inventory |
| GET | /api/v1/public/inventory/{ean} | read:inventory |
| GET | /api/v1/public/products | read:inventory |
| GET | /api/v1/public/companies | read:companies |
| POST | /api/v1/public/companies/{id}/quotes | write:quotes |
| POST | /api/v1/public/orders | write:orders |
| GET | /api/v1/public/orders | read:orders |
| GET | /api/v1/public/orders/{id} | read:orders |
| GET | /api/v1/public/orders/{id}/invoice.pdf | read:orders |
// webhooks
Subscribe once. Reliable retries.
HMAC-SHA256 signed payloads, replay protection via timestamp header, exponential backoff retries up to 24 hours.
order.createdorder.paidorder.shippedorder.deliveredorder.cancelledorder.refundedcompany.appliedcompany.approvedcompany.updatedquote.requestedquote.respondedquote.convertedcustomer.createdcustomer.updatedproduct.createdproduct.updatedproduct.stock_changed
sdks
Hit REST directly. Or use a thin SDK.
Node.js / TypeScript
availablenpm install velicoo-sdkGo
availableImport path on signupPython
on requestAvailable when a customer commits