Skip to content

API Documentation

Evergate API reference

Base URL https://api.evergate.ai/v1. All requests and responses are JSON over HTTPS.

Proposed API. Endpoints marked Proposed describe the intended v1 contract and are not yet publicly available. Example responses are synthetic and produced by the same demo rules as the playground. Schemas may change before general availability.

Authentication

Authenticate with a secret key in the Authorization header. Keys are scoped per organization, environment and module, and must only be used from your servers.

curl https://api.evergate.ai/v1/intake/analyze \
  -H "Authorization: Bearer $EVERGATE_API_KEY" \
  -H "Content-Type: application/json"

Errors

Errors use standard HTTP status codes and a consistent body. See the full error table.

422 Unprocessable Entity
{
  "error": {
    "code": "invalid_request",
    "field": "complaint",
    "message": "`complaint` is required and must be a non-empty string."
  }
}

Analyze intake

Proposed
POST /v1/intake/analyze

Turns a free-text patient complaint into a structured intake object with adaptive follow-up questions.

Request body

languagestringrequired
ISO 639-1 code of the conversation: en, ru, kk, uz.
patient.ageinteger
Age in years. Omit if unknown.
complaintstringrequired
Patient-reported complaint in their own words.
session_idstring
Continue an existing intake session.

Response

session_idstring
Identifier used to continue the conversation.
statusenum
in_progress | needs_clinician_review | complete
structured_intakeobject
Chief complaint, onset, duration, and follow-ups.
Request · synthetic
{
  "language": "en",
  "patient": {
    "age": 34
  },
  "complaint": "Persistent headache and nausea"
}
200 OK · synthetic
{
  "session_id": "demo_session_1l7eha",
  "status": "needs_clinician_review",
  "language": "en",
  "structured_intake": {
    "chief_complaint": "Headache and nausea",
    "qualifiers": [
      "persistent"
    ],
    "duration": "not yet specified",
    "reported_symptoms": [
      "headache",
      "nausea"
    ],
    "patient_age": 34,
    "follow_up_questions": [
      "When did the headache begin?",
      "Have you vomited, and if so, how many times?",
      "Have you experienced any additional symptoms?"
    ]
  },
  "next_action": "ask_follow_up",
  "disclaimer": "Decision-support draft for clinician review. Not a diagnosis."
}

Assess triage routing

Proposed
POST /v1/triage/assess

Interprets structured symptoms against your configured routing workflow and surfaces potential warning signs for clinician review.

Request body

workflow_idstringrequired
Routing workflow configured for your organization.
symptomsstring[]required
Normalized symptom list, e.g. from an intake session.
patient.ageinteger
Age in years.

Response

suggested_routestring
Route from your workflow, pending clinician review.
warning_signsobject[]
Potential red flags with the rule that matched.
requires_clinician_reviewboolean
Always true. Routing is a suggestion, not a decision.
Request · synthetic
{
  "workflow_id": "primary_care_default",
  "patient": {
    "age": 58
  },
  "symptoms": [
    "chest discomfort",
    "shortness of breath"
  ]
}
200 OK · synthetic
{
  "assessment_id": "demo_triage_wselyl",
  "workflow_id": "primary_care_default",
  "normalized_symptoms": [
    "chest discomfort",
    "shortness of breath"
  ],
  "warning_signs": [
    {
      "rule": "chest_symptoms",
      "level": "high",
      "message": "Chest symptoms reported. Workflow requires prompt clinician assessment."
    }
  ],
  "suggested_route": "priority_clinician_review",
  "requires_clinician_review": true,
  "rationale": "Route selected by workflow rules matching the warning signs above.",
  "disclaimer": "Decision-support draft for clinician review. Not a diagnosis."
}

Create transcription

Proposed
POST /v1/transcriptions

Submits consultation audio for asynchronous, diarized transcription. Results are delivered by webhook or polling.

Request body

audio_urlstringrequired
Pre-signed URL to the audio file in your storage.
languagestringrequired
Primary language: en, ru, kk, uz.
diarizationboolean
Label speakers. Defaults to true.
webhook_urlstring
Receives transcription.completed.

