Evolution ERP Documentation

Evolution ERP Documentation

Evolution ERP API – Inventory Endpoints

The Evolution ERP API allows authorised clients to retrieve individual inventory items and perform fuzzy, keyword‑based searches across the inventory catalogue.

Get Item Endpoint

Retrieve a single inventory item by exact code.

  • HTTP Method: GET
  • Endpoint:
    https://app.evolutionerp.com.au/api/getItem/{inventory_code}
Example
GET /api/getItem/ITEM-1001
    

This endpoint is intended for exact lookups such as SKU resolution, barcode scans, and system integrations.

By default the code in the URL is matched against inventory.code. Add ?target=id to match against the internal inventory ID instead:

GET /api/getItem/1001?target=id
    
Response Fields

Beyond the item’s core details (code, description, category, cost, primary supplier), getItem returns:

status_label
Human-readable form of status"Active" or "Disabled".
soh / allocated / onorder / available
Stock totals across every branch. available is soh − allocated and can be negative when an item is over-allocated.
branches
Per-branch breakdown — every branch is listed, with soh, allocated, onorder and available for that branch specifically (zero where the item has never been stocked there).
has_bom / bom
Whether the item has a Bill of Materials, and the direct component list (inventoryId, code, description, qty, cost). Each component carries its own has_bom flag — call getItem again on a component whose has_bom is true to walk into its own sub-assembly. Only one level is returned per call.
has_kit / kits
Sales-time suggested bundle items — a separate concept from the BOM (kits are things typically sold alongside the item, not components used to build it). Each entry carries qty, auto (pre-selected by default) and an optional groupname/group_mode for grouped choices.
Example Response
{
  "id": 9643,
  "status": 1,
  "code": "P50X50X1.6X1800BLK",
  "category": "Fencing",
  "description": "50x50x1.6 Post 1800mm Black",
  "cost": 23.00,
  "primarysupplier": "ACME Fencing Supplies",
  "supplierCodes": [],
  "status_label": "Active",
  "soh": 359,
  "allocated": 452,
  "onorder": 0,
  "available": -93,
  "has_bom": true,
  "bom": [
    { "inventoryId": 264, "code": "CLHG90050315KK", "description": "905H x 50 x 3.15mm Chainlink Fabric",
      "qty": 6.16, "cost": 4.77, "has_bom": true }
  ],
  "has_kit": true,
  "kits": [
    { "inventoryId": 5014, "code": "CB-PO21-MR", "description": "Installation of Bracing Assembly",
      "qty": 1, "auto": false, "groupname": "", "group_mode": 0 }
  ],
  "branches": [
    { "id": 1, "name": "Fabrication Center", "soh": 324, "allocated": 452, "onorder": 269, "available": -128 },
    { "id": 2, "name": "Steel Supplies Hunter", "soh": 0, "allocated": 0, "onorder": 0, "available": 0 }
  ]
}
    

Setting the Xmlresponse header returns the same fields as XML, including nested <BOM>, <Kits> and <Branches> sections.

Search Items Endpoint

Search the inventory catalogue using fuzzy, multi‑keyword matching with optional filters and pagination.

  • HTTP Method: GET
  • Endpoint:
    https://app.evolutionerp.com.au/api/searchItems

Authentication

All inventory endpoints use HTTP Basic Authentication.

  • Username: Company Code
  • Password: Access Token
Authorization Header
Authorization: Basic <base64(companycode:accesstoken)>
    
Required Headers
Accept: application/json
Tenantid: TENANT123
Authorization: Basic QklPQUNUMDE6Yzc4ZDljYWNiNWQ0YTRkYzhkZTc...
    
Optional Headers

If this header exists the API endpoint will return xml where available, otherwise API will return JSON

Xmlresponse: 1 {any value}
    

Search Query Parameters

q
Search keywords (+ Seperated EG searchItems?q=phrase1+phrase2 )
category
Filter by category ID
supplier
Filter by supplier ID
limit
Maximum results (default 20, max 100)
offset
Pagination offset
debug
Returns unformatted debug output

Search terms are split into individual keywords and matched using AND logic. All keywords must be present in either the item code or description.

Results are ranked by relevance:

  • Exact code match (highest priority)
  • Code prefix match
  • Description match
Examples
/api/searchItems?q=office chair OR /api/searchItems?q=office+chair
/api/searchItems?q=steel stool&category=5 OR /api/searchItems?q=steel+stool&category=5
/api/searchItems?q=CHAIR deluxe&limit=10 OR /api/searchItems?q=CHAIR+deluxe&limit=10
    

Pagination

Large result sets can be paginated using limit and offset.

/api/searchItems?q=chair&limit=20&offset=20
    

Example Response

{
  "query": "office chair",
  "count": 2,
  "limit": 20,
  "offset": 0,
  "items": [
    {
      "id": 101,
      "code": "CHAIR-OFF-01",
      "description": "Ergonomic Office Chair",
      "category_name": "Office Furniture",
      "price": 199.95,
      "supplier_name": "ACME Supplies",
      "status_label": "Active",
      "soh": 12,
      "allocated": 2,
      "onorder": 0,
      "available": 10,
      "has_bom": false,
      "has_kit": true
    },
    {
      "id": 102,
      "code": "CHAIR-OFF-02",
      "description": "Steel Office Chair",
      "category_name": "Office Furniture",
      "price": 149.00,
      "supplier_name": "ACME Supplies",
      "status_label": "Active",
      "soh": 0,
      "allocated": 0,
      "onorder": 20,
      "available": 0,
      "has_bom": false,
      "has_kit": false
    }
  ]
}
    

searchItems returns the same status_label/soh/allocated/onorder/available/has_bom/has_kit fields as getItem on every row, but not the full bom/kits/branches detail — call getItem on a specific item once you know which one you need the full breakdown for.

Rate Limiting

To protect the API, rate limits are enforced per client.

  • searchItems: 20 requests per minute
  • getItem: 60 requests per minute
HTTP/1.1 429 Too Many Requests
    

Error Responses

  • 400 – Invalid or missing parameters
  • 401 – Authentication failure
  • 403 – Invalid Tenant ID
  • 404 – Item not found
  • 429 – Rate limit exceeded
  • 500 – Internal server error

Security Notes

  • Always use HTTPS when accessing the API
  • Never expose access tokens publicly
  • Do not call the API from client‑side JavaScript
  • Rotate access tokens if compromised

See Also

Looking for customer/contact endpoints instead? See Contact Endpoints.

Support

For assistance with API access, authentication, or inventory queries, please contact Evolution ERP Support.