API Docs

Telemedicine API

Audio and video consultations inside your own application, with the recording, transcription, clinical summary and prescription that come out of each one.

What you get

  • Audio and video appointments. Secure telehealth consultations between a patient and a provider.
  • Two summaries per call. transcriptionSummary is the clinical record for providers; patientSummary is the plain-language version for the patient.
  • Doctor's notes and e-prescriptions. Created during or after the consultation, retrievable on the appointment.
  • Call recordings. Audio of the completed appointment, as one or more files if the session was split.

Appointment flow

Telemedicine appointment flow
Base URL
Productionhttps://callapi.myitura.com/api/v1
Resource/appointment // and /appointment/organisation

Authentication

Every request is authenticated with the API key pair issued to your organisation.

HeaderDescriptionExample
x-api-public-keyYour public API keypk_live_7dc2a1...
x-api-secret-keyYour secret API keysk_live_9f4b83...
Keep the secret key server side

Never ship it in a browser bundle or a mobile app, and never commit it. If it leaks, rotate it in the dashboard rather than asking us to recover it.

Getting your keys

  1. Sign in to your organisation dashboard at MyItura.
  2. Open Api Key in the sidebar.
  3. Generate a pair, and copy both values.
  4. Store them as environment variables on your server.

A public key starts with pk_ and a secret key with sk_.

Headers
-H "x-api-public-key: pk_live_7dc2a1..."
-H "x-api-secret-key: sk_live_9f4b83..."
POST/appointment/create

Create an appointment

Schedules a new telemedicine appointment between a patient and a provider. You supply the participants and the window; the response carries the appointment id and a join URL for each participant.

Times are ISO 8601, for example 2025-11-10T09:00:00.000Z.

curl -X POST https://callapi.myitura.com/api/v1/appointment/create \
-H "x-api-public-key: pk_live_abc123def456" \
-H "x-api-secret-key: sk_live_xyz789uvw012" \
-H "Content-Type: application/json" \
-d '{
  "appointmentStartTime": "2025-11-10T09:00:00.000Z",
  "appointmentEndTime": "2025-11-10T09:30:00.000Z",
  "participants": [
    {
      "firstName": "John",
      "lastName": "Doe",
      "email": "john.doe@example.com",
      "phoneNumber": "+1234567890",
      "role": "patient"
    },
    {
      "firstName": "Dr. Jane",
      "lastName": "Smith",
      "email": "jane.smith@hospital.com",
      "phoneNumber": "+1987654321",
      "role": "doctor"
    }
  ]
}'
{
"success": true,
"appointmentId": "507f1f77bcf86cd799439011",
"meetingId": "meeting-uuid-here",
"appointmentStartTime": "2025-11-10T09:00:00.000Z",
"appointmentEndTime": "2025-11-10T09:30:00.000Z",
"appointmentStatus": "scheduled",
"organisationId": "org-mongo-id",
"authOrgId": "d41170fb-179c-4339-9c79-e565eacd22d8",
"participants": [
  {
    "participant": {
      "firstName": "John",
      "lastName": "Doe",
      "email": "john.doe@example.com",
      "phoneNumber": "+1234567890",
      "role": "patient",
      "communicationsUserClientID": "comm-user-id-1"
    },
    "participantKey": "unique-key-1",
    "participantMeetingLink": "https://meeting-link-1",
    "liveliness": "active"
  },
  {
    "participant": {
      "firstName": "Dr. Jane",
      "lastName": "Smith",
      "email": "jane.smith@hospital.com",
      "phoneNumber": "+1987654321",
      "role": "doctor",
      "communicationsUserClientID": "comm-user-id-2"
    },
    "participantKey": "unique-key-2",
    "participantMeetingLink": "https://meeting-link-2",
    "liveliness": "active"
  }
]
}
GET/appointment?appointmentId={id}

Retrieve an appointment

Reads one appointment, including everything produced during and after the consultation.

Response fields

