// Documentation
Faxxing Docs.
Everything you need to send your first fax in under 90 seconds โ and the reference for every endpoint, webhook, and rate limit you'll touch after that.
Introduction
Faxxing is a REST API for sending and receiving faxes. You POST a job, we convert HTML to PDF if needed, route it to a carrier (Telnyx), and stream you delivery status via webhooks and SSE. Inbound faxes are forwarded to your email as PDF attachments.
The API is JSON in, JSON out. Auth is a single header. Webhooks are Ed25519-signed. No SDKs required.
Quick start
- Create a free account โ 50 outbound pages, no card required.
- From the dashboard, open API Keys and create a key. The plain key is shown once โ copy it immediately.
- Send a fax with the snippet under Send a fax.
- Watch it land in Fax Logs with live status updates.
Authentication
All requests must include your API key in the X-API-Key header. Keys are hashed (SHA-256) at rest โ we cannot retrieve a key after creation, so store it somewhere safe.
export FAXXING_API_KEY="fax_..."Revoke a key any time from the dashboard. Revocation is instant; in-flight jobs already accepted will still send.
Send a fax
POST a recipient and a media_url pointing to a PDF. Numbers must be E.164. The endpoint returns a 202 Accepted with the queued message โ delivery progress arrives via webhook.
curl -X POST https://api.faxxing.com/api/v1/messages \
-H "Content-Type: application/json" \
-H "X-API-Key: $FAXXING_API_KEY" \
-d '{
"to_number": "+14155550123",
"display_name": "Acme Co",
"media_url": "https://example.com/contract.pdf",
"campaign_id": "msa-q2"
}'Response ยท 202
{
"id": 1287,
"status": "queued",
"to_number": "+14155550123",
"created_at": "2026-05-13T10:24:00.123Z"
}| Field | Type | Notes |
|---|---|---|
| to_number | string ยท required | E.164 phone number. |
| media_url | string | Public URL to a PDF. Required if html is omitted. |
| html | string | Raw HTML โ we render to PDF via Gotenberg. |
| display_name | string | Caller ID name shown on the recipient's machine. |
| campaign_id | string | Free-form tag for grouping faxes in logs. |
Send from HTML
Skip the PDF pipeline โ POST raw HTML and we convert it via Gotenberg before sending.
curl -X POST https://api.faxxing.com/api/v1/messages \
-H "Content-Type: application/json" \
-H "X-API-Key: $FAXXING_API_KEY" \
-d '{
"to_number": "+14155550123",
"html": "<h1>Hello</h1><p>This is a fax rendered from HTML.</p>"
}'HTML and media_url are XOR โ provide exactly one.
Inbound faxes
Every tenant gets a dedicated inbound number. When someone faxes it, we:
- Download the PDF from the carrier.
- Email it to your forwarding address as an attachment.
- Fire a
fax.receivedwebhook so you can wire it into your CRM.
Rate limits
Each API key is limited to 100 requests / minute. Hitting the limit returns 429 Too Many Requests with a Retry-After header. Need more? Email egm.ventures@icloud.com.
// End of docs ยท still have questions? โ Book a call