Integrate secure faxing into your EHR or health-tech platform in minutes. Our REST API supports webhooks, SDKs, and Fax-to-JSON output, automatically transforming unstructured faxes into structured data.
Trusted by healthcare leaders scaling fast
Built with an API-first approach, our platform lets you integrate in days, not months. Send and receive instantly with modern REST endpoints and typed SDKs—no wrestling with legacy telecom protocols.
Eliminate busy signals and cut operational costs. Our infrastructure handles millions of pages with 99.99% uptime and zero maintenance.
Integrate enterprise-grade faxing, forms, and HIPAA compliant email into your application within minutes.
Fully compliant infrastructure with signed BAA. End-to-end encryption ensures patient data is never compromised.
Automatically categorize, label, and route incoming documents. Extract patient data with built-in AI and custom-trained models.
Auto-scaling infrastructure designed for high availability. Redundant systems ensure zero maintenance and 99.99% uptime.
Sandbox access, typed SDKs, real-time webhooks, and direct developer support. Integrate in minutes.
Track delivery status, page counts, and success rates in real-time. Gain insights into your communication workflows.
SOC 2 Type II certified. Role-based access control, audit logs, and advanced security features for enterprise needs.
Stop building your own OCR pipelines. Medsender's AI is trained specifically on medical documents to extract patient demographics, insurance, diagnoses, and more with human-level accuracy.
Stop wrestling with legacy telecom protocols. Our REST API makes sending and receiving faxes as easy as sending an email. No fax servers, SIP lines, or telecom lines needed.
const API_BASE='https://api.medsender.com/api/v2';
const API_KEY='sk_test_...';
// Provision number
await fetch(`${API_BASE}/fax_numbers`,{
method:'POST',headers:{Authorization:`Bearer ${API_KEY}`,'Content-Type':'application/json'},
body:JSON.stringify({fax_number:{area_code:'415'}})
});
// Send fax
const fd=new FormData();
fd.append('file', new Blob([await Deno.readFile('./sample.pdf')]), 'sample.pdf');
fd.append('from_number','+14155550100');
fd.append('to_number','+13125550123');
const res=await fetch(`${API_BASE}/sent_faxes`,{method:'POST',headers:{Authorization:`Bearer ${API_KEY}`},body:fd});
console.log(await res.json());
const API_BASE = 'https://api.medsender.com/api/v2';
const API_KEY: string = 'sk_test_...';
// Provision number
await fetch(`${API_BASE}/fax_numbers`,{
method:'POST',headers:{Authorization:`Bearer ${API_KEY}`,'Content-Type':'application/json'},
body:JSON.stringify({fax_number:{area_code:'415'}})
});
// Send fax
const fd = new FormData();
fd.append('file', new Blob([await (await fetch('./sample.pdf')).arrayBuffer()]), 'sample.pdf');
fd.append('from_number','+14155550100');
fd.append('to_number','+13125550123');
const res = await fetch(`${API_BASE}/sent_faxes`,{method:'POST',headers:{Authorization:`Bearer ${API_KEY}`},body:fd});
console.log(await res.json());
import requests, json
API_BASE='https://api.medsender.com/api/v2'
API_KEY='sk_test_...'
# Provision number
r=requests.post(f"{API_BASE}/fax_numbers", headers={'Authorization':f'Bearer {API_KEY}','Content-Type':'application/json'}, data=json.dumps({'fax_number':{'area_code':'415'}}))
print(r.json())
# Send fax
files={'file':open('./sample.pdf','rb')}
data={'from_number':'+14155550100','to_number':'+13125550123'}
r=requests.post(f"{API_BASE}/sent_faxes", headers={'Authorization':f'Bearer {API_KEY}'}, files=files, data=data)
print(r.json())
require 'net/http'
require 'uri'
# Provision number
uri = URI.parse('https://api.medsender.com/api/v2/fax_numbers')
req = Net::HTTP::Post.new(uri)
req['Authorization'] = 'Bearer sk_test_...'
req['Content-Type'] = 'application/json'
req.body = '{"fax_number":{"area_code":"415"}}'
Net::HTTP.start(uri.hostname, uri.port, use_ssl: true){|http| http.request(req)}
# Send fax
uri2 = URI.parse('https://api.medsender.com/api/v2/sent_faxes')
req2 = Net::HTTP::Post.new(uri2)
req2['Authorization'] = 'Bearer sk_test_...'
form = [['file', File.open('sample.pdf')], ['from_number','+14155550100'], ['to_number','+13125550123']]
req2.set_form(form, 'multipart/form-data')
res = Net::HTTP.start(uri2.hostname, uri2.port, use_ssl: true){|http| http.request(req2)}
puts res.body
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://api.medsender.com/api/v2/fax_numbers',
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer sk_test_...', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['fax_number' => ['area_code' => '415']]),
CURLOPT_RETURNTRANSFER => true
]);
curl_exec($ch);
// Send fax
$post = [
'file' => new CURLFile('sample.pdf', 'application/pdf', 'sample.pdf'),
'from_number' => '+14155550100',
'to_number' => '+13125550123'
];
curl_setopt_array($ch, [
CURLOPT_URL => 'https://api.medsender.com/api/v2/sent_faxes',
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer sk_test_...'],
CURLOPT_POSTFIELDS => $post,
CURLOPT_RETURNTRANSFER => true
]);
$res = curl_exec($ch);
echo $res;
import java.net.http.*;
import java.net.URI;
public class Quickstart {
public static void main(String[] args) throws Exception {
var client = HttpClient.newHttpClient();
// Provision number (JSON)
var pbody = "{\"fax_number\":{\"area_code\":\"415\"}}";
var preq = HttpRequest.newBuilder()
.uri(URI.create("https://api.medsender.com/api/v2/fax_numbers"))
.header("Authorization","Bearer sk_test_...")
.header("Content-Type","application/json")
.POST(HttpRequest.BodyPublishers.ofString(pbody))
.build();
client.send(preq, HttpResponse.BodyHandlers.ofString());
// Send fax (simplified placeholder)
var req = HttpRequest.newBuilder()
.uri(URI.create("https://api.medsender.com/api/v2/sent_faxes"))
.header("Authorization","Bearer sk_test_...")
.POST(HttpRequest.BodyPublishers.ofString(""))
.build();
var res = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
}
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
// Provision number
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization","Bearer sk_test_...");
var json = "{\"fax_number\":{\"area_code\":\"415\"}}";
await client.PostAsync("https://api.medsender.com/api/v2/fax_numbers", new StringContent(json, System.Text.Encoding.UTF8, "application/json"));
// Send fax (simplified placeholder)
var res = await client.PostAsync("https://api.medsender.com/api/v2/sent_faxes", new StringContent(""));
Console.WriteLine(await res.Content.ReadAsStringAsync());
Generic fax APIs aren't built for healthcare. We provide the specialized infrastructure you need to scale.
| Feature | Generic Fax APIs | Medsender AI Document Intelligence |
|---|---|---|
| Data Extraction Accuracy | None (Raw Image Only) | 99% Context-Aware AI |
| Document Classification | None (Manual Sorting Only) | Automatic Classification (Labs, Referrals and many more) |
| Data Output | Raw PDF/TIFF images | Structured JSON / FHIR-ready |
| Operational Efficiency | Overwhelming manual process | Scalable Automation Engine |
| Integration | None (Manual Upload Required) | Seamless EMR/EHR integration |
| Error Rate | High risk of human error | Automated Error Prevention |
| Developer Support | Ticket-based / Account Manager | Developer Supported |
| Feature | Generic Cloud Fax APIs | Medsender Healthcare Fax API |
|---|---|---|
| Data Extraction | Image/PDF only (Unstructured) | 99% Accurate Medical AI (JSON) |
| Workflow Automation | Manual data entry required | Automatic Patient Chart Sync |
| Compliance Focus | General Encryption | Purpose-built HIPAA Infrastructure |
| Integration | Generic fax delivery only | EMR / EHR Integration |
| Patient Matching | Not included | Automatic Patient Matching |
| Developer Experience | Basic fax API | REST API, SDKs, Webhooks |
| Technical Support | Standard Ticket Support | Dedicated Healthcare Engineering Support |
With Medsender, we transformed an overwhelming manual process into a scalable automation engine. Unlike our previous vendor, Medsender understands the complexities of healthcare documents. We're at 99% accuracy, with only a handful of exceptions that need review. That shift freed our experts, lowered our costs, and made our service faster, as well as our cost structure more competitive. It's exactly what we needed to grow.
"Medsender's startup program saved us months of compliance work."
We know early-stage healthcare startups need to move fast and conserve cash. That's why we offer a generous credit program designed to get you to market without the overhead.
Pay only for what you use. No hidden fees or long-term contracts.
Reliable, programmable fax infrastructure for sending and receiving.
Add intelligence to your API workflows. Extract data from documents processed by the API.
A healthcare fax API allows developers to programmatically send and receive faxes within a HIPAA-compliant environment, often integrating directly with EHRs.
Yes. Medsender is built specifically for healthcare, ensuring all transmissions meet HIPAA Security Rule standards with robust access controls and encryption.
Yes. Unlike generic APIs, Medsender uses AI trained on medical records to convert faxes into structured JSON data for easy integration.
Absolutely. Our developer-friendly API supports RESTful calls, webhooks for real-time notifications, and comprehensive SDKs to speed up integration for health-tech engineering teams.
Immediately. Once you sign up, you’ll receive a sandbox API key so you can start testing right away.
Yes. Every Medsender account comes with a signed BAA at no additional cost.
Absolutely. We support full number porting with zero downtime. Our team handles the coordination with carriers.
Our AI is specialized for healthcare. It processes referrals, lab results, prescriptions, insurance cards, and patient intake forms, and more with high accuracy.
Yes. Our pricing scales with your usage. Contact our sales team for volume-based pricing.