Get consultation result
Retrieves the clinical result produced during a SOFT Integration consultation, identified by the requestId you
generated when requesting the signature.
Use this endpoint after being notified that the result is ready, either through the WebSocket or through the webhook.
Request description
Endpoint: /api/v1/soft-integration/{requestId}/result
Method: GET
Path parameters
| Parameter | Required | Description |
|---|---|---|
requestId | Yes | The identifier you sent when generating the signature for this consultation. |
Header
{
"Authorization": "Bearer <accessToken>"
}
The access token is the same one used to generate the signature. Access is scoped to the organization that owns the consultation: a token from a different organization is rejected.
To set the API version on a specific request, you can add a specific header named X-Invox-Medical-Api-Version with the value of the version you are targeting:
X-Invox-Medical-Api-Version: 2026-08-01
2026-08-01 is the only version this endpoint accepts. Omitting the header resolves to the latest version.
Result availability
The result is kept in temporary storage for 24 hours after the consultation finishes. Once that period elapses
the result is removed and the endpoint responds 410.
Responses
Correct response
Successful request
Describe the characteristics of a satisfactory response
200
Response structure:
{
"result": {
// identical payload to the onReportFinished webhook event
}
}
result has the same clinical and correlation fields as the
OnMedicalReportFinished webhook event, so you can process both with the same parser. If the organization
has a webhook credential configured, it also includes requestSignature; otherwise that field is omitted. The
payload structure is documented in Notifications — Webhook.requestSignature is not the value the webhook delivered for the same consultation. Each channel signs the
payload it sends, so the two signatures differ while both remain valid. Verify this one against the body of this
response, exactly as received.Wrong responses
Unauthorized request
Describe the characteristics of an unauthorized request
401
Response body
{
// empty body
}
Description: no valid credential was supplied.
Forbidden request
Describe the characteristics of a forbidden request
403
Response body
{
"message": "The requested consultation belongs to another organization.",
"errorType": "invalidPermission"
}
Description: the requestId exists but belongs to a different organization.
Not found
Describe the characteristics of a request for an unknown consultation
404
Response body
{
"message": "No consultation found for the provided requestId.",
"errorType": "requestNotFound"
}
Conflict
Describe the characteristics of a request for a consultation still in progress
409
Response body
{
"message": "The consultation has not finished yet.",
"errorType": "resultNotReady"
}
Description: the consultation exists but has not produced a result yet. Wait for the notification instead of polling aggressively.
Gone
Describe the characteristics of a request for an expired result
410
Response body
{
"message": "The result is no longer available.",
"errorType": "resultExpired"
}
Description: the result was produced but has already been removed from temporary storage. It cannot be recovered; the consultation would have to be repeated.
Example
const response = await fetch(
`https://api-suite.invoxmedical.com/api/v1/soft-integration/${requestId}/result`,
{ headers: { Authorization: `Bearer ${accessToken}` } },
);
switch (response.status) {
case 200: {
const { result } = await response.json();
// persist the result in your EHR
break;
}
case 409:
// not finished yet — wait for the notification
break;
case 410:
// expired — no longer recoverable
break;
default:
// 401 / 403 / 404 — check credentials and requestId
}