Documentation Index
Fetch the complete documentation index at: https://mintfax.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Symptom
Your API request returned an error, a webhook never arrived, or a fax failed after submission. This page maps each symptom to its cause and fix.Root cause taxonomy
- Send failures - the fax could not be delivered (busy line, no answer, invalid number)
- Balance failures - the workspace does not have enough credits
- Authentication and authorization failures - the API key is missing, invalid, or belongs to an inactive workspace
- Webhook delivery failures - mintfax sent an event but your endpoint did not receive it
- Signature verification failures - your code rejected a valid webhook payload
- File format issues - the uploaded document could not be processed
- Idempotency key collisions - a reused key returned a cached response you did not expect
Decision flow
- Check the HTTP status code. If
4xx, the request was rejected before any fax attempt. See the diagnostics matrix below. - If
201, the fax was accepted. Poll the fax status viaGET /v1/faxes/{id}. Afailedstatus with anerror_codefield means a send failure. - Expected a webhook that did not arrive? See Webhook delivery failures.
- Webhook arrived but signature verification failed? See Signature verification failures.
Diagnostics matrix
Error code from the API response body, HTTP status, cause, and fix.| Error code | HTTP | Cause | Fix |
|---|---|---|---|
validation_failed | 422 | A required field is missing or malformed (e.g. to is not valid E.164, or no file attached) | Check the errors object in the response for the failing field. Correct and retry. |
insufficient_balance | 402 | Workspace balance is too low to cover the fax cost | Top up credits via the dashboard or billing API, then retry. See error catalog. |
unauthenticated | 401 | No valid bearer token provided | Add Authorization: Bearer <your-api-key> to the request header. |
api_key_missing | 401 | The Authorization header is absent | Include the header with your sandbox or live API key. |
api_key_invalid | 401 | The API key does not match any active key | Verify the key in the dashboard. Sandbox keys start with fx_test_, live keys with fx_live_. |
workspace_inactive | 403 | The API key belongs to a deactivated workspace | Reactivate the workspace in the dashboard or contact support. |
forbidden | 403 | The authenticated key lacks access to this resource | Confirm you are using the correct workspace’s API key. |
not_found | 404 | The fax ID or resource does not exist in this workspace | Verify the ID. Resources are scoped to the workspace that created them. |
fax_not_terminal | 409 | You tried to delete or resend a fax still in progress | Wait until the fax reaches delivered or failed, then retry. |
fax_data_purged | 422 | The fax document has been purged per retention policy | Submit a new fax with the original document. Purged data cannot be recovered. |
rate_limit_exceeded | 429 | Too many requests in a short window | Back off and retry after the Retry-After header value. |
internal_server_error | 500 | Unexpected error on the mintfax side | Retry with an idempotency key. If it persists, contact support with the request ID. |
Send failures
These show up as afailed fax status with an error_code on the fax object. The fax was accepted (HTTP 201), but the carrier could not deliver it.
Busy line. The receiving machine was occupied. mintfax retries automatically up to the configured limit. Once retries are exhausted, the fax fails. Resend manually via POST /v1/faxes/{id}/resend after the fax reaches a terminal state. Simulate with sandbox magic number +15005550002.
No answer. The receiving number rang without pickup, typically because it is a voice line or the machine is off. Confirm the number with the recipient. Simulate with +15005550003 in the sandbox.
Permanent failure. The carrier reported an unrecoverable error (e.g. disconnected number). Verify the receiving number before resending. Simulate with +15005550005.
Webhook delivery failures
If your endpoint did not receive an expected event, work through these checks in order:- Confirm the URL registered via
POST /v1/webhook-endpointsis correct and publicly reachable. - mintfax treats any non-2xx response as a failure and retries with exponential backoff. Check your server logs for 4xx or 5xx responses.
- Verify your firewall allows inbound HTTPS from mintfax’s IP ranges.
- If you configured the endpoint for specific event types only, confirm the event you expect is in the filter list.
- Check recent deliveries in the dashboard. The webhook log shows the response code mintfax received from your endpoint.
Signature verification failures
Every webhook delivery includes a signature header. If your verification code rejects valid payloads, check these:- Wrong signing secret. Each webhook endpoint has its own secret. Verify with the secret for the endpoint that received the delivery.
- Stale secret after rotation. Both old and new secrets are valid during a brief overlap window. Check both during rotation.
- Body mutation. The signature covers the raw request body. If a proxy, load balancer, or framework re-serializes the JSON before your handler runs, the signature will not match. Verify against the raw bytes.
- Clock skew. Replay protection rejects payloads older than five minutes. Synchronize your server clock via NTP.
File format issues
Avalidation_failed error (HTTP 422) when the uploaded document cannot be processed. Common causes:
- The file type is not supported. mintfax accepts PDF, TIFF, and common image formats.
- The file is corrupt or unreadable. Re-export or re-scan the document and retry.
- The file exceeds the 10 MB upload limit. Split large documents into smaller batches.
errors object in the response body names the specific field and reason.
Idempotency key collisions
Reusing anIdempotency-Key header value with a different request body does not send a new fax. mintfax returns the cached response from the original request.
- Same key, same body: mintfax returns the stored response. Safe to retry.
- Same key, different body: mintfax returns the stored response from the first request. The second body is ignored. Generate a new key for each distinct request.
Escalation
Contact support if:internal_server_errorpersists across multiple retries with different idempotency keys- Webhook deliveries keep failing after you have verified the endpoint URL and network configuration
- A fax is stuck in
in_progressfor more than 15 minutes
request_id from the response headers and the fax ID when you write in.