FieldDescription
transcriptionSummarystringClinical summary for providers, in medical terminology.
patientSummarystringThe same visit written in plain language for the patient.
audioRecordingURLsarrayRecordings of the call. More than one file if the session was split.
prescriptionsarrayPrescriptions issued during the appointment.
doctorNotesarrayClinical notes documented by the provider.
prescriptionUrlstringDownloadable PDF of the prescription.
When each field appears

prescriptions and doctorNotes land as soon as the doctor submits them. audioRecordingURLs take about 30 minutes after the call ends, and both summaries about 35 to 45 minutes, because they wait on transcription and then on summarisation. Poll rather than assuming they are missing.

curl -X GET "https://callapi.myitura.com/api/v1/appointment?appointmentId=507f1f77bcf86cd799439011" \
-H "x-api-public-key: pk_live_abc123def456" \
-H "x-api-secret-key: sk_live_xyz789uvw012"
{
"_id": "507f1f77bcf86cd799439011",
"meetingId": "meeting-uuid-here",
"appointmentStartTime": "2025-11-10T09:00:00.000Z",
"appointmentEndTime": "2025-11-10T09:30:00.000Z",
"appointmentStatus": "completed",
"organisationId": "org-mongo-id",
"authOrgId": "d41170fb-179c-4339-9c79-e565eacd22d8",
"audioRecordingURLs": [
  "https://storage.myitura.com/recordings/appointment-xyz-part1.mp3",
  "https://storage.myitura.com/recordings/appointment-xyz-part2.mp3"
],
"transcriptionSummary": "Clinical Summary:\n- Chief Complaint: Patient reports persistent headache for 3 days\n- Vital Signs: BP 120/80, Temp 98.6°F\n- Assessment: Tension headache, likely stress-related\n- Treatment Plan: Prescribed ibuprofen 400mg, recommended stress management techniques",
"patientSummary": "Your Visit Summary:\nYou saw the doctor today about your headaches. The doctor thinks they are tension headaches from stress. You were given medicine (ibuprofen 400mg) to help with the pain. The doctor also suggested trying relaxation exercises to help reduce stress.",
"participants": [
  {
    "participant": {
      "firstName": "John",
      "lastName": "Doe",
      "email": "john.doe@example.com",
      "role": "patient"
    },
    "participantKey": "unique-key-1",
    "participantMeetingLink": "https://meeting-link-1"
  },
  {
    "participant": {
      "firstName": "Dr. Jane",
      "lastName": "Smith",
      "email": "jane.smith@hospital.com",
      "role": "doctor"
    },
    "participantKey": "unique-key-2",
    "participantMeetingLink": "https://meeting-link-2"
  }
],
"prescriptions": [
  {
    "prescribedDrugs": [
      {
        "drugName": "Ibuprofen",
        "dosage": "400mg",
        "frequency": "Every 6 hours as needed",
        "duration": "7 days"
      }
    ],
    "additionalNotes": "Take with food to avoid stomach upset",
    "createdAt": "2025-11-10T09:25:00.000Z"
  }
],
"doctorNotes": [
  {
    "symptomsandIllnesses": "Persistent headache x3 days, photosensitivity",
    "diagnosis": "Tension headache",
    "treatmentandRecommendation": "Ibuprofen 400mg PRN, stress management, follow-up in 1 week if symptoms persist",
    "doctorSignature": "Dr. Jane Smith, MD"
  }
],
"prescriptionUrl": "https://storage.myitura.com/prescriptions/prescription-xyz.pdf",
"createdAt": "2025-11-07T10:00:00.000Z",
"updatedAt": "2025-11-10T09:30:00.000Z"
}
GET/appointment/organisation

List your organisation's appointments

Every appointment booked under your organisation, filtered and paginated.

Query

