Rate limiting is now enforced.Rate Limiting previously noted there was no fixed per-minute cap. The API now applies per-minute and per-day limits, counted per practitioner credential (not pooled across your partner account). Requests over a limit receive 429 Too Many Requests with a Retry-After header. See the page for the per-endpoint figures.
Removed allowIscreenInvoiceNotification from the Patient endpoints. It was added on 2026-08-06 and has since been withdrawn: suppressing the email removed the patient's only notification of an invoice, leaving them no way to pay it. i-screen now always sends the invoice payment-link email. The field is ignored if you send it, so no action is needed on your side.
Add allowIscreenInvoiceNotification to Patient endpoints (defaults to true). Set to false to suppress the invoice payment-link email on POST /invoices if you're sending your own branded version instead. Note there was never a separate email on settlement, only the practitioner is notified then, so this one flag covers the full invoice email lifecycle for the patient.
Clarify that Request form is ready and Results are ready fire once per test, while Invoice settled notification and Order ready notification fire once per order/invoice, consolidating every test inside it.
Correct Invoice settled notification: this fires for invoices created via POST /invoices too, once the patient pays. Previously implied it only applied to practitioner-portal-created invoices.
Add collectedDate attribute to Get a single test and Get multiple tests endpoints — the date the sample was collected, distinct from result.availableDate (results release) and resultsDueDate (estimated turnaround).
Add POST /patients/link-requests/:linkRequestId/simulate-approval trigger (staging only) to approve a link request without requiring the patient to click the email link, mirroring the existing settle/results triggers.
Document the 404 response from POST /patients/link-requests when no i-screen account exists at all for the given email.
Clarify exactly which patient-facing email each notification flag gates: allowIscreenPathologyFormNotification only affects the request-form email on directly purchased orders; it does not affect the invoice payment-link email, which is never suppressible since the patient needs it to pay.
Add type field to every webhook payload (results-ready, form-ready, patient-link-request-approved; invoice-settled and order-ready already had it). If you point more than one webhookUri.* field at a single receiving endpoint, use type to dispatch instead of inspecting payload shape.
GET /patients/link-requests now supports skip/limit pagination (response now returns {total, limit, skip, data}) and validates the status filter against pending/approved/expired.
Add 409 Conflict response to Create a new patient for an email that already belongs to an existing i-screen account, with a data.reason discriminator (PATIENT_ALREADY_LINKED or PATIENT_EXISTS_CONSENT_REQUIRED).
Add Patient link requests endpoints (POST /patients/link-requests, GET /patients/link-requests, GET /patients/link-requests/:linkRequestId) to request a patient's consent to connect an existing i-screen account to your practitioner.