Send a Fax via API
The Telnyx Programmable Fax API lets you send, receive, and manage faxes through a set of easy-to-use HTTP endpoints.
In this guide, you'll learn how to send a fax using the Programmable Fax API in four simple steps.
Step 1: Setting up with Telnyx
Setup a Telnyx account, phone number, and programmable fax application
First, follow our Quickstart guide to create a Telnyx account, phone number, and Fax Application.
Step 2: API authentication
If you already have a Telnyx V2 API Authentication key, skip to Step 3.
- In the Telnyx Mission Control Portal , in the left menu bar navigate to " API Keys ".
- Ensure, API V2 is selected in the horizontal menu bar.
- Click "Create API key"
- Copy the API key and save it somewhere safe.
Step 3: Send a PDF with the programmable fax API using curl
The Telnyx Programmable Fax API supports PDF files. To initiate sending a fax, we need to send the request to the Telnyx Programmable Fax API endpoint https://api.telnyx.com/v2/faxes
.
We need to send additional parameters containing authentication information with the request, so Telnyx knows which account to send the fax from and information about the destination and file being sent.
Header | Description |
media_url | The URL of the PDF used for the fax's media. |
connection_id | The app ID or connection ID to send the fax with. |
to | The fax enabled phone number (in E.164 format), or SIP URI, the fax will be sent to. |
from | The phone number, in E.164 format, the fax will be sent from. |
Authorizaton: Bearer | The prefix to your API V2 key created in Step 2. |
Now that we know what we need to include in our request, we can use a number of different methods to structure and send it. In this example, we are going to use curl
straight from the command line. You can also use a client such as
Postman
to structure your request.
curl -X POST https://api.telnyx.com/v2/faxes \
--data-urlencode "media_url=https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf" \
--data-urlencode "connection_id=1232154810234" \
--data-urlencode "to=+13129457420" \
--data-urlencode "from=+19459457421" \
--header "Authorization: Bearer APIAuthKey_fromPortal"
NoteAfter pasting the above content, Kindly check and remove any new line added
Simply copy the above code into your favorite text editor, paste in your parameters from the table in place of the existing data, and execute the command.
Step 4: Verify HTTP response and receive webhooks
If you have successfully structured your command and the fax has begun sending, the Programmable Fax API will respond with HTTP 202
.
If you do not receive a HTTP 202
response, double-check your request and try again. Explanations of other response codes can be found in our API reference.
Once the request to send the fax has been successfullly received by Telnyx, you should begin receiving a series of webhooks to the URL that you specified in your Fax Application.
The webhooks you should receive are:
fax.queued
fax.media.processed
fax.sending.started
fax.delivered
fax.failed
That's it! Once you've received a fax.delivered
webhook, your fax has been delivered to its destinaion.
Webhook examples
On successful delivery
{
"event_type": "fax.delivered",
"id": "3320554f-6b74-4138-a74b-a1e2ec7eaf8b",
"occurred_at": "2022-01-07T10:01:43.677850Z",
"payload": {
"call_duration_secs": 79,
"connection_id": "1232154810234",
"direction": "outbound",
"fax_id": "c62be5bc-9b13-4b6c-abda-34dd8b541287",
"from": "+19459457421",
"original_media_url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
"page_count": 1,
"status": "delivered",
"to": "+13129457420",
"user_id": "bdaa1f9f-1018-4156-867d-6c4ac9f556eb"
}
}
NoteAfter pasting the above content, Kindly check and remove any new line added
On failed delivery
{
"event_type": "fax.failed",
"id": "d906ecda-db21-428e-9ca0-74dae7e7c144",
"occurred_at": "2022-01-05T22:23:46.888808Z",
"payload": {
"connection_id": "1232154810234",
"direction": "outbound",
"failure_reason": "user_busy",
"fax_id": "f7b303ed-674c-4962-951b-848380510893",
"from": "+19459457421",
"original_media_url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
"status": "failed",
"to": "+13129457420",
"user_id": "417b0cc2-39e0-4ab9-b116-e56543649aa9"
}
}
NoteAfter pasting the above content, Kindly check and remove any new line added
Possible failure reasons
Inspect the failure_reason
field in webhook's payload to debug failed deliveries of your faxes. The possible failure reasons are:
account_disabled
connection_channel_limit_exceeded
destination_invalid
destination_not_in_countries_whitelist
destination_not_in_service_plan
destination_unreachable
fax_signaling_error
invalid_ecm_response_from_receiver
no_outbound_profile
outbound_profile_channel_limit_exceeded
outbound_profile_daily_spend_limit_exceeded
receiver_call_dropped
receiver_communication_error
receiver_decline
receiver_incompatible_destination
receiver_invalid_number_format
receiver_no_answer
receiver_no_response
receiver_recovery_on_timer_expire
receiver_unallocated_number
service_unavailable
user_busy
user_channel_limit_exceeded
Where to next?
Continue to our next tutorial to learn how to receive inbound faxes via API.