List products
Read your catalog out - to price a storefront, fill a quoting tool, or check what's on the shelf from somewhere else.
/api/public/v1/products Headers
| Header | Value | Why |
|---|---|---|
| X-AUTH-TOKEN | obl_live_... | Your API key. Every call needs one. |
Parameters
| Name | In | What it does |
|---|---|---|
| _page | query | Rarely needed. Follow the Link header instead. Defaults to 1. |
| updatedSince | query | Only products touched at or after this moment. The same incremental pattern as contacts. |
The call
curl https://app.obraledger.com/api/public/v1/products \
-H "X-AUTH-TOKEN: obl_live_..." Want to fill this in and run it? Open it in the playground.
What comes back
An array of products, with a Link header pointing at the next page. There's no total count - see how paging works.
Generated from the contract, so it is every field and nothing invented. The values are type names rather than a specimen record - we won't put made-up data on a page.
[
{
"id": "string",
"createdAt": "string",
"updatedAt": "string",
"name": "string",
"description": "string",
"productNumber": "string",
"articleCode": "string",
"ean": "string",
"upcCode": "string",
"hsnCode": "string",
"brand": "string",
"model": "string",
"type": "string",
"version": "string",
"remark": "string",
"infoUrl": "string",
"serialNumber": "string",
"labels": "string",
"tags": [],
"categoryId": "string",
"unitId": "string",
"status": "string",
"isInactive": false,
"isSaleItem": false,
"isPurchaseItem": false,
"isStockItem": false,
"isCatalogItem": false,
"isWebShop": false,
"isFeaturedProduct": false,
"stockProductType": "string",
"validFrom": "string",
"validTo": "string",
"salePrice": "decimal string",
"saleRrpPrice": "decimal string",
"salePriceIncludesTax": false,
"salePriceDecimals": 0,
"saleTaxCode": "string",
"saleTaxStatus": "string",
"isSaleIndividual": false,
"isShippingRequired": false,
"isShippingTaxable": false,
"saleLedgerAccountCode": "string",
"purchaseLedgerAccountCode": "string",
"stockLedgerAccountCode": "string",
"cogsLedgerAccountCode": "string",
"stockQuantity": 0,
"stockMinimalQuantity": 0,
"stockLocation": "string",
"quantityDefault": 0,
"quantityBackorder": 0,
"stockDescription": "string",
"stockDocumentTypes": [],
"color": "string",
"diameter": "string",
"depth": "string",
"height": "string",
"length": "string",
"opening": "string",
"width": "string",
"volume": "string",
"weight": "string"
}
] When it fails
Match on the type in the body, not on
the status. A 403 covers both "this key can't do that" and "this record won't allow it", and the
number alone can't tell you which.
- 401 Authentication failed — the `X-AUTH-TOKEN` header is missing, malformed, revoked, or belongs to a different company. Not retryable: the same token will fail identically.
- 403 Authenticated, but not allowed to do this.
- 429 Rate limit exceeded for this API key. `Retry-After` says how many seconds to wait; `X-RateLimit-Limit` and `X-RateLimit-Remaining` report the budget on every response, not just this one.
The rest of products
- get Get one product /api/public/v1/products/{id}
- post Create a product /api/public/v1/products
- patch Update a product /api/public/v1/products/{id}
- delete Delete a product /api/public/v1/products/{id}
Base URL https://app.obraledger.com. This page is
generated from the contract the product publishes.
Building something and stuck? Tell us - we'd rather hear it than have you guess.