Manage your storage listings from your own systems
Create locations and boxes, keep prices and availability up to date, upload pictures and send listings for review, all from your own software, with a simple, predictable REST API.
https://api.boxlatvia.lvcurl -X PUT "$API/v1/boxes/by-external-id/SKU-3M" \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-H "Content-Type: application/json" \
-d '{
"available_units": 6
}'const API = "https://api.boxlatvia.lv";
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}`);
const res = await fetch(`${API}/v1/boxes/by-external-id/SKU-3M`, {
method: "PUT",
headers: { Authorization: auth, "Content-Type": "application/json" },
body: JSON.stringify({
"available_units": 6
}),
});
console.log(res.status, await res.json());import requests
API = "https://api.boxlatvia.lv"
r = requests.put(
f"{API}/v1/boxes/by-external-id/SKU-3M",
auth=(CLIENT_ID, CLIENT_SECRET),
json={
"available_units": 6,
},
)
print(r.status_code, r.json()){
"id": "c4883b4a-4e38-47bf-8a69-ef025917e022",
"external_id": "SKU-3M",
"name": "Box 3 m²",
"status": "DRAFT",
"available_units": 6,
"price": 31.5,
"updated_at": "2026-11-07T14:05:41.092Z"
}One API, everything you maintain
Six areas, each with endpoints, field descriptions and runnable examples.
From first call to published listing
- 1Get access
Ask BoxLatvia for credentials. You receive a client ID and a secret, limited to the scopes you need.
- 2Connect
Call
GET /v1/mewith HTTP Basic or an OAuth token to check that everything works. - 3Create and maintain
Create locations and boxes, upload pictures, and keep price and stock current with one call per box.
- 4Submit for review
When a box is complete, submit it. BoxLatvia reviews and publishes it on boxlatvia.lv.
Built for dependable integrations
The details that matter when software, not a person, is on the other end.
Safe updates
Every object carries an ETag. Send it back in If-Match and you can never overwrite a change you have not seen. How it works
Retries without duplicates
Add an Idempotency-Key and a retried request returns the original result instead of creating a second box. Read more
Dry runs
Add ?validate_only=true to any write: every check runs, nothing is saved. Read more
Your own ids
Give boxes and locations your own external_id and keep your system's identifiers: no mapping tables. Read more
Every problem at once
Validation returns all errors in one answer, in a standard problem format, with a request id for support. Error reference
You stay in control
Scopes limit what each credential may do, and you can revoke, rotate and restrict them by IP address at any time. Scopes
Ready to connect your system?
Tell us which system you want to connect and we will set up credentials.