Synchronous generation

View as Markdown

Synchronous generation transcribes a recording and generates a note using the selected template. The HTTP response contains both results after processing completes.

Endpoint

POST /aiservices/clinical_notes/generate

Authenticate with your Zoom AI Services credentials. The examples on this page send a token in the Authorization: Bearer header.

Input

Provide a downloadable HTTPS or S3 URI in a JSON request, or upload a recording in the multipart file part.

FieldTypeRequiredDescription
filestring or multipart fileYesDownloadable HTTPS or S3 URI to the recording, or the uploaded file.
templatestringNoSOAP, GENERAL_MEDICINE, or GENERAL_BEHAVIORAL_HEALTH. Defaults to GENERAL_MEDICINE when omitted or empty. An unknown template returns HTTP 400.
reference_idstringNoOptional client-supplied reference.

Provide exactly one recording input. If transcription or note generation fails, the whole request fails.

LimitValue
Supported formats.wav, .mp3, .m4a, .mp4, and .webm
Maximum duration2 hours
Maximum file size300 MB for uploads; 2 GB for URLs

Example request (cURL)

This example uploads a recording and selects the SOAP template.

curl -X POST "https://api.zoom.us/v2/aiservices/clinical_notes/generate" \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@consultation.wav;type=audio/wav" \
  -F "template=SOAP"

For an HTTPS recording URL, send JSON instead:

curl -X POST "https://api.zoom.us/v2/aiservices/clinical_notes/generate" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "file": "https://example.com/consultation.wav",
    "template": "SOAP"
  }'

Output

A successful request returns HTTP 200 and a JSON object with these fields.

FieldTypeDescription
request_idstringRequest identifier.
transcript.text_displaystringComplete transcript text.
clinical_notes.full_notestringComplete note formatted as Markdown.
clinical_notes.sectionsobject[]Ordered note sections.
clinical_notes.sections[].titlestringSection heading.
clinical_notes.sections[].contentstringGenerated content for the section.

clinical_notes is an object containing full_note and sections. Use the section array when your application displays headings and content separately.

The Clinical Notes transcript contains text_display. It does not return transcript segments.

Example response

This response comes from a SOAP request using a synthetic clinical encounter. Generated content depends on the recording.

{
  "request_id": "bd89ab23-6e6c-439e-ab0f-19f07806b5a8",
  "transcript": {
    "text_display": "This is a fictional clinical encounter for API testing. The patient reports a mild headache since yesterday. The patient denies fever and nausea. No examination findings were recorded. The clinician plans a follow-up next week."
  },
  "clinical_notes": {
    "full_note": "**Subjective**\n\nPatient reports a mild headache since yesterday. They deny fever and nausea.\n\n**Objective**\n\nNo examination findings were recorded.\n\n**Assessment**\n\nMild headache since yesterday without reported fever or nausea. No explicit diagnosis beyond the reported symptom was documented.\n\n**Plan**\n\nFor mild headache, follow up next week.",
    "sections": [
      {
        "title": "Subjective",
        "content": "Patient reports a mild headache since yesterday. They deny fever and nausea."
      },
      {
        "title": "Objective",
        "content": "No examination findings were recorded."
      },
      {
        "title": "Assessment",
        "content": "Mild headache since yesterday without reported fever or nausea. No explicit diagnosis beyond the reported symptom was documented."
      },
      {
        "title": "Plan",
        "content": "For mild headache, follow up next week."
      }
    ]
  }
}

Unsupported media

An input without a supported file extension returns HTTP 400 with reason set to UNSUPPORTED_MEDIA.

{
  "code": 400,
  "reason": "UNSUPPORTED_MEDIA",
  "message": "File extension \".jpg\" is not supported. Supported extensions: .m4a, .mp3, .mp4, .wav, .webm",
  "metadata": {}
}

Request errors

If the request fails, the API returns one of these HTTP error codes.

HTTP statusReasonCondition
400VALIDATION_MISSING_FIELDThe recording input is missing.
400INVALID_INPUTThe template name is unknown or the input URI is invalid.
400UNSUPPORTED_MEDIAThe input does not have a supported media extension.
429—Too many requests. Retry after the time in the Retry-After header.
500—Transcription or note generation failed.
503—The service is temporarily unavailable.

Authentication errors

Missing or invalid authentication returns HTTP 401. Authentication errors are separate from Clinical Notes application errors. See Get credentials for authentication requirements.