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.
availableissoh − allocatedand can be negative when an item is over-allocated. branches- Per-branch breakdown — every branch is listed, with
soh,allocated,onorderandavailablefor 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 ownhas_bomflag — callgetItemagain on a component whosehas_bomistrueto 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 optionalgroupname/group_modefor 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
Fuzzy & Multi‑Keyword Search
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.