SYSPRO REST API URL Builder for the e.net WCF Service
This builder writes the complete SYSPRO e.net REST call sequence for SYSPRO 7 and SYSPRO 8 on-premises: Logon, a Query business object, a Transaction Post business object and Logoff. It also gives a PowerShell script that runs the same calls with proper URL encoding and always logs off.
Fill in
Use the REST port configured for your SYSPRO e.net communications (WCF) service. 40000 is only a placeholder; check your service configuration.
1. Logon (returns the session UserId)
GET http://sysapp01:40000/SYSPROWCFService/Rest/Logon?Operator=ADMIN&OperatorPassword=[Operator password]&CompanyId=EDU1&CompanyPassword=[Company password] # Response body: a session token such as 96AB04439FC3B84BAEC49E6E11DA770900 followed by trailing spaces. # Trim it, or URL-encode the spaces, before using it as UserId below. A body containing ERROR means the logon failed.
2. Query business object
# XmlIn before encoding: # <Query><Key><StockCode>A100</StockCode></Key></Query> GET http://sysapp01:40000/SYSPROWCFService/Rest/Query/Query?UserId=<UserId>&BusinessObject=INVQRY&XmlIn=%3CQuery%3E%3CKey%3E%3CStockCode%3EA100%3C%2FStockCode%3E%3C%2FKey%3E%3C%2FQuery%3E
3. Transaction post business object
# XmlParameters and XmlIn come from the sample XML for SORTOI (parameters document and data document). # Post with validation only first, then switch the parameter off once the response is clean. GET http://sysapp01:40000/SYSPROWCFService/Rest/Transaction/Post?UserId=<UserId>&BusinessObject=SORTOI&XmlParameters=<url-encoded parameters XML>&XmlIn=<url-encoded document XML>
4. Logoff (always, even after an error)
GET http://sysapp01:40000/SYSPROWCFService/Rest/Logoff?UserId=<UserId> # Log off in a finally block so a failed query or post does not leave the session open.
PowerShell: full sequence with Invoke-RestMethod
$base = "http://sysapp01:40000/SYSPROWCFService/Rest"
$enc = { param($s) [uri]::EscapeDataString($s) }
$logonUrl = "$base/Logon?Operator=" + (& $enc 'ADMIN') + "&OperatorPassword=" + (& $enc '[Operator password]') + "&CompanyId=" + (& $enc 'EDU1') + "&CompanyPassword=" + (& $enc '[Company password]')
$userId = (Invoke-RestMethod -Method Get -Uri $logonUrl).ToString().Trim()
if ($userId -match 'ERROR') { throw "Logon failed: $userId" }
try {
$xmlIn = '<Query><Key><StockCode>A100</StockCode></Key></Query>'
$queryUrl = "$base/Query/Query?UserId=" + (& $enc $userId) + "&BusinessObject=INVQRY&XmlIn=" + (& $enc $xmlIn)
$result = Invoke-RestMethod -Method Get -Uri $queryUrl
$result | Out-File -FilePath .\INVQRY-result.xml -Encoding utf8
# Transaction post: load the parameter and document XML from files you prepared
# $xmlParams = Get-Content .\SORTOI-params.xml -Raw
# $xmlDoc = Get-Content .\SORTOI-doc.xml -Raw
# $postUrl = "$base/Transaction/Post?UserId=" + (& $enc $userId) + "&BusinessObject=SORTOI&XmlParameters=" + (& $enc $xmlParams) + "&XmlIn=" + (& $enc $xmlDoc)
# Invoke-RestMethod -Method Get -Uri $postUrl
}
finally {
Invoke-RestMethod -Method Get -Uri ("$base/Logoff?UserId=" + (& $enc $userId)) | Out-Null
}Routes and parameter names (Rest/Logon, Rest/Query/Query, Rest/Transaction/Post, Rest/Logoff; Operator, OperatorPassword, CompanyId, CompanyPassword, UserId, BusinessObject, XmlIn, XmlParameters) match the SYSPRO 7 and SYSPRO 8 e.net WCF REST endpoint. Check on your release: the REST port and binding in the service configuration, whether an HTTPS endpoint is configured, firewall rules for that port, and the exact XML for each business object from its sample files. Long XmlIn strings can exceed URL length limits; use the SOAP/WCF binding for large documents.
Get your SYSPRO integration calls reviewed
Send us the business objects and XML you plan to use and we will check the call sequence, error handling and session cleanup against your SYSPRO release.
Optional. The tool and every export work without this. No spam.
How to use it
Enter the application server host, the REST port your e.net WCF service listens on, the operator and company credentials, and the business objects you want to call. Copy the Logon URL into a browser or Postman first: if it returns a session token you know the service, port, firewall and credentials are right. Then paste that token into the UserId placeholder of the Query URL. Only after a query works should you move to a Transaction Post, and run it with the business object's validate-only parameter set before posting for real.
- The REST port is set in the service configuration, not by the business object.
- The session token comes back with trailing spaces; trim it.
- Always call Logoff, otherwise sessions consume licences until they time out.
Where this lives in SYSPRO
The URLs target the SYSPRO e.net communications service (the WCF service, path SYSPROWCFService) that hosts the REST endpoint next to its SOAP endpoints. Query objects (for example INVQRY for inventory, COMFND for a generic table browse) live under Query, and transaction objects (for example SORTOI to import sales orders, PORTOR for purchase order receipts) live under Transaction/Post. Every business object has a sample parameters XML and a sample document XML with matching XSD files; start from those rather than writing XML by hand. The operator you log on with needs access to the business object and its programs, the same as a user in the client.
Worked example
With host sysapp01, company EDU1 and operator ADMIN, the Logon call returns a token like 96AB04439FC3B84BAEC49E6E11DA770900. The INVQRY call then passes XmlIn of <Query><Key><StockCode>A100</StockCode></Key></Query>, URL-encoded, and returns the item's warehouse and quantity details as XML. For SORTOI you pass two documents: XmlParameters (processing options such as validate only) and XmlIn (orders, headers and lines). The response contains a status per order and line plus any error messages, so log the full response body. The PowerShell block writes the query result to a file you can open in any XML viewer.
Version differences and gotchas
The REST routes are the same on SYSPRO 7 and SYSPRO 8, but the service host, ports and bindings depend on how the e.net service was configured at install, and an HTTPS endpoint exists only if someone configured it. A 404 usually means the wrong port or that the REST endpoint is not enabled, not a bad business object. GET URLs are limited in length, so a large SORTOI document can fail before it reaches SYSPRO; use the SOAP binding for bulk posts. Test against a copy company first: a successful Transaction Post creates real orders and stock movements.
Frequently Asked Questions
Does SYSPRO have a REST API?
Yes. The SYSPRO e.net WCF service exposes a REST endpoint alongside SOAP. You call Rest/Logon to get a session UserId, then Rest/Query/Query or Rest/Transaction/Post with a BusinessObject name and XML input, and finish with Rest/Logoff. The payloads are the same XML documents the business objects use over any other e.net binding.
What port does the SYSPRO REST service use?
It is whatever REST port was configured for the e.net WCF service at your site. Check the service configuration on the application server rather than relying on a number from a blog. Make sure that port is open in Windows Firewall and any network firewall between the caller and the SYSPRO server.
Why does my SYSPRO query return an error about the UserId?
Usually the token was not trimmed, was not URL-encoded, or the session already expired or was logged off. Log on again, trim the returned string, encode it with EscapeDataString, and reuse it for the whole sequence. A logon response that contains ERROR means the operator, password or company details are wrong.
How do I integrate SYSPRO with HubSpot or another SaaS app?
A middleware layer calls the e.net service on your network: query business objects to read customers, items and orders, and transaction business objects such as SORTOI to create orders from the SaaS app. Keep the SYSPRO service off the public internet and expose only the middleware, with its own authentication and logging.
If you want your team to query SYSPRO in plain English through these same business objects on your own servers, we can set that up.
Related Tools
SYSPRO SQL Query Generator
Generate read-only SQL Server queries against common SYSPRO tables. Fill in database and filters, then copy the code.
Other ERPsSYSPRO Common Table Name Reference
Searchable list of frequently used SYSPRO tables with module, purpose and key columns, for report writers and integrators.
Other ERPsSYSPRO Reporting Services (SRS) Print and Preview Troubleshooting Checklist
A structured checklist for SYSPRO 8 Reporting Services problems: reports or documents that will not print, preview or email, after an install, upgrade or hotfix.
Other ERPsSage X3 REST API Query URL Builder (Syracuse api1)
Fill in server, endpoint folder, class, representation and filters to get ready-to-run Sage X3 api1 query and detail URLs with curl and PowerShell examples.
More Other ERPs tools
See all- SYSPRO Private AI Layer Blueprint Generator
- SYSPRO AI Assistant Sizing and Value Calculator
- SYSPRO SORTOI Sales Order Import XML Generator (e.net Business Object)
- Infor VISUAL Work Order Status and Structure Reference
- Infor VISUAL Manufacturing Scheduling Checklist
- Infor XA (MAPICS) Period End Close Checklist
- Infor VISUAL Database Table Reference
- Infor XA (MAPICS) Application Module Reference
- IBM i Commands for Infor XA Administrators Reference
Keep exploring
Free tools
- SYSPRO Private AI Layer Blueprint GeneratorGenerate a shareable architecture plan for adding a private, on-prem AI assistant to SYSPRO: read replica, e.net business objects, retrieval index, local model serving, permissions and audit.
- SYSPRO SORTOI Sales Order Import XML Generator (e.net Business Object)Fill in customer, PO, stock code and quantity to get the SORTOI parameters XML, the document XML and the C# call that posts them through e.net.
- SYSPRO SQL Query GeneratorGenerate read-only SQL Server queries against common SYSPRO tables. Fill in database and filters, then copy the code.
ERP fixes and how-tos
- SYSPRO API Documentation: e.net Business Objects and RESTWhere SYSPRO API documentation lives, how e.net business objects and web services work, the logon and query flow, auth, example XML and common integration pitfalls.
- SYSPRO API integration: e.net business objects, REST, EDI and OfficeHow to integrate with SYSPRO 8: e.net business objects, web service and REST options, EDI and Office integration, with a table of which route fits which job.
- How to Create a SYSPRO Sales Order with the SORTOI Business ObjectHow to create SYSPRO sales orders from another system with the SORTOI business object: logon, parameter XML, document XML, error handling and common traps.
AI on your ERP
- AI for SYSPRO production and job costingHow AI reads SYSPRO WIP jobs, labor and material postings to explain job cost variances and late work orders, with read-only access and on-prem hosting.
- AI for SYSPRO, Grounded in Your Own Manufacturing DataAdd AI to SYSPRO without moving your manufacturing data to a public model. On-premise and private-cloud LLMs for SYSPRO in Australia, NA, and beyond.
Integrations
- How to add AI agents to SYSPROHow to add AI agents to SYSPRO: tool layer over e.NET business objects and SQL Server, MRP exception triage, PO expediting, human approval before any posting.
- How to add WhatsApp to SYSPROHow to add WhatsApp to SYSPRO: use e.net business objects and SQL Server data to send order, shipment and approval messages and capture replies back into SYSPRO.