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
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_product_insights String get ideas to improve the product based on customer feedback in the call 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
                            }
                        }
                    
                

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": "
                                    SPEAKER_01: Hello world.  
                                    SPEAKER_02: Welcome.
                                ",
                                "processed_audio_duration_in_seconds": 20
                            }
                        }
                    
                

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'
                    
                
                    
                    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"
                    }
                    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");
            
                    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_clerking": "MarkDown formated text",
                                "transcript_entity_list": "MarkDown formated text",
                                "transcript_soap_note": "MarkDown formated text",
                                "transcript_summary": "MarkDown formated text",
                                "transcript_treatment_plan": "MarkDown formated text"
                            }
                        }
                    
                

Quotas and Limits

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