Abstract illustration of code brackets and a document icon connected by flowing lines
Home / Blog / Fax API Guide

Fax API: The Simplest Way to Send a Fax from Code

A fax API lets your app, script, or AI agent send a fax over the phone network with a single HTTP request. No fax machine, no fax line, no legacy telephony stack. This guide covers what a fax API is, how FaxDrop's REST fax API works, and how to send your first fax in a few minutes.

By FaxDrop Team··7 min read

What Is a Fax API?

A fax API is a web service that sends and tracks faxes from code instead of from a physical fax machine. You send an HTTP request that contains the document and the recipient's fax number, and the provider transmits it over the public telephone network to the receiving fax machine. You never touch a phone line, a modem, or a T.38 gateway. The API is the whole interface.

A good fax API does three things. It accepts a document and a destination number and queues the fax. It authenticates the request so only your account is billed. And it exposes the delivery result, so your code knows whether the fax was delivered, failed, or is still sending. Everything else, like cover pages or batch sending, is a convenience on top of those three primitives.

People search for the "best fax API," a "simple fax API," or just "an API for fax" because most options in this space are anything but simple. The rest of this guide shows what a modern, minimal fax API looks like and how to send with one.

Why Fax Still Shows Up in Product Requirements

Over 17 billion faxes are sent every year. Healthcare, government, legal, and financial services all depend on fax for document transmission. If your app touches any of those industries, fax is not optional. It is a compliance requirement.

HIPAA requires covered entities to use "reasonable and appropriate safeguards" when transmitting protected health information. Fax has been an accepted method since the original 1996 regulations. Email has not. That single fact keeps fax alive in every hospital, insurance company, and pharmacy in the country.

The IRS, Social Security Administration, and most state agencies accept fax but not email attachments. Courts require faxed filings in many jurisdictions. Real estate closings still use fax for signed documents. The pattern is clear: anywhere that compliance and legal weight matter, fax is the channel.

The Old Way: Twilio, SOAP, and Pain

For years, the go-to developer option was Twilio's Programmable Fax API. It worked. It was not pretty. You needed to provision a fax-capable number, manage media URLs, handle callbacks for status updates, and navigate their pricing tiers. But it got the job done.

Then Twilio deprecated it. The Programmable Fax API is gone. If you search their docs today, you will find a deprecation notice and a suggestion to use a third-party provider. That left a gap in the market.

The alternatives are not great. Most fax APIs are wrappers around legacy infrastructure built in the 2000s. You get SOAP endpoints, XML payloads, multi-step authentication flows, and pricing models designed for enterprise sales calls. For a developer who just needs to send a fax from a Node.js app, it is overkill.

FaxDrop sends faxes in under 90 seconds. Free tier available, no card required.

Try FaxDrop Free

The FaxDrop Fax API: Two Endpoints, Multipart Upload

FaxDrop's fax API is simple on purpose. There are two endpoints. You POST /api/send-fax to send, and you GET /api/v1/fax/{faxId} to check delivery status. That is the entire surface area. FaxDrop handles the rest: document conversion, transmission over the carrier network, and delivery confirmation.

To send, you post a multipart form with four required fields: the file, the recipientNumber in E.164 format (like +12125551234), a senderName, and a senderEmail for the delivery confirmation. Supported file types are PDF, JPEG, and PNG, up to 4 MB. Export Word documents as PDF first. You get back a faxId immediately.

Authentication is a single API key passed as an X-API-Key header. Keys start with fd_live_ and you generate them in your account dashboard. No OAuth flows, no token refresh, no session management.

cURL

curl -X POST https://www.faxdrop.com/api/send-fax \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "recipientNumber=+12025550123" \
  -F "senderName=Your App" \
  -F "senderEmail=you@example.com" \
  -F "file=@document.pdf"

Python

import requests

resp = requests.post(
    "https://www.faxdrop.com/api/send-fax",
    headers={"X-API-Key": "YOUR_API_KEY"},
    files={"file": open("document.pdf", "rb")},
    data={
        "recipientNumber": "+12025550123",
        "senderName": "Your App",
        "senderEmail": "you@example.com",
    },
)
print(resp.json())

Node.js

const form = new FormData();
form.append("recipientNumber", "+12025550123");
form.append("senderName", "Your App");
form.append("senderEmail", "you@example.com");
form.append("file", fs.createReadStream("document.pdf"));

const res = await fetch(
  "https://www.faxdrop.com/api/send-fax",
  {
    method: "POST",
    headers: { "X-API-Key": "YOUR_API_KEY" },
    body: form,
  }
);
console.log(await res.json());

