REST API capability questions — external workflow integration, pre-build validation
Posted: Wed Sep 23, 2026 5:21 am
Hi Simpro community,
I'm in the pre-build phase of a third-party integration that connects Simpro to an external workflow. Before committing to the architecture I want to validate a number of technical assumptions. I've worked through the REST API documentation but have several edge-case questions I haven't been able to confirm. I'll group them by topic.
Topic 1 — Webhooks
The integration is triggered by job creation and job updates. I need to confirm webhook behaviour before designing around it.
- When job.created fires, does the webhook payload contain the full job object including all fields and line items, or does it deliver only a job ID requiring a subsequent GET /jobs/{id} call to retrieve the data?
- Is there any way to filter webhook subscriptions by job type, job status, or custom field value at the subscription level? Or does every job.created and job.updated event fire regardless of what changed on the record?
- What is the typical delivery latency under normal platform load?
- Is there a retry mechanism if the receiving endpoint is temporarily unavailable? If so, what is the retry window, frequency, and maximum retry count?
Topic 2 — Job record fields at creation time
The integration needs to read specific fields immediately after a job is created — before any further human interaction with the job inside Simpro.
- Are labour estimate lines populated on the job object at the moment of creation, or are they typically added after the job exists?
- Is due_date consistently present on jobs generated from the maintenance planner at the time of creation, or can it be absent depending on how the job was raised?
- Is there a field that indicates how a job was originated — for example, whether it came from the maintenance planner, a manual raise, or a quote conversion?
- Are custom fields on the job record readable via the REST API at job creation time, and if so, what does the response structure look like?
Topic 3 — Site and asset data
The integration needs to read information stored at the site and asset level, not just at the job level.
- Are site-level contact records readable via the REST API? Can multiple contact types be stored against a single site (for example, a primary contact and a secondary contact with different roles), and are all of them returned via the API?
- Are custom fields on site or customer records readable via the REST API? Can they be used as filter parameters on job queries — for example, retrieving all jobs for sites where a specific custom field equals a specific value?
- When a job is generated from an asset, are the asset's details — including any custom fields or default labour times stored at the asset or catalogue item level — accessible on the job object via the API? Or would a separate call to an asset or catalogue endpoint be required to retrieve those details?
- Is there a reliable way to identify which asset type or catalogue service item a job line relates to from the job record alone?
Topic 4 — Write-back via PATCH
After an external event occurs, the integration needs to write data back to the Simpro job record.
- Can custom field values on a job be updated via PATCH /jobs/{id}?
- Are there any job status values that are write-protected via the API — that is, statuses that can only be set from within the Simpro UI and cannot be written via the API?
- Is there a recommended pattern for storing a small external reference against a job record — for example, a confirmation token, an external status flag, or a timestamp — without interfering with the job's standard workflow?
Topic 5 — Rate limits and query efficiency
The integration will need to handle varying job volumes without hitting limits.
- Does the 10 requests per second rate limit apply per API key, per Simpro build, or per originating IP address?
- For GET /jobs list queries, is server-side filtering available — for example, filtering by job status, due date range, or site — to avoid pulling the full job set on each poll?
- What is the maximum page size for paginated job list responses?
Topic 6 — Sandbox environment
- What is the current process for an independent developer to request a sandbox environment for building and testing an integration?
- Is sandbox access available prior to formal Simpro partner status, or does it require an existing partnership agreement?
- Any guidance appreciated, including pointers to specific API documentation sections I may have missed. Happy to clarify any of the above if the use case needs more context.
I acknowledge that I have asked alot, Your effort is very much appreciated. Thanks in advance.
I'm in the pre-build phase of a third-party integration that connects Simpro to an external workflow. Before committing to the architecture I want to validate a number of technical assumptions. I've worked through the REST API documentation but have several edge-case questions I haven't been able to confirm. I'll group them by topic.
Topic 1 — Webhooks
The integration is triggered by job creation and job updates. I need to confirm webhook behaviour before designing around it.
- When job.created fires, does the webhook payload contain the full job object including all fields and line items, or does it deliver only a job ID requiring a subsequent GET /jobs/{id} call to retrieve the data?
- Is there any way to filter webhook subscriptions by job type, job status, or custom field value at the subscription level? Or does every job.created and job.updated event fire regardless of what changed on the record?
- What is the typical delivery latency under normal platform load?
- Is there a retry mechanism if the receiving endpoint is temporarily unavailable? If so, what is the retry window, frequency, and maximum retry count?
Topic 2 — Job record fields at creation time
The integration needs to read specific fields immediately after a job is created — before any further human interaction with the job inside Simpro.
- Are labour estimate lines populated on the job object at the moment of creation, or are they typically added after the job exists?
- Is due_date consistently present on jobs generated from the maintenance planner at the time of creation, or can it be absent depending on how the job was raised?
- Is there a field that indicates how a job was originated — for example, whether it came from the maintenance planner, a manual raise, or a quote conversion?
- Are custom fields on the job record readable via the REST API at job creation time, and if so, what does the response structure look like?
Topic 3 — Site and asset data
The integration needs to read information stored at the site and asset level, not just at the job level.
- Are site-level contact records readable via the REST API? Can multiple contact types be stored against a single site (for example, a primary contact and a secondary contact with different roles), and are all of them returned via the API?
- Are custom fields on site or customer records readable via the REST API? Can they be used as filter parameters on job queries — for example, retrieving all jobs for sites where a specific custom field equals a specific value?
- When a job is generated from an asset, are the asset's details — including any custom fields or default labour times stored at the asset or catalogue item level — accessible on the job object via the API? Or would a separate call to an asset or catalogue endpoint be required to retrieve those details?
- Is there a reliable way to identify which asset type or catalogue service item a job line relates to from the job record alone?
Topic 4 — Write-back via PATCH
After an external event occurs, the integration needs to write data back to the Simpro job record.
- Can custom field values on a job be updated via PATCH /jobs/{id}?
- Are there any job status values that are write-protected via the API — that is, statuses that can only be set from within the Simpro UI and cannot be written via the API?
- Is there a recommended pattern for storing a small external reference against a job record — for example, a confirmation token, an external status flag, or a timestamp — without interfering with the job's standard workflow?
Topic 5 — Rate limits and query efficiency
The integration will need to handle varying job volumes without hitting limits.
- Does the 10 requests per second rate limit apply per API key, per Simpro build, or per originating IP address?
- For GET /jobs list queries, is server-side filtering available — for example, filtering by job status, due date range, or site — to avoid pulling the full job set on each poll?
- What is the maximum page size for paginated job list responses?
Topic 6 — Sandbox environment
- What is the current process for an independent developer to request a sandbox environment for building and testing an integration?
- Is sandbox access available prior to formal Simpro partner status, or does it require an existing partnership agreement?
- Any guidance appreciated, including pointers to specific API documentation sections I may have missed. Happy to clarify any of the above if the use case needs more context.
I acknowledge that I have asked alot, Your effort is very much appreciated. Thanks in advance.