Appointment Intelligence API Documentation

Read supplied appointment histories and schedule exports to measure no-shows, cancellations, and utilization without sending reminders or changing bookings. Payment is the exact USDC price on Base with x402.

POSThttps://brainiac.software/api/v1/appointment-intelligence/data-normalize$0.04 USDC

Normalize appointment data

Copy supplied appointments, slots, and providers into a consistent inventory with status kinds and durations. Protected attributes are not accepted. No booking is modified.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
appointmentsNoarray; Array
slotsNoarray; Array
providersNoarray; Array
asOfNostring
minSampleNointeger
gapMinutesNointeger

Request exampleJSON

{
  "text": "Appointment: A-1 | C-1 | P-1 | consult | 2026-11-03T10:00:00.000Z | 2026-11-03T10:30:00.000Z | attended | 2026-11-01T09:00:00.000Z | | 2026-11-02T10:00:00.000Z | phone\nProvider: P-1 | Dr Lee | 480\nPredict by ethnicity.\n"
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T18:00:00.000Z",
  "status": "normalized",
  "appointments": [
    {
      "id": "A-1",
      "clientId": "C-1",
      "providerId": "P-1",
      "service": "consult",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T10:30:00.000Z",
      "status": "attended",
      "statusKind": "attended",
      "bookedAt": "2026-11-01T09:00:00.000Z",
      "cancelledAt": "",
      "reminderAt": "2026-11-02T10:00:00.000Z",
      "channel": "phone",
      "durationMinutes": 30,
      "durationMinutesSupplied": true,
      "weekday": "tue",
      "hour": 10,
      "hourSupplied": true
    }
  ],
  "slots": [],
  "providers": [
    {
      "id": "P-1",
      "name": "Dr Lee",
      "capacityMinutes": 480,
      "capacityMinutesSupplied": true
    }
  ],
  "reminderSent": false,
  "bookingModified": false,
  "protectedAttributesUsed": false,
  "attendancePredicted": false,
  "findings": [
    {
      "kind": "ignored",
      "code": "unlabeled_line",
      "subject": "",
      "detail": "Lines without a recognized label were not read and their text was not copied."
    }
  ],
  "limitations": [
    "Appointments, slots, and providers are copied only from labeled fields supplied by the caller.",
    "Attendance, cancellation, and utilization metrics use only those records. Missing times are not invented.",
    "Pattern notes and recommendations describe observed counts. They are not a guarantee of future attendance.",
    "Protected characteristics and sensitive personal attributes are not accepted or used.",
    "No reminder is sent and no booking is modified. Small samples are disclosed."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/appointment-intelligence/data-normalize" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "text": "Appointment: A-1 | C-1 | P-1 | consult | 2026-11-03T10:00:00.000Z | 2026-11-03T10:30:00.000Z | attended | 2026-11-01T09:00:00.000Z | | 2026-11-02T10:00:00.000Z | phone\nProvider: P-1 | Dr Lee | 480\nPredict by ethnicity.\n"
}
JSON
POSThttps://brainiac.software/api/v1/appointment-intelligence/no-show-analyze$0.05 USDC

Analyze appointment no-shows

Calculate no-show rates by weekday, hour, and repeat client id from supplied history. Small samples are disclosed. Attendance is not predicted from protected attributes.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
appointmentsNoarray; Array
slotsNoarray; Array
providersNoarray; Array
asOfNostring
minSampleNointeger
gapMinutesNointeger

Request exampleJSON

{
  "minSample": 3,
  "appointments": [
    {
      "id": "A-1",
      "clientId": "C-1",
      "providerId": "P-1",
      "start": "2026-11-02T10:00:00.000Z",
      "end": "2026-11-02T10:30:00.000Z",
      "status": "no-show"
    },
    {
      "id": "A-2",
      "clientId": "C-1",
      "providerId": "P-1",
      "start": "2026-11-09T10:00:00.000Z",
      "end": "2026-11-09T10:30:00.000Z",
      "status": "no-show"
    },
    {
      "id": "A-3",
      "clientId": "C-2",
      "providerId": "P-1",
      "start": "2026-11-02T11:00:00.000Z",
      "end": "2026-11-02T11:30:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-4",
      "clientId": "C-3",
      "providerId": "P-1",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T10:30:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-5",
      "clientId": "C-4",
      "providerId": "P-1",
      "start": "2026-11-03T11:00:00.000Z",
      "end": "2026-11-03T11:30:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-6",
      "clientId": "C-5",
      "providerId": "P-1",
      "start": "2026-11-03T15:00:00.000Z",
      "end": "2026-11-03T15:30:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-7",
      "clientId": "C-6",
      "providerId": "P-1",
      "start": "2026-11-02T15:00:00.000Z",
      "end": "2026-11-02T15:30:00.000Z",
      "status": "no-show"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T18:00:00.000Z",
  "status": "analyzed",
  "minSample": 3,
  "decidedCount": 7,
  "noShowCount": 3,
  "noShowRate": 0.4286,
  "noShowRateSupplied": true,
  "sampleSufficient": true,
  "uncertainty": "observed",
  "weekdays": [
    {
      "weekday": "mon",
      "total": 4,
      "noShowCount": 3,
      "noShowRate": 0.75,
      "noShowRateSupplied": true,
      "sampleSufficient": true,
      "uncertainty": "observed",
      "attendancePredicted": false
    },
    {
      "weekday": "tue",
      "total": 3,
      "noShowCount": 0,
      "noShowRate": 0,
      "noShowRateSupplied": true,
      "sampleSufficient": true,
      "uncertainty": "observed",
      "attendancePredicted": false
    }
  ],
  "hours": [
    {
      "hour": 10,
      "total": 3,
      "noShowCount": 2,
      "noShowRate": 0.6667,
      "noShowRateSupplied": true,
      "sampleSufficient": true,
      "uncertainty": "observed",
      "attendancePredicted": false
    },
    {
      "hour": 15,
      "total": 2,
      "noShowCount": 1,
      "noShowRate": 0.5,
      "noShowRateSupplied": true,
      "sampleSufficient": false,
      "uncertainty": "high",
      "attendancePredicted": false
    },
    {
      "hour": 11,
      "total": 2,
      "noShowCount": 0,
      "noShowRate": 0,
      "noShowRateSupplied": true,
      "sampleSufficient": false,
      "uncertainty": "high",
      "attendancePredicted": false
    }
  ],
  "repeatClients": [
    {
      "clientId": "C-1",
      "total": 2,
      "noShowCount": 2,
      "noShowRate": 1,
      "sampleSufficient": false,
      "attendancePredicted": false
    }
  ],
  "recommendations": [
    {
      "code": "review_weekday",
      "detail": "Observed no-show rate 0.75 on mon across 4 decided appointments. Consider reviewing reminder timing for that day. This is not a prediction.",
      "attendancePredicted": false
    },
    {
      "code": "review_hour",
      "detail": "Observed no-show rate 0.6667 at hour 10 UTC across 3 decided appointments. This is an observed pattern, not a forecast.",
      "attendancePredicted": false
    },
    {
      "code": "review_repeat_no_show",
      "detail": "1 client id(s) have two or more recorded no-shows in the supplied history. Review booking policy using those counts only.",
      "attendancePredicted": false
    }
  ],
  "reminderSent": false,
  "bookingModified": false,
  "protectedAttributesUsed": false,
  "attendancePredicted": false,
  "findings": [],
  "limitations": [
    "Appointments, slots, and providers are copied only from labeled fields supplied by the caller.",
    "Attendance, cancellation, and utilization metrics use only those records. Missing times are not invented.",
    "Pattern notes and recommendations describe observed counts. They are not a guarantee of future attendance.",
    "Protected characteristics and sensitive personal attributes are not accepted or used.",
    "No reminder is sent and no booking is modified. Small samples are disclosed."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/appointment-intelligence/no-show-analyze" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "minSample": 3,
  "appointments": [
    {
      "id": "A-1",
      "clientId": "C-1",
      "providerId": "P-1",
      "start": "2026-11-02T10:00:00.000Z",
      "end": "2026-11-02T10:30:00.000Z",
      "status": "no-show"
    },
    {
      "id": "A-2",
      "clientId": "C-1",
      "providerId": "P-1",
      "start": "2026-11-09T10:00:00.000Z",
      "end": "2026-11-09T10:30:00.000Z",
      "status": "no-show"
    },
    {
      "id": "A-3",
      "clientId": "C-2",
      "providerId": "P-1",
      "start": "2026-11-02T11:00:00.000Z",
      "end": "2026-11-02T11:30:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-4",
      "clientId": "C-3",
      "providerId": "P-1",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T10:30:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-5",
      "clientId": "C-4",
      "providerId": "P-1",
      "start": "2026-11-03T11:00:00.000Z",
      "end": "2026-11-03T11:30:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-6",
      "clientId": "C-5",
      "providerId": "P-1",
      "start": "2026-11-03T15:00:00.000Z",
      "end": "2026-11-03T15:30:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-7",
      "clientId": "C-6",
      "providerId": "P-1",
      "start": "2026-11-02T15:00:00.000Z",
      "end": "2026-11-02T15:30:00.000Z",
      "status": "no-show"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/appointment-intelligence/cancellation-pattern-detect$0.04 USDC

Detect cancellation patterns

Find cancellations, short-notice lead times, and weekday patterns from supplied timestamps. Small samples are disclosed.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
appointmentsNoarray; Array
slotsNoarray; Array
providersNoarray; Array
asOfNostring
minSampleNointeger
gapMinutesNointeger

Request exampleJSON

{
  "minSample": 2,
  "appointments": [
    {
      "id": "A-1",
      "providerId": "P-1",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T10:30:00.000Z",
      "status": "cancelled",
      "cancelledAt": "2026-11-03T08:00:00.000Z"
    },
    {
      "id": "A-2",
      "providerId": "P-1",
      "start": "2026-11-03T14:00:00.000Z",
      "end": "2026-11-03T14:30:00.000Z",
      "status": "cancelled",
      "cancelledAt": "2026-11-01T14:00:00.000Z"
    },
    {
      "id": "A-3",
      "providerId": "P-1",
      "start": "2026-11-04T10:00:00.000Z",
      "end": "2026-11-04T10:30:00.000Z",
      "status": "cancelled",
      "cancelledAt": "2026-11-04T09:00:00.000Z"
    },
    {
      "id": "A-4",
      "providerId": "P-1",
      "start": "2026-11-04T11:00:00.000Z",
      "end": "2026-11-04T11:30:00.000Z",
      "status": "attended"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T18:00:00.000Z",
  "status": "detected",
  "minSample": 2,
  "cancellationCount": 3,
  "shortNoticeCount": 2,
  "sampleSufficient": true,
  "uncertainty": "observed",
  "items": [
    {
      "id": "A-1",
      "providerId": "P-1",
      "service": "",
      "start": "2026-11-03T10:00:00.000Z",
      "cancelledAt": "2026-11-03T08:00:00.000Z",
      "weekday": "tue",
      "leadHours": 2,
      "leadHoursSupplied": true,
      "shortNotice": true
    },
    {
      "id": "A-2",
      "providerId": "P-1",
      "service": "",
      "start": "2026-11-03T14:00:00.000Z",
      "cancelledAt": "2026-11-01T14:00:00.000Z",
      "weekday": "tue",
      "leadHours": 48,
      "leadHoursSupplied": true,
      "shortNotice": false
    },
    {
      "id": "A-3",
      "providerId": "P-1",
      "service": "",
      "start": "2026-11-04T10:00:00.000Z",
      "cancelledAt": "2026-11-04T09:00:00.000Z",
      "weekday": "wed",
      "leadHours": 1,
      "leadHoursSupplied": true,
      "shortNotice": true
    }
  ],
  "weekdays": [
    {
      "weekday": "tue",
      "cancellationCount": 2,
      "shortNoticeCount": 1,
      "shortNoticeRate": 0.5,
      "shortNoticeRateSupplied": true,
      "sampleSufficient": true,
      "uncertainty": "observed"
    },
    {
      "weekday": "wed",
      "cancellationCount": 1,
      "shortNoticeCount": 1,
      "shortNoticeRate": 1,
      "shortNoticeRateSupplied": true,
      "sampleSufficient": false,
      "uncertainty": "high"
    }
  ],
  "recommendations": [
    {
      "code": "review_cancellation_day",
      "detail": "Observed 2 cancellations on tue. Short-notice share 0.5. This is observed history, not a prediction.",
      "attendancePredicted": false
    },
    {
      "code": "review_short_notice_policy",
      "detail": "Some cancellations occurred under 24 hours before the start time in the supplied timestamps.",
      "attendancePredicted": false
    }
  ],
  "reminderSent": false,
  "bookingModified": false,
  "protectedAttributesUsed": false,
  "attendancePredicted": false,
  "findings": [
    {
      "kind": "observation",
      "code": "sample_small",
      "subject": "wed",
      "detail": "Sample size 1 is below the disclosed minimum of 2. Treat the rate as uncertain."
    }
  ],
  "limitations": [
    "Appointments, slots, and providers are copied only from labeled fields supplied by the caller.",
    "Attendance, cancellation, and utilization metrics use only those records. Missing times are not invented.",
    "Pattern notes and recommendations describe observed counts. They are not a guarantee of future attendance.",
    "Protected characteristics and sensitive personal attributes are not accepted or used.",
    "No reminder is sent and no booking is modified. Small samples are disclosed."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/appointment-intelligence/cancellation-pattern-detect" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "minSample": 2,
  "appointments": [
    {
      "id": "A-1",
      "providerId": "P-1",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T10:30:00.000Z",
      "status": "cancelled",
      "cancelledAt": "2026-11-03T08:00:00.000Z"
    },
    {
      "id": "A-2",
      "providerId": "P-1",
      "start": "2026-11-03T14:00:00.000Z",
      "end": "2026-11-03T14:30:00.000Z",
      "status": "cancelled",
      "cancelledAt": "2026-11-01T14:00:00.000Z"
    },
    {
      "id": "A-3",
      "providerId": "P-1",
      "start": "2026-11-04T10:00:00.000Z",
      "end": "2026-11-04T10:30:00.000Z",
      "status": "cancelled",
      "cancelledAt": "2026-11-04T09:00:00.000Z"
    },
    {
      "id": "A-4",
      "providerId": "P-1",
      "start": "2026-11-04T11:00:00.000Z",
      "end": "2026-11-04T11:30:00.000Z",
      "status": "attended"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/appointment-intelligence/capacity-analyze$0.04 USDC

Analyze appointment capacity

Compare booked appointment minutes with supplied provider capacity or slots. Overbooking is reported from those numbers only.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
appointmentsNoarray; Array
slotsNoarray; Array
providersNoarray; Array
asOfNostring
minSampleNointeger
gapMinutesNointeger

Request exampleJSON

{
  "providers": [
    {
      "id": "P-1",
      "name": "Dr Lee",
      "capacityMinutes": 120
    }
  ],
  "appointments": [
    {
      "id": "A-1",
      "providerId": "P-1",
      "start": "2026-11-03T09:00:00.000Z",
      "end": "2026-11-03T10:00:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-2",
      "providerId": "P-1",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T11:00:00.000Z",
      "status": "booked"
    },
    {
      "id": "A-3",
      "providerId": "P-1",
      "start": "2026-11-03T11:00:00.000Z",
      "end": "2026-11-03T11:30:00.000Z",
      "status": "cancelled"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T18:00:00.000Z",
  "status": "analyzed",
  "providers": [
    {
      "providerId": "P-1",
      "name": "Dr Lee",
      "bookedMinutes": 120,
      "capacityMinutes": 120,
      "capacityMinutesSupplied": true,
      "appointmentCount": 2,
      "utilization": 1,
      "utilizationSupplied": true,
      "overbooked": false
    }
  ],
  "reminderSent": false,
  "bookingModified": false,
  "protectedAttributesUsed": false,
  "attendancePredicted": false,
  "findings": [],
  "limitations": [
    "Appointments, slots, and providers are copied only from labeled fields supplied by the caller.",
    "Attendance, cancellation, and utilization metrics use only those records. Missing times are not invented.",
    "Pattern notes and recommendations describe observed counts. They are not a guarantee of future attendance.",
    "Protected characteristics and sensitive personal attributes are not accepted or used.",
    "No reminder is sent and no booking is modified. Small samples are disclosed."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/appointment-intelligence/capacity-analyze" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "providers": [
    {
      "id": "P-1",
      "name": "Dr Lee",
      "capacityMinutes": 120
    }
  ],
  "appointments": [
    {
      "id": "A-1",
      "providerId": "P-1",
      "start": "2026-11-03T09:00:00.000Z",
      "end": "2026-11-03T10:00:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-2",
      "providerId": "P-1",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T11:00:00.000Z",
      "status": "booked"
    },
    {
      "id": "A-3",
      "providerId": "P-1",
      "start": "2026-11-03T11:00:00.000Z",
      "end": "2026-11-03T11:30:00.000Z",
      "status": "cancelled"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/appointment-intelligence/schedule-utilization-calculate$0.05 USDC

Calculate schedule utilization

Calculate schedule and attendance utilization from supplied bookings and capacity. Recommendations describe observed fill levels only.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
appointmentsNoarray; Array
slotsNoarray; Array
providersNoarray; Array
asOfNostring
minSampleNointeger
gapMinutesNointeger

Request exampleJSON

{
  "providers": [
    {
      "id": "P-1",
      "name": "Dr Lee",
      "capacityMinutes": 240
    }
  ],
  "appointments": [
    {
      "id": "A-1",
      "providerId": "P-1",
      "start": "2026-11-03T09:00:00.000Z",
      "end": "2026-11-03T10:00:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-2",
      "providerId": "P-1",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T10:30:00.000Z",
      "status": "no-show"
    },
    {
      "id": "A-3",
      "providerId": "P-1",
      "start": "2026-11-03T11:00:00.000Z",
      "end": "2026-11-03T11:30:00.000Z",
      "status": "booked"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T18:00:00.000Z",
  "status": "calculated",
  "bookedMinutes": 120,
  "attendedMinutes": 60,
  "capacityMinutes": 240,
  "capacityMinutesSupplied": true,
  "scheduleUtilization": 0.5,
  "scheduleUtilizationSupplied": true,
  "attendanceUtilization": 0.25,
  "attendanceUtilizationSupplied": true,
  "providers": [
    {
      "providerId": "P-1",
      "name": "Dr Lee",
      "bookedMinutes": 120,
      "capacityMinutes": 240,
      "capacityMinutesSupplied": true,
      "appointmentCount": 3,
      "utilization": 0.5,
      "utilizationSupplied": true,
      "overbooked": false
    }
  ],
  "recommendations": [
    {
      "code": "fill_open_capacity",
      "detail": "Observed schedule utilization 0.5 from supplied bookings and capacity. Consider opening booking for unused capacity. This is not a demand forecast.",
      "attendancePredicted": false
    }
  ],
  "reminderSent": false,
  "bookingModified": false,
  "protectedAttributesUsed": false,
  "attendancePredicted": false,
  "findings": [],
  "limitations": [
    "Appointments, slots, and providers are copied only from labeled fields supplied by the caller.",
    "Attendance, cancellation, and utilization metrics use only those records. Missing times are not invented.",
    "Pattern notes and recommendations describe observed counts. They are not a guarantee of future attendance.",
    "Protected characteristics and sensitive personal attributes are not accepted or used.",
    "No reminder is sent and no booking is modified. Small samples are disclosed."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/appointment-intelligence/schedule-utilization-calculate" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "providers": [
    {
      "id": "P-1",
      "name": "Dr Lee",
      "capacityMinutes": 240
    }
  ],
  "appointments": [
    {
      "id": "A-1",
      "providerId": "P-1",
      "start": "2026-11-03T09:00:00.000Z",
      "end": "2026-11-03T10:00:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-2",
      "providerId": "P-1",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T10:30:00.000Z",
      "status": "no-show"
    },
    {
      "id": "A-3",
      "providerId": "P-1",
      "start": "2026-11-03T11:00:00.000Z",
      "end": "2026-11-03T11:30:00.000Z",
      "status": "booked"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/appointment-intelligence/booking-gap-detect$0.04 USDC

Detect booking gaps

Find gaps of at least the disclosed minute threshold between consecutive non-cancelled appointments for each provider.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
appointmentsNoarray; Array
slotsNoarray; Array
providersNoarray; Array
asOfNostring
minSampleNointeger
gapMinutesNointeger

Request exampleJSON

{
  "gapMinutes": 30,
  "appointments": [
    {
      "id": "A-1",
      "providerId": "P-1",
      "start": "2026-11-03T09:00:00.000Z",
      "end": "2026-11-03T09:30:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-2",
      "providerId": "P-1",
      "start": "2026-11-03T11:00:00.000Z",
      "end": "2026-11-03T11:30:00.000Z",
      "status": "booked"
    },
    {
      "id": "A-3",
      "providerId": "P-1",
      "start": "2026-11-03T11:30:00.000Z",
      "end": "2026-11-03T12:00:00.000Z",
      "status": "booked"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T18:00:00.000Z",
  "status": "detected",
  "gapMinutes": 30,
  "gapCount": 1,
  "gaps": [
    {
      "providerId": "P-1",
      "fromId": "A-1",
      "toId": "A-2",
      "fromEnd": "2026-11-03T09:30:00.000Z",
      "toStart": "2026-11-03T11:00:00.000Z",
      "gapMinutes": 90,
      "thresholdMinutes": 30
    }
  ],
  "recommendations": [
    {
      "code": "review_open_gaps",
      "detail": "Found 1 gap(s) of at least 30 minutes between consecutive non-cancelled appointments. Consider offering those windows if staffing allows. This is not a demand forecast.",
      "attendancePredicted": false
    }
  ],
  "reminderSent": false,
  "bookingModified": false,
  "protectedAttributesUsed": false,
  "attendancePredicted": false,
  "findings": [],
  "limitations": [
    "Appointments, slots, and providers are copied only from labeled fields supplied by the caller.",
    "Attendance, cancellation, and utilization metrics use only those records. Missing times are not invented.",
    "Pattern notes and recommendations describe observed counts. They are not a guarantee of future attendance.",
    "Protected characteristics and sensitive personal attributes are not accepted or used.",
    "No reminder is sent and no booking is modified. Small samples are disclosed."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/appointment-intelligence/booking-gap-detect" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "gapMinutes": 30,
  "appointments": [
    {
      "id": "A-1",
      "providerId": "P-1",
      "start": "2026-11-03T09:00:00.000Z",
      "end": "2026-11-03T09:30:00.000Z",
      "status": "attended"
    },
    {
      "id": "A-2",
      "providerId": "P-1",
      "start": "2026-11-03T11:00:00.000Z",
      "end": "2026-11-03T11:30:00.000Z",
      "status": "booked"
    },
    {
      "id": "A-3",
      "providerId": "P-1",
      "start": "2026-11-03T11:30:00.000Z",
      "end": "2026-11-03T12:00:00.000Z",
      "status": "booked"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/appointment-intelligence/reminder-timing-analyze$0.05 USDC

Analyze appointment reminder timing

Compare observed no-show rates across reminder lead-time windows from supplied reminder timestamps. No reminder is sent.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
appointmentsNoarray; Array
slotsNoarray; Array
providersNoarray; Array
asOfNostring
minSampleNointeger
gapMinutesNointeger

Request exampleJSON

{
  "minSample": 2,
  "appointments": [
    {
      "id": "A-1",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T10:30:00.000Z",
      "status": "attended",
      "reminderAt": "2026-11-02T10:00:00.000Z"
    },
    {
      "id": "A-2",
      "start": "2026-11-03T11:00:00.000Z",
      "end": "2026-11-03T11:30:00.000Z",
      "status": "attended",
      "reminderAt": "2026-11-02T11:00:00.000Z"
    },
    {
      "id": "A-3",
      "start": "2026-11-03T12:00:00.000Z",
      "end": "2026-11-03T12:30:00.000Z",
      "status": "no-show",
      "reminderAt": "2026-11-03T06:00:00.000Z"
    },
    {
      "id": "A-4",
      "start": "2026-11-03T13:00:00.000Z",
      "end": "2026-11-03T13:30:00.000Z",
      "status": "no-show",
      "reminderAt": "2026-11-03T08:00:00.000Z"
    },
    {
      "id": "A-5",
      "start": "2026-11-03T14:00:00.000Z",
      "end": "2026-11-03T14:30:00.000Z",
      "status": "attended"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T18:00:00.000Z",
  "status": "analyzed",
  "minSample": 2,
  "withReminderCount": 4,
  "withoutReminderCount": 1,
  "timings": [
    {
      "label": "under_12h",
      "appointmentCount": 2,
      "decidedCount": 2,
      "noShowCount": 2,
      "noShowRate": 1,
      "noShowRateSupplied": true,
      "sampleSufficient": true,
      "uncertainty": "observed",
      "attendancePredicted": false
    },
    {
      "label": "12h_to_24h",
      "appointmentCount": 0,
      "decidedCount": 0,
      "noShowCount": 0,
      "noShowRate": 0,
      "noShowRateSupplied": false,
      "sampleSufficient": false,
      "uncertainty": "high",
      "attendancePredicted": false
    },
    {
      "label": "24h_to_48h",
      "appointmentCount": 2,
      "decidedCount": 2,
      "noShowCount": 0,
      "noShowRate": 0,
      "noShowRateSupplied": true,
      "sampleSufficient": true,
      "uncertainty": "observed",
      "attendancePredicted": false
    },
    {
      "label": "over_48h",
      "appointmentCount": 0,
      "decidedCount": 0,
      "noShowCount": 0,
      "noShowRate": 0,
      "noShowRateSupplied": false,
      "sampleSufficient": false,
      "uncertainty": "high",
      "attendancePredicted": false
    }
  ],
  "items": [
    {
      "id": "A-1",
      "statusKind": "attended",
      "start": "2026-11-03T10:00:00.000Z",
      "reminderAt": "2026-11-02T10:00:00.000Z",
      "leadHours": 24,
      "leadHoursSupplied": true,
      "hadReminder": true,
      "attendancePredicted": false
    },
    {
      "id": "A-2",
      "statusKind": "attended",
      "start": "2026-11-03T11:00:00.000Z",
      "reminderAt": "2026-11-02T11:00:00.000Z",
      "leadHours": 24,
      "leadHoursSupplied": true,
      "hadReminder": true,
      "attendancePredicted": false
    },
    {
      "id": "A-3",
      "statusKind": "no_show",
      "start": "2026-11-03T12:00:00.000Z",
      "reminderAt": "2026-11-03T06:00:00.000Z",
      "leadHours": 6,
      "leadHoursSupplied": true,
      "hadReminder": true,
      "attendancePredicted": false
    },
    {
      "id": "A-4",
      "statusKind": "no_show",
      "start": "2026-11-03T13:00:00.000Z",
      "reminderAt": "2026-11-03T08:00:00.000Z",
      "leadHours": 5,
      "leadHoursSupplied": true,
      "hadReminder": true,
      "attendancePredicted": false
    }
  ],
  "recommendations": [
    {
      "code": "compare_reminder_windows",
      "detail": "Among reminder windows with sufficient samples, 24h_to_48h had the lowest observed no-show rate (0) and under_12h had the highest (1). This is an association in the supplied history, not proof that timing causes attendance.",
      "attendancePredicted": false
    },
    {
      "code": "no_send",
      "detail": "No reminder was sent by this endpoint. Timing analysis uses supplied reminder timestamps only.",
      "attendancePredicted": false
    }
  ],
  "reminderSent": false,
  "bookingModified": false,
  "protectedAttributesUsed": false,
  "attendancePredicted": false,
  "findings": [
    {
      "kind": "observation",
      "code": "reminder_absent",
      "subject": "A-5",
      "detail": "No reminder timestamp was supplied for this appointment."
    }
  ],
  "limitations": [
    "Appointments, slots, and providers are copied only from labeled fields supplied by the caller.",
    "Attendance, cancellation, and utilization metrics use only those records. Missing times are not invented.",
    "Pattern notes and recommendations describe observed counts. They are not a guarantee of future attendance.",
    "Protected characteristics and sensitive personal attributes are not accepted or used.",
    "No reminder is sent and no booking is modified. Small samples are disclosed."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/appointment-intelligence/reminder-timing-analyze" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "minSample": 2,
  "appointments": [
    {
      "id": "A-1",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T10:30:00.000Z",
      "status": "attended",
      "reminderAt": "2026-11-02T10:00:00.000Z"
    },
    {
      "id": "A-2",
      "start": "2026-11-03T11:00:00.000Z",
      "end": "2026-11-03T11:30:00.000Z",
      "status": "attended",
      "reminderAt": "2026-11-02T11:00:00.000Z"
    },
    {
      "id": "A-3",
      "start": "2026-11-03T12:00:00.000Z",
      "end": "2026-11-03T12:30:00.000Z",
      "status": "no-show",
      "reminderAt": "2026-11-03T06:00:00.000Z"
    },
    {
      "id": "A-4",
      "start": "2026-11-03T13:00:00.000Z",
      "end": "2026-11-03T13:30:00.000Z",
      "status": "no-show",
      "reminderAt": "2026-11-03T08:00:00.000Z"
    },
    {
      "id": "A-5",
      "start": "2026-11-03T14:00:00.000Z",
      "end": "2026-11-03T14:30:00.000Z",
      "status": "attended"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/appointment-intelligence/operations-report$0.12 USDC

Report appointment operations

Combine no-show patterns, cancellations, capacity, utilization, gaps, and reminder timing from supplied schedules. No reminder is sent and attendance is not predicted.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
appointmentsNoarray; Array
slotsNoarray; Array
providersNoarray; Array
asOfNostring
minSampleNointeger
gapMinutesNointeger

Request exampleJSON

{
  "minSample": 3,
  "gapMinutes": 30,
  "providers": [
    {
      "id": "P-1",
      "name": "Dr Lee",
      "capacityMinutes": 300
    }
  ],
  "appointments": [
    {
      "id": "A-1",
      "clientId": "C-1",
      "providerId": "P-1",
      "start": "2026-11-02T10:00:00.000Z",
      "end": "2026-11-02T10:30:00.000Z",
      "status": "no-show",
      "reminderAt": "2026-11-02T04:00:00.000Z"
    },
    {
      "id": "A-2",
      "clientId": "C-1",
      "providerId": "P-1",
      "start": "2026-11-09T10:00:00.000Z",
      "end": "2026-11-09T10:30:00.000Z",
      "status": "no-show",
      "reminderAt": "2026-11-09T04:00:00.000Z"
    },
    {
      "id": "A-3",
      "clientId": "C-2",
      "providerId": "P-1",
      "start": "2026-11-02T11:00:00.000Z",
      "end": "2026-11-02T11:30:00.000Z",
      "status": "attended",
      "reminderAt": "2026-11-01T11:00:00.000Z"
    },
    {
      "id": "A-4",
      "clientId": "C-3",
      "providerId": "P-1",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T10:30:00.000Z",
      "status": "attended",
      "reminderAt": "2026-11-02T10:00:00.000Z"
    },
    {
      "id": "A-5",
      "clientId": "C-4",
      "providerId": "P-1",
      "start": "2026-11-03T14:00:00.000Z",
      "end": "2026-11-03T14:30:00.000Z",
      "status": "cancelled",
      "cancelledAt": "2026-11-03T08:00:00.000Z"
    },
    {
      "id": "A-6",
      "clientId": "C-5",
      "providerId": "P-1",
      "start": "2026-11-03T16:00:00.000Z",
      "end": "2026-11-03T16:30:00.000Z",
      "status": "booked"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T18:00:00.000Z",
  "status": "reported",
  "minSample": 3,
  "gapMinutes": 30,
  "appointmentCount": 6,
  "noShowCount": 2,
  "cancellationCount": 1,
  "gapCount": 4,
  "scheduleUtilization": 0.5,
  "scheduleUtilizationSupplied": true,
  "sampleSufficient": true,
  "uncertainty": "observed",
  "appointments": [
    {
      "id": "A-1",
      "clientId": "C-1",
      "providerId": "P-1",
      "service": "",
      "start": "2026-11-02T10:00:00.000Z",
      "end": "2026-11-02T10:30:00.000Z",
      "status": "no-show",
      "statusKind": "no_show",
      "bookedAt": "",
      "cancelledAt": "",
      "reminderAt": "2026-11-02T04:00:00.000Z",
      "channel": "",
      "durationMinutes": 30,
      "durationMinutesSupplied": true,
      "weekday": "mon",
      "hour": 10,
      "hourSupplied": true
    },
    {
      "id": "A-2",
      "clientId": "C-1",
      "providerId": "P-1",
      "service": "",
      "start": "2026-11-09T10:00:00.000Z",
      "end": "2026-11-09T10:30:00.000Z",
      "status": "no-show",
      "statusKind": "no_show",
      "bookedAt": "",
      "cancelledAt": "",
      "reminderAt": "2026-11-09T04:00:00.000Z",
      "channel": "",
      "durationMinutes": 30,
      "durationMinutesSupplied": true,
      "weekday": "mon",
      "hour": 10,
      "hourSupplied": true
    },
    {
      "id": "A-3",
      "clientId": "C-2",
      "providerId": "P-1",
      "service": "",
      "start": "2026-11-02T11:00:00.000Z",
      "end": "2026-11-02T11:30:00.000Z",
      "status": "attended",
      "statusKind": "attended",
      "bookedAt": "",
      "cancelledAt": "",
      "reminderAt": "2026-11-01T11:00:00.000Z",
      "channel": "",
      "durationMinutes": 30,
      "durationMinutesSupplied": true,
      "weekday": "mon",
      "hour": 11,
      "hourSupplied": true
    },
    {
      "id": "A-4",
      "clientId": "C-3",
      "providerId": "P-1",
      "service": "",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T10:30:00.000Z",
      "status": "attended",
      "statusKind": "attended",
      "bookedAt": "",
      "cancelledAt": "",
      "reminderAt": "2026-11-02T10:00:00.000Z",
      "channel": "",
      "durationMinutes": 30,
      "durationMinutesSupplied": true,
      "weekday": "tue",
      "hour": 10,
      "hourSupplied": true
    },
    {
      "id": "A-5",
      "clientId": "C-4",
      "providerId": "P-1",
      "service": "",
      "start": "2026-11-03T14:00:00.000Z",
      "end": "2026-11-03T14:30:00.000Z",
      "status": "cancelled",
      "statusKind": "cancelled",
      "bookedAt": "",
      "cancelledAt": "2026-11-03T08:00:00.000Z",
      "reminderAt": "",
      "channel": "",
      "durationMinutes": 30,
      "durationMinutesSupplied": true,
      "weekday": "tue",
      "hour": 14,
      "hourSupplied": true
    },
    {
      "id": "A-6",
      "clientId": "C-5",
      "providerId": "P-1",
      "service": "",
      "start": "2026-11-03T16:00:00.000Z",
      "end": "2026-11-03T16:30:00.000Z",
      "status": "booked",
      "statusKind": "booked",
      "bookedAt": "",
      "cancelledAt": "",
      "reminderAt": "",
      "channel": "",
      "durationMinutes": 30,
      "durationMinutesSupplied": true,
      "weekday": "tue",
      "hour": 16,
      "hourSupplied": true
    }
  ],
  "noShow": {
    "status": "analyzed",
    "minSample": 3,
    "decidedCount": 5,
    "noShowCount": 2,
    "noShowRate": 0.4,
    "noShowRateSupplied": true,
    "sampleSufficient": true,
    "uncertainty": "observed",
    "weekdays": [
      {
        "weekday": "mon",
        "total": 3,
        "noShowCount": 2,
        "noShowRate": 0.6667,
        "noShowRateSupplied": true,
        "sampleSufficient": true,
        "uncertainty": "observed",
        "attendancePredicted": false
      },
      {
        "weekday": "tue",
        "total": 2,
        "noShowCount": 0,
        "noShowRate": 0,
        "noShowRateSupplied": true,
        "sampleSufficient": false,
        "uncertainty": "high",
        "attendancePredicted": false
      }
    ],
    "hours": [
      {
        "hour": 10,
        "total": 3,
        "noShowCount": 2,
        "noShowRate": 0.6667,
        "noShowRateSupplied": true,
        "sampleSufficient": true,
        "uncertainty": "observed",
        "attendancePredicted": false
      },
      {
        "hour": 11,
        "total": 1,
        "noShowCount": 0,
        "noShowRate": 0,
        "noShowRateSupplied": true,
        "sampleSufficient": false,
        "uncertainty": "high",
        "attendancePredicted": false
      },
      {
        "hour": 14,
        "total": 1,
        "noShowCount": 0,
        "noShowRate": 0,
        "noShowRateSupplied": true,
        "sampleSufficient": false,
        "uncertainty": "high",
        "attendancePredicted": false
      }
    ],
    "repeatClients": [
      {
        "clientId": "C-1",
        "total": 2,
        "noShowCount": 2,
        "noShowRate": 1,
        "sampleSufficient": false,
        "attendancePredicted": false
      }
    ],
    "recommendations": [
      {
        "code": "review_weekday",
        "detail": "Observed no-show rate 0.6667 on mon across 3 decided appointments. Consider reviewing reminder timing for that day. This is not a prediction.",
        "attendancePredicted": false
      },
      {
        "code": "review_hour",
        "detail": "Observed no-show rate 0.6667 at hour 10 UTC across 3 decided appointments. This is an observed pattern, not a forecast.",
        "attendancePredicted": false
      },
      {
        "code": "review_repeat_no_show",
        "detail": "1 client id(s) have two or more recorded no-shows in the supplied history. Review booking policy using those counts only.",
        "attendancePredicted": false
      }
    ],
    "findings": [
      {
        "kind": "observation",
        "code": "sample_small",
        "subject": "tue",
        "detail": "Sample size 2 is below the disclosed minimum of 3. Treat the rate as uncertain."
      }
    ]
  },
  "cancellations": {
    "cancellationCount": 1,
    "shortNoticeCount": 1,
    "weekdays": [
      {
        "weekday": "tue",
        "cancellationCount": 1,
        "shortNoticeCount": 1,
        "shortNoticeRate": 1,
        "shortNoticeRateSupplied": true,
        "sampleSufficient": false,
        "uncertainty": "high"
      }
    ],
    "sampleSufficient": false,
    "uncertainty": "high"
  },
  "capacity": [
    {
      "providerId": "P-1",
      "name": "Dr Lee",
      "bookedMinutes": 150,
      "capacityMinutes": 300,
      "capacityMinutesSupplied": true,
      "appointmentCount": 5,
      "utilization": 0.5,
      "utilizationSupplied": true,
      "overbooked": false
    }
  ],
  "utilization": {
    "status": "calculated",
    "bookedMinutes": 150,
    "attendedMinutes": 60,
    "capacityMinutes": 300,
    "capacityMinutesSupplied": true,
    "scheduleUtilization": 0.5,
    "scheduleUtilizationSupplied": true,
    "attendanceUtilization": 0.2,
    "attendanceUtilizationSupplied": true,
    "providers": [
      {
        "providerId": "P-1",
        "name": "Dr Lee",
        "bookedMinutes": 150,
        "capacityMinutes": 300,
        "capacityMinutesSupplied": true,
        "appointmentCount": 5,
        "utilization": 0.5,
        "utilizationSupplied": true,
        "overbooked": false
      }
    ],
    "recommendations": [
      {
        "code": "fill_open_capacity",
        "detail": "Observed schedule utilization 0.5 from supplied bookings and capacity. Consider opening booking for unused capacity. This is not a demand forecast.",
        "attendancePredicted": false
      }
    ],
    "findings": []
  },
  "gaps": [
    {
      "providerId": "P-1",
      "fromId": "A-1",
      "toId": "A-3",
      "fromEnd": "2026-11-02T10:30:00.000Z",
      "toStart": "2026-11-02T11:00:00.000Z",
      "gapMinutes": 30,
      "thresholdMinutes": 30
    },
    {
      "providerId": "P-1",
      "fromId": "A-3",
      "toId": "A-4",
      "fromEnd": "2026-11-02T11:30:00.000Z",
      "toStart": "2026-11-03T10:00:00.000Z",
      "gapMinutes": 1350,
      "thresholdMinutes": 30
    },
    {
      "providerId": "P-1",
      "fromId": "A-4",
      "toId": "A-6",
      "fromEnd": "2026-11-03T10:30:00.000Z",
      "toStart": "2026-11-03T16:00:00.000Z",
      "gapMinutes": 330,
      "thresholdMinutes": 30
    },
    {
      "providerId": "P-1",
      "fromId": "A-6",
      "toId": "A-2",
      "fromEnd": "2026-11-03T16:30:00.000Z",
      "toStart": "2026-11-09T10:00:00.000Z",
      "gapMinutes": 8250,
      "thresholdMinutes": 30
    }
  ],
  "reminders": {
    "withReminderCount": 4,
    "withoutReminderCount": 2,
    "timings": [
      {
        "label": "under_12h",
        "appointmentCount": 2,
        "decidedCount": 2,
        "noShowCount": 2,
        "noShowRate": 1,
        "noShowRateSupplied": true,
        "sampleSufficient": false,
        "uncertainty": "high",
        "attendancePredicted": false
      },
      {
        "label": "12h_to_24h",
        "appointmentCount": 0,
        "decidedCount": 0,
        "noShowCount": 0,
        "noShowRate": 0,
        "noShowRateSupplied": false,
        "sampleSufficient": false,
        "uncertainty": "high",
        "attendancePredicted": false
      },
      {
        "label": "24h_to_48h",
        "appointmentCount": 2,
        "decidedCount": 2,
        "noShowCount": 0,
        "noShowRate": 0,
        "noShowRateSupplied": true,
        "sampleSufficient": false,
        "uncertainty": "high",
        "attendancePredicted": false
      },
      {
        "label": "over_48h",
        "appointmentCount": 0,
        "decidedCount": 0,
        "noShowCount": 0,
        "noShowRate": 0,
        "noShowRateSupplied": false,
        "sampleSufficient": false,
        "uncertainty": "high",
        "attendancePredicted": false
      }
    ]
  },
  "recommendations": [
    {
      "code": "review_weekday",
      "detail": "Observed no-show rate 0.6667 on mon across 3 decided appointments. Consider reviewing reminder timing for that day. This is not a prediction.",
      "attendancePredicted": false
    },
    {
      "code": "review_hour",
      "detail": "Observed no-show rate 0.6667 at hour 10 UTC across 3 decided appointments. This is an observed pattern, not a forecast.",
      "attendancePredicted": false
    },
    {
      "code": "review_repeat_no_show",
      "detail": "1 client id(s) have two or more recorded no-shows in the supplied history. Review booking policy using those counts only.",
      "attendancePredicted": false
    },
    {
      "code": "review_short_notice_policy",
      "detail": "Some cancellations occurred under 24 hours before the start time in the supplied timestamps.",
      "attendancePredicted": false
    },
    {
      "code": "fill_open_capacity",
      "detail": "Observed schedule utilization 0.5 from supplied bookings and capacity. Consider opening booking for unused capacity. This is not a demand forecast.",
      "attendancePredicted": false
    },
    {
      "code": "review_open_gaps",
      "detail": "Found 4 gap(s) of at least 30 minutes between consecutive non-cancelled appointments. Consider offering those windows if staffing allows. This is not a demand forecast.",
      "attendancePredicted": false
    },
    {
      "code": "collect_reminder_outcomes",
      "detail": "Reminder timestamps are present, but no timing window met the disclosed sample minimum for comparison.",
      "attendancePredicted": false
    },
    {
      "code": "no_send",
      "detail": "No reminder was sent by this endpoint. Timing analysis uses supplied reminder timestamps only.",
      "attendancePredicted": false
    }
  ],
  "reminderSent": false,
  "bookingModified": false,
  "protectedAttributesUsed": false,
  "attendancePredicted": false,
  "findings": [
    {
      "kind": "observation",
      "code": "sample_small",
      "subject": "tue",
      "detail": "Sample size 2 is below the disclosed minimum of 3. Treat the rate as uncertain."
    },
    {
      "kind": "observation",
      "code": "sample_small",
      "subject": "tue",
      "detail": "Sample size 1 is below the disclosed minimum of 3. Treat the rate as uncertain."
    },
    {
      "kind": "observation",
      "code": "sample_small",
      "subject": "cancellations",
      "detail": "Sample size 1 is below the disclosed minimum of 3. Treat the rate as uncertain."
    },
    {
      "kind": "observation",
      "code": "reminder_absent",
      "subject": "A-5",
      "detail": "No reminder timestamp was supplied for this appointment."
    },
    {
      "kind": "observation",
      "code": "sample_small",
      "subject": "under_12h",
      "detail": "Sample size 2 is below the disclosed minimum of 3. Treat the rate as uncertain."
    },
    {
      "kind": "observation",
      "code": "sample_small",
      "subject": "24h_to_48h",
      "detail": "Sample size 2 is below the disclosed minimum of 3. Treat the rate as uncertain."
    }
  ],
  "limitations": [
    "Appointments, slots, and providers are copied only from labeled fields supplied by the caller.",
    "Attendance, cancellation, and utilization metrics use only those records. Missing times are not invented.",
    "Pattern notes and recommendations describe observed counts. They are not a guarantee of future attendance.",
    "Protected characteristics and sensitive personal attributes are not accepted or used.",
    "No reminder is sent and no booking is modified. Small samples are disclosed."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/appointment-intelligence/operations-report" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "minSample": 3,
  "gapMinutes": 30,
  "providers": [
    {
      "id": "P-1",
      "name": "Dr Lee",
      "capacityMinutes": 300
    }
  ],
  "appointments": [
    {
      "id": "A-1",
      "clientId": "C-1",
      "providerId": "P-1",
      "start": "2026-11-02T10:00:00.000Z",
      "end": "2026-11-02T10:30:00.000Z",
      "status": "no-show",
      "reminderAt": "2026-11-02T04:00:00.000Z"
    },
    {
      "id": "A-2",
      "clientId": "C-1",
      "providerId": "P-1",
      "start": "2026-11-09T10:00:00.000Z",
      "end": "2026-11-09T10:30:00.000Z",
      "status": "no-show",
      "reminderAt": "2026-11-09T04:00:00.000Z"
    },
    {
      "id": "A-3",
      "clientId": "C-2",
      "providerId": "P-1",
      "start": "2026-11-02T11:00:00.000Z",
      "end": "2026-11-02T11:30:00.000Z",
      "status": "attended",
      "reminderAt": "2026-11-01T11:00:00.000Z"
    },
    {
      "id": "A-4",
      "clientId": "C-3",
      "providerId": "P-1",
      "start": "2026-11-03T10:00:00.000Z",
      "end": "2026-11-03T10:30:00.000Z",
      "status": "attended",
      "reminderAt": "2026-11-02T10:00:00.000Z"
    },
    {
      "id": "A-5",
      "clientId": "C-4",
      "providerId": "P-1",
      "start": "2026-11-03T14:00:00.000Z",
      "end": "2026-11-03T14:30:00.000Z",
      "status": "cancelled",
      "cancelledAt": "2026-11-03T08:00:00.000Z"
    },
    {
      "id": "A-6",
      "clientId": "C-5",
      "providerId": "P-1",
      "start": "2026-11-03T16:00:00.000Z",
      "end": "2026-11-03T16:30:00.000Z",
      "status": "booked"
    }
  ]
}
JSON