API reference

35 endpoints. Responses are JSON; errors carry an error string and the status code that matches what went wrong.

Authentication

Sign in at POST /api/auth/login and send the returned ws-access-token and ws-refresh-token cookies with subsequent requests. The access token is an RS256 token from our identity provider, verified on every request; a modified one is rejected outright rather than downgraded to an anonymous session.

curl -s -X POST https://warehousescanner.co/api/auth/login \
  -H 'content-type: application/json' \
  -d '{"email":"you@company.com","password":"…"}' \
  -c cookies.txt

curl -s https://warehousescanner.co/api/dashboard/stats -b cookies.txt

Endpoints marked Operator additionally require an operator or owner role. Long-lived API keys are not issued yet — see integrations.

Directory

Open data derived from mapped building outlines. No authentication.

Method Path Auth Summary
GET /api/warehouses Public Paged list of facilities.
GET /api/warehouses/search Public Filter by region, country, type and floor area. Names any filter it could not apply rather than ignoring it.
GET /api/warehouses/{slug} Public One facility, including the OpenStreetMap way id it was derived from.
GET /api/regions Public Regions with facility counts and combined floor area.
GET /api/facility-types Public The facility type codes used by the filters.
GET /api/cities Public Cities the directory can be browsed by. Facilities with no mapped city are excluded rather than invented.
GET /api/operators Public Operator names recorded on mapped facilities. Listing does not imply a commercial relationship.
GET /api/health Public Liveness, dataset size and build stamp.

Rates and quotes

Every price here came from an operator answering a specific requirement.

Method Path Auth Summary
GET /api/rates Public Rates from quotes that are still within their validity window. Empty until operators have answered.
POST /api/quotes/rfq Session Send a requirement to a facility. Counts against the plan's monthly rate-request allowance.
GET /api/quotes Session Your own requests and their answers.
GET /api/quotes/{reference} Session One rate request, with the operator's answer when it has been given.
POST /api/quotes/{reference}/answer Operator Operator-side: price a request.
POST /api/quotes/{reference}/decline Operator Operator-side: decline with a reason.

Bookings and stock

A booking takes its price from the quote it was created from.

Method Path Auth Summary
GET /api/bookings Session Bookings belonging to your account, cancelled ones included.
POST /api/bookings/create Session Create from an answered quote. The request body cannot set a price.
GET /api/bookings/{reference} Session One booking, with its quoted price, term and current status.
POST /api/bookings/{reference}/update Session Amend term or quantity.
POST /api/bookings/{reference}/cancel Session Cancel with a reason.
GET /api/movements Session Recorded receipts and despatches.
POST /api/movements Session Record one. A despatch exceeding stock on hand is refused.
GET /api/inventory Session On-hand quantities per booking.
GET /api/capacity Session Committed units by month. Does not report free space — no operator supplies it.

Account

Session-cookie authenticated.

Method Path Auth Summary
POST /api/auth/login Public Exchange credentials for a signed session cookie.
POST /api/auth/signup Public Create an account.
POST /api/auth/logout Session Clear the session.
GET /api/auth/me Session The current account.
POST /api/account/password Session Change your password. Requires the current one.
GET /api/dashboard/stats Session The figures behind the dashboard, scoped to your account.
GET /api/billing/usage Session Plan counters for the current month.

Workspace

Saved facilities and support conversations, scoped to your own account.

Method Path Auth Summary
GET /api/shortlist Session Saved facilities, joined to the live directory record rather than a copy taken at save time.
POST /api/shortlist Session Save a facility, or update the note on one already saved. Saving twice is one entry, not an error.
DELETE /api/shortlist Session Remove a saved facility. Answers 404 when it was never saved.
GET /api/support Session Your support tickets and the replies on them.
POST /api/support Session Open a ticket, or reply to one by sending its reference.

Rate limits

Searches and rate requests count against the monthly allowance on your plan. When a payment provider is configured, an exhausted allowance returns 429 with the counter in the body. Until then the counters are recorded and not enforced, and /api/billing/usage says which mode the deployment is in.