New: Klovio for NetSuite, SAP, Dynamics 365, Acumatica, Sage and Prophet 21New: Klovio for your ERP
API docs v4.12

Connect your systems to the warehouse floor.

The InventoryHero REST API and signed webhooks connect your ERP, SAP middleware, e-commerce and reporting tools. Read items, stock and the movement ledger, post receipts and transfers, and hear about every move the moment it happens.

The OpenAPI document for code generators and API clients is at inventory.klovio.app/api/v4/openapi.json

Request
GET /api/v4/items?externalRef=100042
Host: inventory.klovio.app
Authorization: Bearer ihk_…

200 OK
{
  "data": {
    "items": [{
      "sku": "SKU-000214",
      "name": "Nitrile gloves, box of 100",
      "externalRef": "100042",
      "uom": "box",
      "status": "active"
    }]
  }
}
Endpoints

What the API covers

39 endpoints in ten groups. Lists page with a cursor, and every call follows the same roles and rules as the app.

Items

Your catalog. Create and update items, look them up by ERP reference, export it all as CSV.

GET/itemsPOST/itemsGET/items/{id}PATCH/items/{id}GET/items/export

Vendors

Suppliers, with ERP references. Deleting one keeps its history.

GET/vendorsPOST/vendorsGET/vendors/{id}PATCH/vendors/{id}DELETE/vendors/{id}

Purchase orders

Create orders from your ERP as they are released, then receive against them.

GET/purchase-ordersPOST/purchase-ordersGET/purchase-orders/{id}PATCH/purchase-orders/{id}POST/purchase-orders/{id}/receive

Stock

Balances, the movement ledger, and receiving, issuing, adjusting and transferring stock.

GET/stockGET/stock/ledgerPOST/stock/receivePOST/stock/issuePOST/stock/adjustPOST/stock/transferGET/adjustment-reasons

Lots

Release, hold, quarantine or reject a lot.

GET/lotsPATCH/lots/{id}/status

Sites and bins

Your warehouses and every bin in them.

GET/sitesGET/sites/{id}/locations

Scan

Resolve any code: a GS1 label, an item barcode, a SKU, a serial or EPC, or a bin.

GET/scan/{code}

Reports

Any report as JSON, or as Excel or PDF with ?format=.

GET/reports/{report}

Webhooks

Create, update, test, rotate the secret and retry deliveries from code.

GET/org/webhooksPOST/org/webhooksPATCH/org/webhooks/{id}DELETE/org/webhooks/{id}POST/org/webhooks/{id}/rotate-secretPOST/org/webhooks/{id}/testGET/org/webhooks/{id}/deliveriesPOST/org/webhooks/{id}/deliveries/{deliveryId}/retry

API tokens

List, create and revoke tokens.

GET/org/api-tokensPOST/org/api-tokensDELETE/org/api-tokens/{id}
Built for integrations that run unattended

Safe by default

Scoped tokens

Give each integration its own token with the lowest role that does the job, then narrow it with scopes. Tokens can expire in 30, 90 or 365 days and revoke instantly.

Retries without double postings

Send an X-Request-Id with receipts and transfers. If a call times out and you retry, the first answer is replayed instead of receiving the stock twice.

ERP references

Store your ERP key on items, vendors and purchase orders, look records up with ?externalRef=, and get it back on every list, report, ledger row and webhook.

Only what changed

Pull changes since your last run with updatedSince and includeDeleted. Ledger rows never change once posted, so a window you have read is final.

Reports in any format

Every report comes back as JSON, or add ?format=xlsx or ?format=pdf to download it.

Audited like the app

Every change made through the API is written to the audit log under the token name, and the API can never do more than the token role could in the app.

Tokens and requests

Admins create tokens under Settings → API tokens. Pick a role (Admin, Manager or Viewer), untick the scopes the integration does not need, and copy the token: it is shown once and works for one workspace.

