menu logo

API/File/Upload

The Intron Health API follows a simple two-step process:

  1. Upload an audio file and receive a file ID
  2. Poll the status endpoint with the file ID to get processing results Get file status

Authentication

All API requests require an API key to be included in the headers:

Authorization: Bearer [access-key]

Endpoint

POST https://infer.intron.health/file/v1/upload

Request Body form-data

Field Type Description Required Options Default
audio_file_name String non-unique file name yes
audio_file_url String url to a readable file yes
Post processing options
use_diarization String get the transcript text as a diarized response no TRUE | FALSE
use_category String set the category of post-processing to use on the file no
  • file_category_general
  • file_category_telehealth
  • file_category_procedure
  • file_category_call_center
file_category_telehealth

Post processing options for the file categories

Field Type Description Required Options Default
get_summary String get a summary of the transcript no TRUE | FALSE
Field Type Description Required Options Default
get_summary String get a summary of the transcript no TRUE | FALSE
get_entity_list String get extracted entities from the transcript no TRUE | FALSE
get_treatment_plan String get extracted treatment plan from the transcript no TRUE | FALSE
get_soap_note String get extracted SOAP note from the transcript no TRUE | FALSE
get_clerking String get extracted clerking from the transcript no TRUE | FALSE
get_icd_codes String get the extracted icd/billing codes no TRUE | FALSE
get_suggestions String get suggestions of important questions to ask or instructions to give patient no TRUE | FALSE
get_differential_diagnosis String get the differential diagnosis of the patient no TRUE | FALSE
get_followup_instructions String get follow up instructions for the patient no TRUE | FALSE
get_practice_guidelines String get practice guidelines for the patient no TRUE | FALSE
Field Type Description Required Options Default
get_summary String get a summary of the transcript no TRUE | FALSE
get_entity_list String get extracted entities from the transcript no TRUE | FALSE
get_treatment_plan String get extracted treatment plan from the transcript no TRUE | FALSE
get_op_note String get the extracted operation note no TRUE | FALSE
get_icd_codes String get the extracted icd/billing codes no TRUE | FALSE
get_suggestions String get suggestions of important questions to ask or instructions to give patient no TRUE | FALSE
Field Type Description Required Options Default
get_summary String get a summary of the transcript no TRUE | FALSE
get_call_center_results String get the resolution of a call no TRUE | FALSE
get_call_center_agent_score String get the performance score for the agent in a call no TRUE | FALSE
get_call_center_agent_score_category String get the performance assessment no TRUE | FALSE
get_call_center_product_info String get the product information discussed in the call no TRUE | FALSE
get_call_center_product_insights String get ideas to improve the product based on customer feedback in the call no TRUE | FALSE
get_call_center_compliance String get the compliance check of the call no TRUE | FALSE
get_call_center_feedback String get the feedback of the call no TRUE | FALSE
get_call_center_sentiment String get caller sentiment analysis no TRUE | FALSE