Response

idstring
Transcription job identifier.
statusenum
queued | processing | completed | failed
segmentsobject[]
Speaker, start/end timestamps, and text.
Request · synthetic
{
  "audio_url": "https://storage.example.com/synthetic/consult-001.wav",
  "language": "en",
  "diarization": true
}
200 OK · synthetic
{
  "id": "tr_demo_7d2jl5",
  "status": "completed",
  "language": "en",
  "duration_seconds": 28,
  "note": "Demo mode returns a fixed synthetic transcript regardless of audio_url.",
  "speakers": [
    {
      "id": "clinician",
      "label": "Doctor"
    },
    {
      "id": "patient",
      "label": "Patient"
    }
  ],
  "segments": [
    {
      "speaker": "clinician",
      "start": 0,
      "end": 4.2,
      "text": "Good afternoon. Can you describe when the symptoms started?"
    },
    {
      "speaker": "patient",
      "start": 4.6,
      "end": 9.8,
      "text": "The headache started yesterday evening, and I've felt nauseous since this morning."
    },
    {
      "speaker": "clinician",
      "start": 10.3,
      "end": 13.9,
      "text": "On a scale of one to ten, how strong is the pain right now?"
    },
    {
      "speaker": "patient",
      "start": 14.4,
      "end": 18.1,
      "text": "Around six. It gets worse when I look at bright light."
    },
    {
      "speaker": "clinician",
      "start": 18.7,
      "end": 22.9,
      "text": "Have you taken anything for it, or had a fever?"
    },
    {
      "speaker": "patient",
      "start": 23.3,
      "end": 27.6,
      "text": "I took ibuprofen last night. No fever that I noticed."
    }
  ]
}

Draft clinical note

Proposed
POST /v1/documentation/draft

Generates an editable, SOAP-style draft from a transcript or intake session. Clinicians edit and approve the final note.

Request body

sourceobjectrequired
{ type: transcription | intake, id }
templateenumrequired
soap | summary | referral
languagestring
Output language. Defaults to the source language.

Response

draft_idstring
Identifier of the editable draft.
statusenum
draft_pending_approval | approved
sectionsobject
Template sections with normalized terminology.
Request · synthetic
{
  "source": {
    "type": "transcription",
    "id": "tr_demo_001"
  },
  "template": "soap",
  "language": "en"
}
200 OK · synthetic
{
  "draft_id": "doc_demo_1p1z3r",
  "status": "draft_pending_approval",
  "template": "soap",
  "source": {
    "type": "transcription",
    "id": "tr_demo_001"
  },
  "sections": {
    "subjective": "Headache since yesterday evening, rated 6/10, worse with bright light. Nausea since this morning. Took ibuprofen last night. Denies noticed fever.",
    "objective": "Not captured in conversation. To be completed by clinician.",
    "assessment": "To be completed by clinician.",
    "plan": "To be completed by clinician."
  },
  "normalized_terms": [
    {
      "text": "headache",
      "attributes": {
        "onset": "yesterday evening",
        "severity": "6/10"
      }
    },
    {
      "text": "nausea",
      "attributes": {
        "onset": "this morning"
      }
    },
    {
      "text": "photophobia",
      "source_phrase": "worse when I look at bright light"
    },
    {
      "text": "ibuprofen",
      "category": "medication_taken"
    }
  ],
  "requires_approval": true,
  "disclaimer": "Decision-support draft for clinician review. Not a diagnosis."
}

Planned endpoints

Planned

Designed resources whose schemas are not yet specified. Listed so you can plan your integration.

GET/v1/sessions/{id}Retrieve an intake or triage session.
GET/v1/transcriptions/{id}Poll a transcription job.
PATCH/v1/documentation/drafts/{id}Save clinician edits to a draft.
POST/v1/documentation/drafts/{id}/approveMark a draft as approved.
GET/v1/workflowsList configured triage routing workflows.
POST/v1/webhooks/endpointsRegister a webhook endpoint.