To confirm delivery, poll the status endpoint with the faxId you got back. The response tells you whether the fax is queued, sending, completed, failed, partial, or unknown, plus the page count once it finishes. completed, failed, and partial are terminal, so stop polling once you see any of them. unknown is not terminal: it means the status could not be resolved yet, so keep polling with backoff until you see a terminal status. Most US faxes deliver in under 90 seconds.

cURL (check status)

curl https://www.faxdrop.com/api/v1/fax/fax_abc123 \
  -H "X-API-Key: YOUR_API_KEY"

# { "id": "fax_abc123", "status": "completed", "pages": 3 }

That is the entire integration. No SDK to install. No webhooks to configure for basic usage. Send, then poll status on your own schedule. A common pattern is to poll every few seconds for the first two minutes, then back off.

For the full field-by-field reference, status values, error codes, and language snippets in Python, Node.js, and PHP, see the FaxDrop developer docs.

How the Credit Model Works

FaxDrop bills in fax credits, not raw per-page metering. One credit covers a single outbound fax of up to 10 pages. An 11-page document uses 2 credits. There is no per-minute charge and no separate connection fee. Credits you buy never expire.

For API workflows, that means each successful send draws down one credit per 10-page block. If a fax fails, the credits for that fax are refunded, so a failed send nets to zero cost. You can top up with credit packs or move to a subscription for higher monthly volume. Pricing is on the pricing page, covered in more detail below.

HIPAA Compliance Out of the Box

If you are building for healthcare, compliance is not a feature request. It is table stakes. FaxDrop uses Sinch as its fax carrier. Sinch signs Business Associate Agreements and maintains SOC 2 certification. That means the entire transmission chain, from your API call to the receiving fax machine, is covered.

Documents are encrypted in transit. They are not stored permanently on FaxDrop's servers after delivery. The cover page (available to subscribers) includes a confidentiality notice. For healthcare apps that need to transmit prescriptions, lab results, referrals, or insurance forms, this is the path of least resistance.

For a deeper look at fax and HIPAA, read our full HIPAA compliance breakdown.

AI Agents Need Fax Too

Here is something most fax providers have not figured out yet: AI agents are about to become the primary senders of faxes.

Think about an AI medical billing agent that processes claims. When a payer requires faxed documentation, the agent needs to send it automatically. An AI legal assistant filing court documents. An AI tax preparer submitting forms to the IRS. These are not edge cases. These are the near-term future of every industry that still uses fax.

A REST API with two endpoints is exactly what an AI agent needs. No browser automation. No multi-step forms. One HTTP request with a file and a phone number to send, one to check status. For agents that speak the Model Context Protocol, a community MCP server (klodr/faxdrop-mcp) wraps these endpoints as MCP tools so an agent can discover and call the fax tool natively.

Pricing That Makes Sense for Developers

FaxDrop offers two free faxes per month, up to 5 pages including cover, with no signup required. After that, pay-per-fax is $1.99 for a single fax of up to 10 pages, or buy a credit pack for a lower per-fax rate. For steady volume, the Basic plan is $9.99/month for 50 fax credits and the Pro plan is $24.99/month for 200 fax credits. Purchased credits never expire.

Compare that to enterprise fax APIs that charge setup fees, monthly minimums, and per-page rates that add up fast. FaxDrop's pricing is transparent and posted on the pricing page. No sales call required.


Add Fax to Your App in Five Minutes

Two endpoints: one to send, one to check status. Multipart upload. Healthcare workflow support. Start with two free faxes, no card required.

Send a Fax Free

No fax machine. No signup. 2 free faxes per month, up to 5 pages.

FAQs

Frequently Asked Questions

What is a fax API used for?+

A fax API lets your app send documents to fax numbers programmatically, usually for forms, healthcare workflows, finance, and other compliance-heavy operations.

Do I need a phone line to use a fax API?+

No. The fax provider handles the telecom layer, while your app sends files and metadata over HTTPS.

Is FaxDrop a good fax API option for modern apps?+

It can be a strong fit when you want a clean send flow and a product that also works outside the API. That helps teams support manual and automated faxing in one place.

Security & Compliance

Healthcare faxing

Carrier BAA signed | Uploaded files not retained by FaxDrop

PCI DSS Level 1

Payments secured by Stripe | No card data touches our servers

256-bit SSL

End-to-end TLS 1.2+ encryption in transit

App Storage

Uploaded files are cleared from FaxDrop after send