Basic request and response sample

                    
                        curl --location 'https://infer.intron.health/file/v1/upload' \
                        --header 'Authorization: Bearer api-key' \
                        --form 'audio_file_name="my_file_2"' \
                        --form 'audio_file_blob=@"/C:/Users/aaaa/file.wav"'
                    
                
                    
                    import requests
            
                    url = "https://infer.intron.health/file/v1/upload"
            
                    payload = {
                        "audio_file_name":"file-1"
                    }
                    files = {
                        'audio_file_blob': open(file_path, 'rb')
                    }
                    headers = {
                        "Authorization": f"Bearer {api_key}"
                    }
            
                    response = requests.request("POST", url, headers=headers, files=files, data=payload)
            
                    print(response.text)
                    
                
                    
                    const formData = new FormData();
                    formData.append('audio_file_blob', file);
                    formData.append('audio_file_name', file.name);
            
                    const requestOptions = {
                        method: "POST",
                        headers: {
                            'Authorization': `Bearer ${apiKey}`
                        },
                        body: forData
                    };
                    
                    fetch("https://infer.intron.health/file/v1/upload", requestOptions)
                    .then((response) => response.text())
                    .then((result) => console.log(result))
                    .catch((error) => console.error(error));
                    
                
                    
                    {
                        "data": {
                            "file_id": "12a9760f-b165-4404-91d0-a65d4cdt78fs"
                        },
                        "message": "file queued for processing",
                        "status": "Ok"
                    }
                    
                
                    
                        {
                            "status": "Ok",
                            "message": "file status found",
                            "data": {
                                "processing_status": "FILE_TRANSCRIBED",
                                "audio_file_name": "file-1",
                                "audio_transcript": "hello world",
                                "processed_audio_duration_in_seconds": 20,
                                "transcript_summary": "Brief overview of the consultation discussing GERD symptoms",
                                "transcript_soap_note": "SOAP Note:\n\nSubjective:\n- Patient reports heartburn and acid reflux\n- Symptoms worse at night\n\nObjective:\n- No visible throat inflammation\n- Normal vital signs\n\nAssessment:\n- GERD likely diagnosis\n\nPlan:\n- Prescribed PPI medication\n- Dietary modifications recommended",
                                "transcript_entity_list": "Medical Entity Extraction:\n1. Patient Complaints:\n- Heartburn\n- Acid reflux\n2. Medications:\n- PPI prescribed\n3. Diagnosis:\n- GERD",
                                "transcript_treatment_plan": "Treatment Plan:\n1. PPI medication daily\n2. Avoid trigger foods\n3. Follow-up in 2 weeks",
                                "transcript_suggestions": "General Suggestions:\n- Schedule follow-up in 2 weeks\n\nDifferential Diagnosis:\n- Consider H. pylori infection\n- Rule out Barrett's esophagus\n\nFollow-up Instructions:\n- Monitor symptoms daily\n- Keep food diary\n\nPractice Guidelines:\n- ACG Guidelines for GERD Management\n- Standard acid suppression protocol",
                                "transcript_billing_codes": "ICD-11: DA42.0 - Gastro-esophageal reflux disease\nSNOMED: 235595009 - GERD\nCPT: 99213 - Office visit, established patient",
                                "transcript_clerking": "Detailed clerking notes formatted in standard medical format"
                            }
                        }
                    
                

Request and response with diarization

                    
                    curl --location --request GET 'https://infer.intron.health/file/v1/upload' \
                    --header 'Authorization: Bearer api-key' \
                    --form 'audio_file_name="my_file_2"' \
                    --form 'audio_file_blob=@"/C:/Users/aaaa/file.wav"' \
                    --form 'use_diarization="TRUE"'
                    
                
                    
                    import requests
            
                    url = "https://infer.intron.health/file/v1/upload"
            
                    payload = {
                        "audio_file_name":"file-1",
                        'use_diarization:"TRUE"
                    }
                    files = {
                        'audio_file_blob': open(file_path, 'rb')
                    }
                    headers = {
                        "Authorization": f"Bearer {api_key}"
                    }
            
                    response = requests.request("POST", url, headers=headers, files=files, data=payload)
            
                    print(response.text)
                    
                
                    
                    const formData = new FormData();
                    formData.append('audio_file_blob', file);
                    formData.append('audio_file_name', file.name);
                    formData.append('use_diarization', "TRUE");
            
                    const requestOptions = {
                        method: "POST",
                        headers: {
                            'Authorization': `Bearer ${apiKey}`
                        },
                        body: forData
                    };
                    
                    fetch("https://infer.intron.health/file/v1/upload", requestOptions)
                    .then((response) => response.text())
                    .then((result) => console.log(result))
                    .catch((error) => console.error(error));
                    
                
                    
                    {
                        "data": {
                            "file_id": "12a9760f-b165-4404-91d0-a65d4cdt78fs"
                        },
                        "message": "file queued for processing",
                        "status": "Ok"
                    }
                    
                
                    
                        {
                            "status": "Ok",
                            "message": "file status found",
                            "data": {
                                "processing_status": "FILE_TRANSCRIBED",
                                "audio_file_name": "file-1",
                                "audio_transcript": "hello world",
                                "processed_audio_duration_in_seconds": 20,
                                "transcript_summary": "Customer called regarding Premium Plan upgrade",
                                "transcript_results": "Call Resolution:\n- Issue resolved successfully\n- Customer satisfied with solution\n\nCaller Sentiment:\n- Initially frustrated\n- Ended call positively\n\nProduct Information:\n- Product: Premium Plan\n- Brand: Example Corp\n- Model: Enterprise Edition",
                                "transcript_agent_score": "Numerical Score:\n- Overall Score: 42/50\n- Welcome/Introduction: 5/5\n- Problem Resolution: 12/15\n\nCategorical Assessment:\n- Performance Level: Green\n- Areas of Excellence: Customer handling, product knowledge",
                                "transcript_product_insight": "Product Feedback:\n- Upgrade process could be simplified\n- Customers requesting more payment options",
                                "transcript_compliance": "Compliance Assessment:\n- All required protocols followed\n- Security verification completed\n- Proper disclosures provided",
                                "transcript_feedback": "Agent Feedback:\n- Excellent handling of initial frustration\n- Clear explanation of upgrade process\n- Consider faster security verification"
                            }
                        }
                    
                

