Changelog & Upgrades
Overview
Updates to the Invox Medical API — including new features, fields, or endpoints — are released under a new dated version to ensure stability and predictability. This means your integration won't be affected by these changes unless you explicitly opt into the newer version.
Version History
PENDING-PROD-DATE: permission enforcement (all API versions)
X-Invox-Medical-Api-Version header. Update your API Key permissions before this date.AI Services Updates
- Translation: Translate transcription and Translate clinical note require the permission
TRANSLATE. Without it they return403witherrorTypeinvalidPermission. - Document deletion: Delete document requires the permission
GENERATE-REPORT. Without it it returns403witherrorTypeinvalidPermission. - Behavior change:
DELETE /v1/delete-documentnow returns404for documents not created with the same API Key (or, for Suite sessions, by the same user). - Rotated credentials: after you rotate a credential, documents created with the previous API Key can no longer be deleted.
- A malformed JSON body in
/v1/delete-documentand/v1/translate-clinical-notenow returns 400inconsistentInput(previously500). - Granting or removing a permission can take up to 2 hours to take effect, because access tokens already issued keep the permissions they had when they were created.
Version 2026-11-01
X-Invox-Medical-Api-Version header resolve to
2026-11-01. On Generate clinical note, a template that
used to end in a 500 now returns a 400. If you need the previous behaviour, pin the header to 2026-10-01.AI Services Updates
Generate clinical note: template errors
- Without the version header or with
2026-11-01: a template that used to be rejected with500(errorGeneratingMedicalReport) because of a structural defect, such as a missingtemplate_nameortemplate_description, a value that is not a string, or anullfield, now returns400witherrorTypeinvalidTemplateSchema. The message has the formatTemplate schema validation failed: <path>: <rule>and never includes the values you sent. A missingtranscriptionreturns400(invalidTranscription). - With
2026-10-01or earlier: the500is kept. Pin the header to2026-10-01to keep it. - The templates and the
400errors that already worked are unchanged, with the sameerrorTypeand message.
Published contracts
- The API publishes the template and the report as versioned JSON Schemas, public and without authentication:
GET <baseUrl>/api/v1/contracts/template-definition/v1andGET <baseUrl>/api/v1/contracts/report-output/v1. They are immutable: a change is published asv2. - The unversioned JSON Schema in S3 is legacy and is no longer updated.
- The documentation fixes the
400error type of an invalid field type to its real value,fieldsWithInvalidType.
Other endpoints
- All AI Services and SOFT Integration endpoints available in
2026-10-01also accept2026-11-01, with no changes in their behaviour. - The legacy
/api/v1/generate-reportendpoint does not support2026-11-01.
Version 2026-10-01
X-Invox-Medical-Api-Version header resolve to
2026-10-01. If your integration relies on the previous behaviour of the Medical Text Formatter, pin the header to
2026-08-01.AI Services Updates
Medical Text Formatter: new contract
The Medical Text Formatter endpoint (POST /api/v1/medical-text-formatter) introduces a new contract:
- New request fields:
formatting_level(optional,"low"|"medium"|"high", default"medium"): sets the maximum degree of intervention, from a deterministic cleanup (low) to AI-assisted reorganization (medium) or style editing (high).immutable_words(optional,string[], default[]): words or expressions that must be kept exactly as written (same case and accents) in the formatted text.
textlimits:textis required and must be between 1 and 50000 characters.- Fields without effect:
languageandpreserve_caseare still accepted but ignored. The language of the text is always detected automatically. - Response changes: the
messagefield is removed and a newtimestampfield (ISO 8601, UTC) is added.formatted_textandrequest_idare kept. - Error responses: errors now always return a
{ message, errorType }body with status400(invalidRequestBody),500(errorGeneratingMedicalReport) or503(serviceTemporarilyUnavailable). The previous422response is no longer returned.
Other endpoints
- All AI Services and SOFT Integration endpoints available in
2026-08-01also accept2026-10-01, with no changes in their behaviour. - The legacy
/api/v1/generate-reportendpoint does not support2026-10-01. It remains available only in2025-10-01and2025-11-01. Use Generate Clinical Note instead.
Management API Updates
X-Invox-Medical-Api-Version header. These changes apply to every request. Request payloads are unchanged, except for the new optional fields of Search events.New endpoints
- Disable user (
PATCH /users/:id/disable): disables a user who belongs only to your organization, so they can no longer sign in. - Enable user (
PATCH /users/:id/enable): enables a disabled user who belongs only to your organization, including users blocked after too many failed login attempts.
Behaviour change
- Invite user: an Organization Admin can no longer invite users with the
ORGANIZATION_OWNERrole. The request now returns403witherrorType: "notAllowedResource", the same response that Edit user already returns for this rule. Only an Organization Owner can invite Organization Owners.
Search events: pagination and new filters
Search events (POST /events/search) can now export every event of an organization, page by page:
- Pagination: there is no longer a maximum number of events per search. The new optional
pageSizefield (1 to 5000, default 500) sets the events per page, and the response includes a newpaginationobject (pageSize,count,hasMore,nextCursor). SendnextCursorascursorto get the next page;hasMore: falsemeans there are no more events. - New optional filters:
organizationId(any organization in which you are Owner or Admin; by default, the selected one),eventNameandeventType(a single value or an array). userIdis optional: when omitted, the events of every user in the organization are returned.- More event data: each event now includes
eventType,sectionandresource. In CSV output these columns, andmetadata, are added after the existing ones, which keep their order. - Default page size: requests without
limitorpageSizenow return up to 500 events instead of 100.limitis still accepted as a deprecated alias ofpageSize, now from 1 to 5000. - Validation: a
startTimestampgreater thanendTimestampnow returns400(invalidTimestampRange) instead of an empty list. NewerrorTypevalues:invalidPageSize,invalidCursor,invalidUserId,invalidOrganizationId,invalidEventNameandinvalidEventType. - Errors: a search that cannot be resolved in time returns
504(searchQueryTimeout), and a failed search returns500. Previously both cases could return200with an empty list.
Fixes (same status codes and response structure)
- Select account: sending a
selectedAccountthat is not one of your organizations no longer clears your current selection. - Group list: requests without
limitnow return the groups of the organization instead of an empty list. - Invite user: a
groupIdthat does not belong to your organization is ignored, and the user is created without a group. When the email already had a platform account, theidfield now contains the user identifier. - Delete group: the users of a deleted group are left without a group (
groupId: "NOT-DEFINED") instead of pointing to the deleted group. - Delete user: deleting a user who belongs to several organizations now only removes them from your organization.
- Requests with a body that is not valid JSON still return
400, now with a JSON body instead of an HTML page.
Documentation
- All Management API pages now document the complete output of each endpoint: response fields,
401and403bodies, and everyerrorTypeanderrorMessagevalue. See Common responses.
Version 2026-08-01
SOFT Integration
New integration model
- Introduced SOFT Integration, which lets your EHR open an Invox Genesis consultation for a physician without the physician logging in, and retrieve the resulting clinical note.
- New endpoint Generate signature (
POST /api/v1/generate-soft-integration-signature) to authorize a single consultation for a single physician. - New endpoint Get consultation result (
GET /api/v1/soft-integration/{requestId}/result) to retrieve the clinical note once the consultation has finished. - New endpoint Cancel consultation (
DELETE /api/v1/soft-integration/{requestId}) to release a physician whose session was abandoned. - SOFT Integration consultations are notified through the existing
OnMedicalReportFinishedwebhook event, marked withorigin: "SOFT_INTEGRATION"and carrying the optionalconsultationMetadata. There is also a WebSocket channel for the browser. - Requires an API Key holding the new
GENESIS-SOFT-INTEGRATIONpermission.
400 and
invalidApiVersionForEndpoint, since they did not exist in 2026-03-01 or before. Existing integrations are
unaffected: this release adds endpoints and never changes the behaviour of the previous ones.requestId values are single-use. Once accepted, a requestId can never be reused, not even after the
consultation is cancelled. Generate a fresh value on every attempt.AI Services Updates
Generate Clinical Note Enhancements
- Added a new
generationMetadatafield to the Generate Clinical Note response. It provides detailed information about the generation outcome, including whether the result was partial, the number of failed fields, per-field status, and a recommendation for the client. - Supports partial responses: when one or more fields fail to generate, the response now returns the successfully generated fields along with
failedFields(each with areasonCodeandretryableflag) and arecommendation(e.g.RETRY_RECOMMENDED).
generationMetadata field in the Generate Clinical Note response.Version 2026-03-01
New Features
Updates
- All previous features from version 2025-11-01 are included and maintained.
- Addeed new endpoints for generating pre-signed URLs for document uploads and deleting uploaded documents in the context of clinical note generation.
- Added Consultation Summary Generation endpoint to generate summaries based on audio transcriptions.
- Added IM Tools endpoints
- Added support for generating clinical note in Euskera, Galician and Valencian.
Webhooks
- Added Webhooks documentation section with full reference for all available webhook events, including credentials, signature verification algorithm, and implementation examples in TypeScript, C#, Java, and Python.
- Supported events:
OnTranscriptionFinished,OnMedicalReportFinished,OnInvoxAuraTranscriptionFinished,OnInvoxAuraClinicalNoteCreated,OnInvoxAuraClinicalNoteFinished,OnInvoxAuraAudioCreated, andOnAlertTriggered.
Version 2025-11-01
AI Services Updates
Streaming Transcription Enhancements
- Updated input data contract: we introduce the session concept
- Removed callbackUrl field as mandatory when opening the web socket
- Added a new kind of message type:
END_TRANSCRIPTION - Clarified the usage of isTranscriptionCompleted field
For more details, check the Streaming Transcription Guide and the Get Transcription endpoint.
New Translation Endpoints
- Added endpoint for translating transcriptions: We have added a new endpoint that allows translating transcriptions generated by our AI services. Check the Translate Transcription endpoint for more details.
- Added endpoint for translating clinical notes: We have added a new endpoint that allows translating clinical notes generated by our AI services. Check the Translate Clinical Note endpoint for more details.
Changed Generate Report Endpoint
- New endpoint for generating medical reports: We have renamed the existing
generate-reportendpoint togenerate-clinical-noteto better reflect its purpose. Check the Generate Clinical Note endpoint for more details.
Management API Updates
- Select account after successful authentication: After successfully authenticating, users can now select the desired account to work with, enhancing flexibility for multi-account users. For more details, refer to the Select account.
- Search events: allow us get events or actions performed by users in the platform. Check the Search Events endpoint for more details.
- Login endpoint: Output contracts have been updated: added
accountsfield to list all accounts associated with the authenticated user, addeduserIdfield to identify the user, addedfullNamefield to provide the user's full name.
Version 2025-10-01
Initial Release
- First version of the API
- Core AI Services functionality
- Management API endpoints
- Authentication system
Upgrade Guide
Migrating to Version 2026-11-01
There is nothing to migrate if you already send X-Invox-Medical-Api-Version: 2026-10-01 or an earlier version: your integration behaves exactly as before. The rest of the endpoints behave exactly as in 2026-10-01.
Generate clinical note: template errors
- What changes: only the templates that used to be rejected with
500(errorGeneratingMedicalReport) because of a structural defect, such as a missingtemplate_nameortemplate_description, a value that is not a string, or anullfield. They now return400witherrorTypeinvalidTemplateSchemaand a message with the formatTemplate schema validation failed: <path>: <rule>. A missingtranscriptionreturns400(invalidTranscription). - What does not change: the templates that were accepted, and every
400that already existed, keep the sameerrorTypeand message. - Version header: requests without the header use
2026-11-01. If you handle the500of an invalid template and are not ready to handle the400, sendX-Invox-Medical-Api-Version: 2026-10-01. - Published contracts: the template and the report are available as versioned JSON Schemas at
<baseUrl>/api/v1/contracts/template-definition/v1and<baseUrl>/api/v1/contracts/report-output/v1. They are public and do not need authentication.
Migrating to Version 2026-10-01
The only breaking change affects the Medical Text Formatter endpoint. The rest of the endpoints behave exactly as in 2026-08-01.
Medical Text Formatter Updates
- Request: stop sending
languageandpreserve_case, since they no longer have any effect. Use the new optionalformatting_levelandimmutable_wordsfields if you need them. - Response: remove any dependency on the
messagefield. Use the newtimestampfield if you need the date of the response. - Errors: handle
400,500and503responses with the{ message, errorType }body instead of the previous422response.503responses can be retried. - Version header: if you are not ready to upgrade, send
X-Invox-Medical-Api-Version: 2026-08-01. Requests without the header receive the2026-10-01contract.
Migrating to Version 2025-11-01
If you're currently using streaming transcription services, please review the following breaking changes:
Streaming Transcription Updates
- Session Concept: Update your integration to handle the new session-based workflow
- CallbackUrl Changes: The callbackUrl field is no longer mandatory when opening WebSocket connections
- New Message Types: Handle the new
END_TRANSCRIPTIONmessage type in your WebSocket message handlers - isTranscriptionCompleted Field: Update your logic to check for the
isTranscriptionCompletedfield to determine when transcription is complete and retrieve the transcription using the Get Transcription endpoint.
Recommended Actions
- Review your WebSocket implementation
- Update message type handlers
- Test with the new session workflow
- Update error handling for the new message structure
Targeting a specific version
Default API Version
If we don't specify a version when making API requests, the system will automatically use the latest stable version available. This ensures that we always benefit from the most recent features and improvements without needing to adjust our integration.
Specifying a Version
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-10-01
This approach allows us to maintain compatibility with a specific version of the API while still having the flexibility to upgrade when we're ready.