ParameterDescription
pagenumberPage number. Defaults to 1.
limitnumberItems per page. Defaults to 10.
appointmentStatusstringOne of scheduled, completed, cancelled, in-progress.
startDatestringFilter from this date. YYYY-MM-DD.
endDatestringFilter to this date. YYYY-MM-DD.
curl -X GET "https://callapi.myitura.com/api/v1/appointment/organisation?limit=20&page=1&appointmentStatus=scheduled" \
-H "x-api-public-key: pk_live_abc123def456" \
-H "x-api-secret-key: sk_live_xyz789uvw012"
{
"appointments": [
  {
    "_id": "507f1f77bcf86cd799439011",
    "meetingId": "meeting-uuid-1",
    "appointmentStartTime": "2025-11-10T09:00:00.000Z",
    "appointmentEndTime": "2025-11-10T09:30:00.000Z",
    "appointmentStatus": "scheduled",
    "organisationId": "org-mongo-id",
    "authOrgId": "d41170fb-179c-4339-9c79-e565eacd22d8",
    "participants": [
      {
        "participant": {
          "firstName": "John",
          "lastName": "Doe",
          "role": "patient"
        }
      }
    ],
    "createdAt": "2025-11-07T10:00:00.000Z"
  },
  {
    "_id": "507f1f77bcf86cd799439012",
    "meetingId": "meeting-uuid-2",
    "appointmentStartTime": "2025-11-10T10:00:00.000Z",
    "appointmentEndTime": "2025-11-10T10:30:00.000Z",
    "appointmentStatus": "completed",
    "organisationId": "org-mongo-id",
    "authOrgId": "d41170fb-179c-4339-9c79-e565eacd22d8",
    "participants": [
      {
        "participant": {
          "firstName": "Jane",
          "lastName": "Smith",
          "role": "doctor"
        }
      }
    ],
    "createdAt": "2025-11-06T10:00:00.000Z"
  }
],
"total": 45,
"page": 2,
"limit": 10,
"totalPages": 5
}
PUT/appointment/cancel?appointmentId={id}

Cancel an appointment

Calls off a scheduled appointment.

There is a five minute floor

An appointment that has already started, or starts within five minutes, cannot be cancelled. Attempting it returns 400.

curl -X PUT "https://callapi.myitura.com/api/v1/appointment/cancel?appointmentId=507f1f77bcf86cd799439011" \
-H "x-api-public-key: pk_live_abc123def456" \
-H "x-api-secret-key: sk_live_xyz789uvw012"
{
"success": true,
"message": "Appointment cancelled successfully"
}
PUT/appointment/modify-time?appointmentId={id}

Reschedule an appointment

Moves a scheduled appointment to a new start and end time.

A past time is refused

Moving an appointment into the past returns an error telling you to cancel it instead, because a rescheduled-to-yesterday appointment is a cancellation wearing the wrong name.

curl -X PUT "https://callapi.myitura.com/api/v1/appointment/modify-time?appointmentId=507f1f77bcf86cd799439011" \
-H "x-api-public-key: pk_live_abc123def456" \
-H "x-api-secret-key: sk_live_xyz789uvw012" \
-H "Content-Type: application/json" \
-d '{
  "startTime": "2025-11-10T10:00:00.000Z",
  "endTime": "2025-11-10T10:30:00.000Z"
}'
{
"success": true,
"message": "Appointment time modified successfully",
"appointment": {
  "success": true,
  "message": "Appointment time modified successfully",
  "updatedAppointment": {
    "_id": "507f1f77bcf86cd799439011",
    "appointmentStartTime": "2025-11-10T10:00:00.000Z",
    "appointmentEndTime": "2025-11-10T10:30:00.000Z",
    "appointmentStatus": "CONFIRMED",
    "participants": [...]
  }
}
}

Errors

StatusMeaningTypical cause
200OKThe request succeeded.
400Bad RequestInvalid parameters, or an attempt to cancel or move an appointment in the past.
401UnauthorizedMissing or invalid API keys.
404Not FoundNo appointment with that id under your organisation.

Conventions

  • Appointment times are ISO 8601 (2025-11-10T09:00:00.000Z); date filters are YYYY-MM-DD.
  • Lists default to 10 items per page starting at page 1.
  • Both summaries are generated automatically and draw on the doctor's notes and prescriptions when those exist.