Request and response using file category of file_category_general

                    
                    curl --location --request GET 'https://infer.intron.health/file/v1/upload' \
                    --header 'Authorization: Bearer api-key' \
                    --form 'audio_file_name="my_file_2"' \
                    --form 'audio_file_blob=@"/C:/Users/aaaa/file.wav"' \
                    --form 'use_category'='file_category_general' \ 
                    --form 'get_summary'='TRUE'
                    
                
                    
                    import requests
            
                    url = "https://infer.intron.health/file/v1/upload"
            
                    payload = {
                        "audio_file_name":"file-1",
                        "use_category":"file_category_general",
                        "get_summary":"TRUE"
                    }
                    files = {
                        'audio_file_blob': open(file_path, 'rb')
                    }
                    headers = {
                        "Authorization": f"Bearer {api_key}"
                    }
            
                    response = requests.request("POST", url, headers=headers, files=files, data=payload)
            
                    print(response.text)
                    
                
                    
                    const formData = new FormData();
                    formData.append('audio_file_blob', file);
                    formData.append('audio_file_name', file.name);
                    formData.append('use_category', "file_category_general");
                    formData.append('get_summary', "TRUE");
            
                    const requestOptions = {
                        method: "POST",
                        headers: {
                            'Authorization': `Bearer ${apiKey}`
                        },
                        body: forData
                    };
                    
                    fetch("https://infer.intron.health/file/v1/upload", requestOptions)
                    .then((response) => response.text())
                    .then((result) => console.log(result))
                    .catch((error) => console.error(error));
                    
                
                    
                    {
                        "data": {
                            "file_id": "12a9760f-b165-4404-91d0-a65d4cdt78fs"
                        },
                        "message": "file queued for processing",
                        "status": "Ok"
                    }
                    
                
                    
                        {
                            "status": "Ok",
                            "message": "file status found",
                            "data": {
                                "processing_status": "FILE_TRANSCRIBED",
                                "audio_file_name": "file-1",
                                "audio_transcript": "hello world",
                                "transcript_summary": "MarkDown formated text",
                                "processed_audio_duration_in_seconds": 20
                            }
                        }
                    
                

