Skip to content
← Resources

Schedule connector

Send freed slots, bookings and glucose readings from your systems.

Create a connection in Organisation → Connections. The key is shown once; Aksh stores only its hash. Send it as a bearer token. Every request returns a result code per item, so your system can act on each one.

EndpointPurposeAccepts
POST /api/connect/v1/slotsFreed or taken slotsFHIR R4 Slot or Bundle, or { slots: [...] }
POST /api/connect/v1/appointmentsBookings read back from your scheduleFHIR R4 Appointment or Bundle, or { appointments: [...] }
POST /api/connect/v1/observationsGlucose readings from devicesFHIR R4 Observation or Bundle

Slots

curl -X POST https://www.akshhealth.com/api/connect/v1/slots \
  -H "Authorization: Bearer <connection key>" \
  -H "Content-Type: application/json" \
  -d '{ "slots": [ { "id": "S-1042", "version": 1, "status": "free",
        "appointmentType": "diabetes_review",
        "start": "2026-11-05T09:40:00+00:00", "durationMin": 20, "site": "Main site" } ] }'
  • id and an increasing version are required; resending the same version is safe. For FHIR, send meta.versionId or meta.lastUpdated.
  • Times need an offset (Z or +hh:mm). Slots last 5–240 minutes.
  • Map your own appointment codes to Aksh types in the connection settings. Unmapped types are reported as UNKNOWN_APPOINTMENT_TYPE.
  • Offers close a set number of hours before the slot (default 2). A slot too close to start is reported as OFFER_WINDOW_CLOSED.
  • A slot that becomes busy before anyone was offered it is withdrawn; after an offer, a person is asked to look.

Appointments

Send bookings with their slot reference and the patient’s record number ({ id, status, slotId, patientRecordNumber } in JSON). A booking for the patient staff selected, with status booked, arrived, fulfilled or checked-in, confirms the slot as filled. A different patient means the slot went elsewhere, and a person resolves it.

Glucose observations

Final, amended or corrected glucose Observations with an exact value and a timestamp with an offset. subject.identifier.value must be the patient’s record number. Duplicates by patient and time are skipped.

Common result codes

CodeMeaning
MISSING_VERSION / INVALID_VERSIONSend an integer version that increases with every change
INVALID_START / INVALID_ENDUse an ISO date-time with an offset
SLOT_STALEThe slot has already started
UNKNOWN_APPOINTMENT_TYPEMap this type in the connection settings
NO_PATIENT_IDENTIFIERInclude the patient’s record number
INEXACT_VALUEA value with <, > or similar is a bound, not a reading
OUT_OF_RANGE / FUTURE_TIMEGlucose outside 18–720 mg/dL (1–40 mmol/L), or a time in the future

Next: Going live