Explore Reliqra 3.0. List to your Whatnot shop through the Whatnot API, improved card scanning, and clearer valuations. See What's New →

Pro · Developer API

Build on your own inventory.

The Reliqra API lets Pro workspaces read and update inventory, record sales, and read shipment records shared with the app, extension and Cloud. Base URL: https://api.reliqra.com/v1.

Authentication

Every request carries your key in a header. There's no OAuth flow to implement.

curl https://api.reliqra.com/v1/inventory \ -H "X-Reliqra-Api-Key: rqk_live_<your key>"
  • Create keys in Cloud. Settings › Developer API, named and scoped. The full key is shown once, at creation.
  • Pro only. A key from a non-Pro workspace gets 403 plan_required on every route. Re-upgrading restores the same key.
  • Scoped, not all-or-nothing. Each key carries only the scopes you grant it.
  • Revoke anytime. Revoking works even on a downgraded workspace.
Settings › Developer API with masked keys

Reference

Routes.

POST /orders is reserved and returns 501 today, so clients can detect it.

RouteScopeNotes
GET /inventoryinventory:readFilters: status, updated_after. Paginated.
GET /inventory/{reliqra_id}inventory:read404 if not in your workspace.
PATCH /inventory/{reliqra_id}inventory:writeUpdate status, sold_price, cost, value or quantity. Send JSON null to clear a value; omit a key to leave it untouched.
GET /items/{item_id}/image/{front|back}inventory:readRedirects to a short-lived signed photo URL. Never returns the URL in a JSON body.
GET /salessales:readFilter: since (ISO date). Paginated.
POST /salessales:writeRecord a sale. Idempotent on (marketplace, marketplace_external_id) when provided.
GET /shipmentsshipments:readIncludes nested shipment items.
GET /eventsevents:readPull-based change feed: ?after=<cursor>. Poll with your stored cursor.
POST /ordersorders:writeReserved — returns 501 today.

Scopes

Available scopes: inventory:read, inventory:write, sales:read, sales:write, shipments:read, events:read, and the reserved orders:write. A call missing the scope it needs gets 403 missing_scope.

Pagination & writes

?limit= (default 100, max 500) and an opaque ?cursor=. Every list response includes next_cursor, null when you're on the last page. Writes accept an Idempotency-Key header. Replay the same key and you get the original result back instead of a duplicate.

Errors & rate limits

Error Shape

{"error":{"code","message"}}. Common codes: invalid_key, revoked_key, missing_scope, plan_required, not_found, validation_error, rate_limited.

Rate Limit

120 requests/minute per key by default. A 429 carries Retry-After, a number of seconds.

5xx Is Retryable

internal_error, upstream_error and service_unavailable are infrastructure paths. Back off and retry.

Questions about a specific integration?

The events feed is built for polling-based sync (accounting tools, your own site). Tell us what you're building and we'll point you at the right routes.

Ask About the API →