Request and response using file category of file_category_telehealth

                    
                    curl --location --request GET 'https://infer.intron.health/file/v1/upload' \
                    --header 'Authorization: Bearer api-key' \
                    --form 'audio_file_name="my_file_2"' \
                    --form 'audio_file_blob=@"/C:/Users/aaaa/file.wav"' \
                    --form 'use_category'='file_category_telehealth' \ 
                    --form 'get_soap_note'='TRUE' \ 
                    --form 'get_summary'='TRUE' \ 
                    --form 'get_entity_list'='TRUE' \ 
                    --form 'get_treatment_plan'='TRUE' \ 
                    --form 'get_clerking'='TRUE' \
                    --form 'get_suggestions'='TRUE' \
                    --form 'get_icd_codes'='TRUE' \
                    --form 'get_differential_diagnosis'='TRUE' \
                    --form 'get_followup_instructions'='TRUE' \
                    --form 'get_practice_guidelines'='TRUE'
                    
                
                    
                    import requests
            
                    url = "https://infer.intron.health/file/v1/upload"
            
                    payload = {
                        "audio_file_name":"file-1",
                        "use_category":"file_category_telehealth",
                        "get_soap_note":"TRUE",
                        "get_summary":"TRUE",
                        "get_entity_list":"TRUE",
                        "get_treatment_plan":"TRUE",
                        "get_clerking":"TRUE",
                        "get_suggestions":"TRUE",
                        "get_icd_codes":"TRUE",
                        "get_differential_diagnosis":"TRUE",
                        "get_followup_instructions":"TRUE",
                        "get_practice_guidelines":"TRUE"
                    }
                    files = {
                        'audio_file_blob': open(file_path, 'rb')
                    }
                    headers = {
                        "Authorization": f"Bearer {api_key}"
                    }
            
                    response = requests.request("POST", url, headers=headers, files=files, data=payload)
            
                    print(response.text)
                    
                
                    
                    const formData = new FormData();
                    formData.append('audio_file_blob', file);
                    formData.append('audio_file_name', file.name);
                    formData.append('use_category', "file_category_general");
                    formData.append('get_soap_note', "TRUE");
                    formData.append('get_summary', "TRUE");
                    formData.append('get_entity_list', "TRUE");
                    formData.append('get_treatment_plan', "TRUE");
                    formData.append('get_clerking', "TRUE");
                    formData.append('get_suggestions', "TRUE");
                    formData.append('get_icd_codes', "TRUE");
                    formData.append('get_differential_diagnosis', "TRUE");
                    formData.append('get_followup_instructions', "TRUE");
                    formData.append('get_practice_guidelines', "TRUE");
            
                    const requestOptions = {
                        method: "POST",
                        headers: {
                            'Authorization': `Bearer ${apiKey}`
                        },
                        body: forData
                    };
                    
                    fetch("https://infer.intron.health/file/v1/upload", requestOptions)
                    .then((response) => response.text())
                    .then((result) => console.log(result))
                    .catch((error) => console.error(error));
                    
                
                    
                    {
                        "data": {
                            "file_id": "12a9760f-b165-4404-91d0-a65d4cdt78fs"
                        },
                        "message": "file queued for processing",
                        "status": "Ok"
                    }
                    
                
                    
                        {
                            "status": "Ok",
                            "message": "file status found",
                            "data": {
                                "processing_status": "FILE_TRANSCRIBED",
                                "audio_file_name": "file-1",
                                "audio_transcript": "hello world",
                                "processed_audio_duration_in_seconds": 20,
                                "transcript_summary": "Customer called regarding Premium Plan upgrade",
                                "transcript_soap_note": "SOAP note of the patient",
                                "transcript_entity_list": "List of entities extracted from the transcript",
                                "transcript_treatment_plan": "Treatment plan of the patient",
                                "transcript_clerking": "Clerking of the patient",
                                "transcript_icd_codes": "ICD/Billing codes extracted from the transcript",
                                "transcript_suggestions": "Suggestions of important questions to ask or instructions to give patient",
                                "transcript_differential_diagnosis": "Differential diagnosis of the patient",
                                "transcript_followup_instructions": "Follow up instructions for the patient",
                                "transcript_practice_guidelines": "Practice guidelines for the patient"
                            }
                        }
                    
                

Quotas and Limits

    • Maximum file size: 100MB
    • Maximum audio duration: 10 minutes
    • Rate limit: 30 requests per minute