For AI agents
Officestock API v1
Read-only HTTP API. JSON over HTTPS, GET only. Base URL: https://northique.com. Every link in an answer is a full URL you can open as is.
Site guide for AI tools: https://northique.com/llms.txt. Real example links: "Start here" at the end of this page.
What the API can do
| Endpoint | Params | Returns |
|---|---|---|
| /agent/v1/catalog | locale | Markets, languages, categories, every filter with its values, the product list |
| /agent/v1/catalog/colors | locale | Every colour value for the col filter (kept out of the catalog to keep it small) |
| /agent/v1/find * | locale, market, filters, sort, page (1–2), gen | Search: up to 5 builds per page — title, price, currency, availability, link, image |
| /agent/v1/products/{id}/map | locale | What can be chosen on a product: sizes, colours, add-ons, default build |
| /agent/v1/products/{id}/build * | locale, market, choices | One exact build for the given choices — price, availability, link, image, what was adjusted |
| /agent/v1/builds/{hash} * | locale, market | One build in full: title, options, sizes, price, availability, link, image |
| /agent/v1/pages/{key} | locale | Store pages: delivery, returns, warranty, policies |
* Needs access (see Access). Add .md to builds/{hash} or pages/{key} for Markdown.
Choosing a build
- A product's map lists its choices by key: size_{id}=<mm>, color_{id}=<colour id>, addon_{id}=1|0.
- Where only one of several can be on, the map lists them together in one_of: send addon_{id}=1 for the one you want, and the others switch off.
- Some choices exist only after another one is on (for example more seats unlock more pedestals). The map marks them with only_when: each entry is one way to reach them, so send those choices too.
- A few large products have more choices than their map lists. Their map says "complete": false; the build page has them all.
- Anything you do not choose stays as in the default build. The answer's snapped lists what could not be built exactly as asked.
Access
- Approved search engines and AI assistants are verified by their published IP ranges or DNS. A user-agent alone is never enough.
- Without access, endpoints marked * return 403. Everything else is open to everyone.
Status codes
| Code | Meaning |
|---|---|
| 200 | OK |
| 400 | Unknown parameter or value — use only values from the catalog or the product's map |
| 403 | No access — see Access |
| 404 | Unknown product, build or page |
| 405 | Not GET |
| 410 | Build retired |
| 429 | Rate limit — wait Retry-After seconds |
| 503 | Temporarily unavailable or catalog updating — wait Retry-After seconds |
Rules
- Rate limits apply per caller. Search is metered.
- Same request, same answer until the catalog changes. Every answer carries the catalog version gen.
- Prices and stock depend on market. Default: the store's default market.
- Read stock from availability: in_stock, out_of_stock, made_to_order (then lead_days = days to make) or unknown.
- Send users to the build url; it works immediately. A new build's image may take up to a minute: use it when image_ready is true (until then the image URL answers 403).