Built for modern health tech and high-volume workflows — Medsender delivers healthcare-trained accuracy, unmatched reliability, and a developer-first Fax API for inbound and outbound documents.
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 Classificaton (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 Fax APIs | Medsender Fax API |
|---|---|---|
| Primary Use Case | General purpose document transmission | Purpose-built for healthcare workflows |
| Security & Compliance | Basic security, custom dev for HIPAA | HIPAA-compliant by default |
| Supported Communications | Primarily supports basic fax transmission | Fax, email, and SMS from one platform |
| Reliability & Scalability | Varies; potential for busy signals | Cloud-based, 99.9% uptime, auto-scaling |
| Infrastructure | Legacy Telecom / SIP Trunks | Modern Cloud API |
| Developer Experience | Basic documentation; generic API | REST API, SDKs, webhooks, healthcare support |
| Developer Support | Ticket-based / Account Manager | Developer Supported |
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.
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.