Scope→Allows
Read readEvery list, detail and report, the ledger, the truck schedule
Post stock stock:writeReceive, issue, adjust, transfer, receive against a purchase order, gate check-ins
Release and hold lots quality:writeLot status changes
Edit catalog catalog:writeItems, vendors, categories, sites and bins, imports, label printing
Manage orders orders:writePurchase orders and pick orders
Administration adminOrganization settings, users, API tokens, webhooks
Conventions
Base URLhttps://inventory.klovio.app/api/v4
AuthenticationAuthorization: Bearer ihk_…
Responses{ "data": … } on success, { "error": { "code", "message", "field" } } on failure
PaginationPass the cursor back as ?cursor=. ?limit= is 50 by default, 200 at most
Times and datesISO 8601 in UTC. Dates are YYYY-MM-DD
QuantitiesIn the item stocking unit. Money is in cents

Webhooks

Set them up under Settings → Webhooks. Each webhook shows its health, the last 50 deliveries with the receiver reply and the exact payload sent. Send test, Retry, Rotate secret and Pause are one click.

Event→When
stock.receivedA receipt without a purchase order was posted
purchase_order.receivedStock was received against a purchase order
stock.issuedStock left the warehouse
stock.adjustedA balance was corrected
stock.transferredStock moved between bins or sites
purchase_order.createdA purchase order was created
purchase_order.updatedA purchase order changed (status, lines, dates)
lot.status_changedA lot was released, held, quarantined or rejected
shortage.detectedThe daily sweep found items below minimum
pingYou pressed Send test
Delivery
POST https://your-system.example.com/inventoryhero
X-Klovio-Event: purchase_order.received
X-Klovio-Delivery: 01M4K4YHM335KQ1VNYH1ND8245
X-Klovio-Signature: t=1791600000,sig=5f1c…

{
  "event": "purchase_order.received",
  "attempt": 1,
  "data": {
    "poNumber": "PO-1042",
    "externalRef": "4500012345",
    "status": "partial",
    "lines": [{ "sku": "SKU-000214", "qty": 24, "lotCode": "L2610-07" }]
  }
}

Answer with any 2xx within 10 seconds. Anything else is retried after 1 minute, 5 minutes, 15 minutes, 1 hour, 4 hours, 12 hours and 24 hours, always with the same id, so duplicates are easy to ignore. The signature in X-Klovio-Signature is the HMAC-SHA256 of t.body with your signing secret; reject anything older than five minutes.

ERP integration

Every SAP installation is different, so Klovio delivers the SAP link as a scoped project with your SAP team. We work inside your integration platform (SAP Integration Suite, Boomi, MuleSoft) or provide the middleware.

Phase 1 · Available today

File exchange

SAP exports purchase orders and InventoryHero imports them. InventoryHero exports receipts and stock and SAP imports them, daily or hourly.

Phase 2 · Integration project

Live link

SAP creates purchase orders through the API as they are released. Goods receipts, issues and stock corrections post to SAP through webhooks the moment they happen on the floor.

SAP→InventoryHero
Material number (MATNR)Item · items.externalRef
Vendor number (LIFNR)Vendor · vendors.externalRef
Purchase order (EBELN)Purchase order · purchaseOrders.externalRef
Plant / storage location (WERKS / LGORT)Site and bin
Batch (CHARG)Lot · lotCode
Base unit of measure (MEINS)Stocking unit · uom

Versioning

The current version is 4.12. Within a version we only add new fields, endpoints, events and optional parameters. Nothing is removed, renamed or given a different meaning. A change that could break a client ships as a new version, with the previous one kept running for at least twelve months and workspace admins told by email.

Changelog
October 2026ERP references on items, vendors and purchase orders; updatedSince, includeDeleted, since and until filters; signed webhooks with retries; token expiry and scopes; the OpenAPI document.
September 2026API tokens, items, vendors, purchase orders, stock posting, the ledger, reports.

Plan your integration with us.

Tell us which systems you need to connect. We scope it with your team and test against a staging workspace before anything touches production.

Talk to us