Epicor BAQ OData REST URL Builder (api/v2 BaqSvc and Erp.BO)
Epicor REST v2 follows a predictable URL pattern, but typos in the instance, company or BAQ segment waste hours. This builder assembles the URL, headers and a curl equivalent so you can test in Postman or a script in seconds.
Fill in
BAQ call (GET)
GET https://erp.example.com/KineticProd/api/v2/odata/EPIC06/BaqSvc/ZOpenJobs/Data?$top=100&$filter=JobHead_PartNum eq 'BRK-1001' Authorization: Basic <base64 of user:password> x-api-key: <your API key> Accept: application/json
Business object call (GET)
GET https://erp.example.com/KineticProd/api/v2/odata/EPIC06/Erp.BO.PartSvc/Parts?$top=100&$select=PartNum,PartDescription Authorization: Basic <base64 of user:password> x-api-key: <your API key> Accept: application/json
Same BAQ call as curl
curl -G "https://erp.example.com/KineticProd/api/v2/odata/EPIC06/BaqSvc/ZOpenJobs/Data" \ --data-urlencode "$top=100" \ --data-urlencode "$filter=JobHead_PartNum eq 'BRK-1001'" \ -H "x-api-key: YOUR_API_KEY" \ -u "user:password" \ -H "Accept: application/json"
Replace placeholder credentials; never commit real keys. Check your Epicor version and whether your site uses basic auth, token auth or both, and that the REST API and the BAQ are enabled for the API key. BAQ column names in filters usually take the form Table_Column; confirm in the BAQ designer.
Review my Epicor integration design
Optional: a short expert review of an Epicor REST integration approach.
Optional. The tool and every export work without this. No spam.
How to use the builder
Fill in the server, instance, company and BAQ ID, then copy the BAQ call. Paste into Postman, add your credentials and the x-api-key header, and send. For business objects, set the service and entity set, for example Erp.BO.PartSvc and Parts, and use $select to return only the columns you need. Adjust $top to page through large results, with $skip for the next page.
Anatomy of the URL
The path is host, instance, api/v2/odata, company, then either BaqSvc and the BAQ ID or a business object service and entity set. BAQs are called with /Data at the end. Queries use standard OData options.
- $top and $skip: paging
- $filter: row restriction, for example Field eq 'value'
- $select: limit returned columns
- $orderby: sort, for example DueDate desc
- Headers: Authorization and x-api-key for v2
Common mistakes
Calling a BAQ that is not published or not shared with the API user returns an authorization or not found error. Using single quotes incorrectly in $filter, forgetting to URL-encode spaces, or pulling an entire table with no $top causes timeouts. Remember that a BAQ with required parameters needs those parameters supplied. Keep keys in a vault, and test against a non-production instance first.
Frequently Asked Questions
Is an API key required for REST v2?
Epicor Kinetic REST v2 uses an API key sent in the x-api-key header along with normal credentials. Keys are created in the Epicor administration area and can be restricted. Check your version's documentation for the exact setup.
How do I page through more than 100 rows?
Use $top for the page size and $skip for the offset, increasing $skip by the page size each call. Keep the sort stable with $orderby so rows do not move between pages.
Can I use this for updates?
The builder shows GET calls. Updates use POST, PATCH or business object method calls with a JSON body, and they fire BPMs and security. Test thoroughly in a non-production instance before writing data.
Why do I get 404 on my BAQ?
Typical causes are a wrong BAQ ID, wrong company or instance segment, or a BAQ that is not exposed to REST. Verify the BAQ name in Query Builder and confirm the URL pattern against a working call.
If you are building many integrations on Epicor REST, Netray can help design read-only access patterns and AI layers on top of them.
Related Tools
Epicor Business Object Service Reference
Lookup table of common Erp.BO services with their main table, primary key and standard method names.
EpicorEpicor Open Jobs BAQ SQL Generator
Generates a read-only T-SQL query listing open, released jobs from Erp.JobHead with optional due-date and part filters.
EpicorEpicor BPM Custom Code Block Generator
Generates a C# custom code block for an Epicor method directive that validates a field on a temp table and raises an error or message.
EpicorEpicor BPM Directive Types Reference
Lookup table of Epicor BPM directive types, when each runs, whether it can stop a save, and typical use.
More Epicor tools
See all- Epicor Kinetic Customization Change Request Form Template
- Epicor Kinetic Go-Live Cutover Plan Template
- Epicor Kinetic User Access Request Form Template
- Epicor Kinetic BPM Directive Inventory Worksheet
- Epicor Kinetic Scheduled Task Register Worksheet
- Epicor Kinetic Custom Report Inventory Worksheet
- Epicor Kinetic Data Migration Mapping Worksheet
- Epicor Kinetic Data Load Effort Calculator
- Epicor Business Object Services Reference