Telnyx fax alternative

Telnyx fax alternative

mintfax is a developer-first fax service for teams evaluating Telnyx Programmable Fax. Telnyx runs a broad CPaaS across fax, SMS, voice, verification, and numbers. mintfax is outbound-only. On the send path, mintfax accepts idempotency keys, retries failed outbound faxes automatically, offers a self-serve BAA, returns a stable error taxonomy split between the API and carrier layers, and includes a nine-scenario sandbox with parity to live.

What Telnyx Programmable Fax does well

Telnyx Programmable Fax is a long-running developer product at developers.telnyx.com/docs/programmable-fax. Telnyx runs a private global IP network for fax transport with T.38 error correction on by default, and exposes per-fax carrier controls: a T.38 vs G.711 toggle, monochrome, a black-threshold integer, and a five-value quality ladder. Outbound is priced verbatim at “$0.007 per page + SIP Trunking usage for transmission”. Webhooks are signed with Ed25519. Programmable Fax also supports inbound fax and sits inside the wider Telnyx CPaaS.

Feature comparison

DimensionTelnyx Programmable Faxmintfax
API styleREST/JSONREST/JSON
Base URLhttps://api.telnyx.com/v2https://api.mintfax.com/v1
AuthBearer token (V2 API key from Mission Control)Bearer token; environment inferred from key prefix
Environment scopingV2 API key generated in Mission Control Portalmfx_test_, mfx_live_, mfx_acct_
Prerequisites to sendAccount + phone number + Fax Application + V2 keyAccount + sandbox API key
Per-page price$0.007/page + SIP trunking usage$0.060 standard; $0.048 at 100k+/mo; $0.036 at 1M+/mo
Phone number rental$1/mo per US local number (a number is required to send)Not required; mintfax assigns origination
BAASales-gated; public guidance frames services under conduit exceptionFree, self-serve click-through in the dashboard; separate DPA
Zero-footprint / PHI deletionNot documented as a product toggleOpt-in zero-footprint mode; 30-day content retention default (7-365)
Webhook signingEd25519, header telnyx-signature-ed25519, per-account public keyHMAC-SHA256 per Standard Webhooks; per-endpoint whsec_ secret
Idempotency on sendNot documentedIdempotency-Key header; 24h expiry; 409 on reuse
Auto send retriesNone; customer implements1m / 3m / 5m / 5m, default 3 attempts, per-fax max_attempts 1-5
Webhook retriesAt least one retry per URL, then failover URL; 2s response timeout3 retries at 10s / 60s / 300s, then drop
Error model on send14-code flat failure_reason on the fax.failed payload17-code API taxonomy + 10-code carrier taxonomy + optional error_subcode
Request tracingNot documentedX-Request-Id: req_<ULID> on every response; echoed as request_id
SandboxNo sandbox or test-mode documentedNine magic numbers covering nine scenarios; parity with live
Per-fax carrier controlsT.38 toggle, monochrome, black threshold, quality ladderNot exposed
File-upload pathMultipart (contents, up to 20 MB) or URL fetch (media_url, 50 MB)Multipart file upload, 10 MB
File formatsPDFPDF, DOCX, XLSX, JPG, PNG, TIFF, HTML, plain text
Inbound / receiveYes (Fax Application concept for inbound routing)No (outbound only in v1)
Cancel a queued faxPOST /v2/faxes/{id}/actions/cancelNo cancel endpoint
CategoryFull CPaaSFax-only

Where mintfax leads

Idempotency on send

Telnyx’s Programmable Fax documentation returns no reference to Idempotency-Key, idempotent, or an equivalent replay-safety token across the product index, the get-started guide, the send-a-fax API reference, and the receiving-webhooks page. mintfax honours Idempotency-Key on POST /faxes. Keys expire after 24 hours. A reused key with a different body returns 409 idempotency_key_reuse; a reused key while the original is running returns 409 idempotency_key_in_progress. Replays carry Idempotent-Replayed: true. Omit the header and the response includes an X-Idempotency-Key: not provided; recommended header.

Built-in send retries

