EpicorFree generatorPDF, Excel, Word exportEpicor KineticDiscrete Manufacturing

Epicor REST API v2 URL Builder for OData Services and BAQs

The Epicor REST API v2 exposes business objects and saved BAQs as OData endpoints. Getting the URL right, with company, service, entity and encoded filter, is where most first calls fail. This builder assembles the pieces for you.

Fill in

Generated code
Download:

Business object GET

GET https://erp.example.com/Kinetic/api/v2/odata/EPIC06/Erp.BO.JobEntrySvc/JobHeads?$top=50&$filter=JobReleased%20eq%20true%20and%20JobClosed%20eq%20false&$select=JobNum,PartNum,ProdQty,DueDate

Saved BAQ GET

GET https://erp.example.com/Kinetic/api/v2/odata/EPIC06/BaqSvc/OpenJobsByOp/Data?$top=50

Headers

Authorization: Basic <base64 of user:password>
x-api-key: <your API key>
Accept: application/json
Content-Type: application/json

curl example

curl -X GET "https://erp.example.com/Kinetic/api/v2/odata/EPIC06/Erp.BO.JobEntrySvc/JobHeads?$top=50&$filter=JobReleased%20eq%20true%20and%20JobClosed%20eq%20false&$select=JobNum,PartNum,ProdQty,DueDate" -H "Authorization: Basic <base64>" -H "x-api-key: <key>" -H "Accept: application/json"

Confirm the URL pattern, entity set names and authentication scheme for your Kinetic version and hosting, since cloud and on-premises setups can differ. Never put credentials in source control, and test against a non-production instance first.

Integration design review

Planning an Epicor integration or AI layer over the REST API? Request an optional design discussion.

Optional. The tool and every export work without this. No spam.

How to use the builder

Fill in your host, instance and company, select a service and set the entity set, filter and fields. Copy the GET line into a REST client such as Postman, add the headers, and run it against a test instance. For BAQ results, enter the BAQ ID and use the BAQ call. Always URL-encode spaces in filters as percent twenty.

  • Pattern: host / instance / api/v2/odata / company / service / entity
  • Use $select to return only the fields you need
  • Use $top while testing to limit the load
  • Send an API key header plus your normal credentials

OData filters in practice

Filters use operators such as eq, ne, gt, lt, and and or. String values go in single quotes and booleans are written true or false. For example, a filter for released and open jobs combines two boolean conditions with and. URL-encode the filter so spaces and quotes survive transport. Test small filters first and add conditions one at a time.

Business objects versus BAQs

Business object services are good for reading and writing standard entities and respect the business logic and BPMs on the service. BAQs are better for read-only joined data that you have already designed. A BAQ call needs the query saved, and the calling user needs permission to run it.

Common mistakes

Forgetting the company segment, using the wrong instance name, leaving spaces unencoded, and requesting every field of a large table with no top. Also check that the API key is valid for the user and that the user has access to the service in security. Hard-coded credentials in scripts are a frequent audit finding.

Frequently Asked Questions

What does an Epicor REST API v2 URL look like?

The pattern is the server, the instance name, then api/v2/odata, then the company ID, the service name and the entity set, with OData query options after a question mark. Exact details depend on version and hosting, so confirm in your API help page.

How do I authenticate to the Epicor REST API?

Most setups use an API key header together with credentials such as basic authentication, though token-based options exist depending on version and hosting. Use a dedicated integration account with limited security rights and keep keys out of source control.

Can I call a saved BAQ over REST?

Yes. Saved BAQs can be reached through the BAQ service by ID, returning the query results as JSON. The calling user needs access to the BAQ, and query parameters can be supplied as options on the URL.

Why do I get an empty list or a 401?

An empty list usually means the filter is too narrow or the wrong company is used. A 401 points to a missing or invalid API key or credentials. Check the company segment, encoding of the filter and the security of the integration user.

If you are building integrations over Epicor, we can help design a read-only API layer with logging and approval for any write-back.