Skip to main content
WEBHOOK

When it fires

Exactly once, when no further delivery attempt will be made. Two paths reach here:
  1. Retries exhausted. Every retryable attempt up to max_attempts failed.
  2. Terminal error code returned. A code classified as terminal (for example, invalid_number, bad_destination, no_route) was returned by an attempt. Remaining retries are skipped.
The credit hold is released and no charge is recorded.

What your handler should do

  • Branch on error_code to choose the next step. The codes are mintfax-owned and stable across carrier changes - they will not churn under you.
  • error_message is human-readable English, suitable for showing in your dashboard. The agent-actionable contract is error_code.
  • The full attempts[] array is included. Each entry carries its own error_code - useful when you want to see whether the failure was, say, three busy retries vs an immediate invalid_number.
  • fax.failed and fax.delivered are mutually exclusive. The fax will not silently succeed after this event.

Acting on common codes

See Errors for the full code list including codes that return as 422 at submission time rather than as fax.failed.

Authorizations

Authorization
string
header
required

API key as Bearer token. Use an account key (mfx_acct_...) for /account/* endpoints, and an environment key (mfx_test_... for sandbox, mfx_live_... for live) for /environment/*, /faxes, /webhooks, and /events.

Body

application/json

Event delivery to your subscribed webhook endpoint.

Webhook delivery for fax.failed.

id
string
required

Event identifier (evt_-prefixed). Stable across retry attempts.

Example:

"evt_8aZqRm4yT3vK7pNxJ2bH9c"

type
enum<string>
required

Event type. Always fax.failed for this delivery.

Available options:
fax.failed
created
integer
required

Unix epoch seconds when the event was generated.

data
object
required

Response

2XX

Acknowledged. mintfax treats any 2xx response as a successful delivery.

Last modified on July 20, 2026