Telnyx’s fax API error list states verbatim: “Retries for outbound faxes, which may result in an error must be configured on the client application; Telnyx does not automatically retry faxes with errors.” Because Telnyx does not retry, fax.failed fires on every failed attempt. mintfax retries with backoff at 1m, 3m, 5m, 5m; the default is 3 attempts and each fax can set max_attempts in the range 1 to 5. mintfax fires fax.failed once, after retries are exhausted.

Self-serve BAA path

Telnyx’s public HIPAA guidance states verbatim: “In general, Telnyx’s services fall within this conduit exception under HIPAA, and therefore there is no need for Telnyx to sign a BAA”, and directs follow-up questions to [email protected]. Signing a Telnyx BAA is a sales-side conversation. On mintfax, BAA and DPA are separate self-serve click-through documents in the dashboard, at every tier, each with a durable evidence record and an immediately downloadable executed PDF. Optional zero-footprint mode scrubs PHI after the fax is delivered or fails. Content retention defaults to 30 days (configurable 7-365). Details on /compliance.

Structured errors on the send call

Telnyx exposes 14 failure_reason strings in one flat namespace, mixing submission validation (file_size_limit_exceeded, file_format_invalid), carrier events (receiver_no_response, receiver_unallocated_number), and infrastructure failures (fax_signaling_error, service_unavailable). The value arrives inside a nested data.payload envelope on the fax.failed webhook. mintfax splits the taxonomy: a 17-code stable API taxonomy for request-time errors, and a separate 10-code carrier taxonomy on the fax record with an optional error_subcode. Carrier identity is never exposed. Every response carries X-Request-Id: req_<ULID>, echoed as request_id in error envelopes.

Sandbox realism

The Telnyx Programmable Fax get-started guide lists four prerequisites before the first send: set up a Telnyx account, obtain a phone number, create a Programmable Fax Application, and generate a V2 API key. The guide points readers at the production URL for the first call. mintfax provides nine sandbox magic numbers covering nine scenarios (Delivered, Busy, NoAnswer, DelayedDelivery, LineQualityFailure, InsufficientBalance, DeliveredMultiPage, InvalidNumber, ValidationFailure). Sandbox and live use the same API contract; the three permitted differences are that sandbox top-ups are simulated, sandbox faxes never reach the PSTN, and live requires a first credit purchase to activate.

First-fax path: no number, no Fax Application

Telnyx requires a customer to create an account, buy a US local number (“start at $1 and are $1/mo thereafter”), create a Programmable Fax Application in Mission Control, and generate a V2 API key before calling POST /v2/faxes. The send request itself requires connection_id and from. On mintfax, you register the account, verify with a 6-digit code, and send with the sandbox key. No number to buy, no Fax Application concept, no connection_id, and no per-fax from (mintfax assigns the originating number).

When mintfax is not the right call

  • Inbound fax. Telnyx supports receive (Fax Application concept, fax-to-email). mintfax v1 is outbound only.
  • One CPaaS account across channels. Telnyx runs SMS, voice, verification, RCS, and numbers alongside the Fax API. mintfax is fax-only.
  • Granular per-fax carrier controls. Telnyx exposes T.38 vs G.711, monochrome, black threshold, and a quality ladder. mintfax does not.
  • Files above 10 MB. Telnyx’s multipart limit is 20 MB and its URL-fetch limit is 50 MB. mintfax caps uploads at 10 MB.
  • A named certification badge as a procurement gate. mintfax does not hold SOC 2 Type II, HITRUST, PCI DSS Level 1, ISO 27001, or FedRAMP.

Idempotency keys, automatic send retries, signed webhooks, self-serve BAA, and the sandbox matrix are available at every mintfax /pricing tier. Migrating from Telnyx? See the migration guide. More comparisons at /compare.

Try it

START HERE

Send your first sandbox fax in 60 seconds.

Point your coding agent at the OpenAPI spec. Sandbox open with a real API. Magic test numbers for every failure mode. No credit card.

FIRST FAX60s
SPECOpenAPI 3.1
SANDBOXFree
WEBHOOKSSigned
ERRORSDocumented