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.
transcriptionSummaryis the clinical record for providers;patientSummaryis 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

Authentication
Every request is authenticated with the API key pair issued to your organisation.
| Header | Description | Example |
|---|---|---|
| x-api-public-key | Your public API key | pk_live_7dc2a1... |
| x-api-secret-key | Your secret API key | sk_live_9f4b83... |
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
- Sign in to your organisation dashboard at MyItura.
- Open Api Key in the sidebar.
- Generate a pair, and copy both values.
- Store them as environment variables on your server.
A public key starts with pk_ and a secret key with sk_.
-H "x-api-public-key: pk_live_7dc2a1..."
-H "x-api-secret-key: sk_live_9f4b83..."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"
}
]
}Retrieve an appointment
Reads one appointment, including everything produced during and after the consultation.
Response fields
| Field | Description |
|---|---|
| transcriptionSummarystring | Clinical summary for providers, in medical terminology. |
| patientSummarystring | The same visit written in plain language for the patient. |
| audioRecordingURLsarray | Recordings of the call. More than one file if the session was split. |
| prescriptionsarray | Prescriptions issued during the appointment. |
| doctorNotesarray | Clinical notes documented by the provider. |
| prescriptionUrlstring | Downloadable PDF of the prescription. |
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"
}List your organisation's appointments
Every appointment booked under your organisation, filtered and paginated.
Query
| Parameter | Description |
|---|---|
| pagenumber | Page number. Defaults to 1. |
| limitnumber | Items per page. Defaults to 10. |
| appointmentStatusstring | One of scheduled, completed, cancelled, in-progress. |
| startDatestring | Filter from this date. YYYY-MM-DD. |
| endDatestring | Filter 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
}Cancel an appointment
Calls off a scheduled appointment.
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"
}Reschedule an appointment
Moves a scheduled appointment to a new start and end time.
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
| Status | Meaning | Typical cause |
|---|---|---|
| 200 | OK | The request succeeded. |
| 400 | Bad Request | Invalid parameters, or an attempt to cancel or move an appointment in the past. |
| 401 | Unauthorized | Missing or invalid API keys. |
| 404 | Not Found | No appointment with that id under your organisation. |
Conventions
- Appointment times are ISO 8601 (
2025-11-10T09:00:00.000Z); date filters areYYYY-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.