Programmable Fax Migration Guide to Upland InterFAX from Twilio
On December 17, 2021, Twilio will be sunsetting support for the Twilio Programmable Fax offering. For users with continuing fax needs, Twilio has identified Upland InterFAX as an alternative partner solution to help ease the burden of transitioning your workflows. This guide contains details on how to migrate your workflows, and covers the following topics:
- Prerequisite: Signup for InterFAX
- Send a fax via the InterFAX REST API
- Testing with InterFAX
- Receive a fax via InterFAX
- Phone numbers
- InterFAX pricing
Prerequisite: Signup for InterFAX
Before sending and receiving faxes via InterFAX, users will need to create an InterFAX account. More information can be found in the InterFax guide Registering and using a developer account.
Send a fax via the InterFAX REST API
The InterFAX REST API is similar to Twilio’s, but uses slightly different nomenclature.
An HTTP POST request to the /outbound/faxes
endpoint is the foundation for sending a transmission. Like Twilio, a few parameters are required:
Twilio parameter | Upland InterFAX equivalent | Notes |
To | faxNumber | The recipient or destination Fax number. |
mediaURL | reference | Internal ID to a document. This parameter can be obtained by status query, but is not included in the transmitted fax message. |
Here’s an example cURL script:
curl "https://rest.interfax.net/outbound/faxes?faxNumber=0012129876543" ^
-u username:password ^
--data-binary "@dailyrates.pdf" ^
-H "Content-Type: application/pdf"
InterFAX also offers optional API parameters for timing your fax delivery, customizing the page header, and more. Additionally, InterFAX allows you to submit content via a number of methods, including specifying a previously uploaded doc, using an external URL, or inserting a document as inline content in your API request.
For full details, see InterFAX’s API documentation topic Send a fax.
Notice: Like Twilio, InterFAX offers helper libraries in multiple languages. For full details, see the InterFAX guide Installing and using InterFAX from your environment.
Send multiple identical faxes
InterFAX allows you to send multiple faxes with one API call, by sending an HTTP POST to the /outbound/batches
endpoint. The only parameter change required is to replace faxNumber with list
, and include one of the following:
- The id of a previously-uploaded address book.
- A JSON-formatted or XML-formatted array of pairs of fax number and contact name values.
For more information see InterFAX’s API documentation topic Send batch.
InterFAX’s response
If your POST request to send a fax is successful, a 201 Created
status is returned, along with the URI of the newly-created fax resource in the HTTP Location header. Here’s an example:
Location: https://rest.interfax.net/outbound/faxes/854759652
Testing with InterFAX
InterFax’s simulator allows users to test their workflows before deploying to production. For full details, see the InterFAX Developer’s Guide topic InterFAX Simulator.
Receive a fax via InterFAX
InterFAX allows users to receive faxes via a number of methods, including API requests, email, and a phone number & webhook. For full details, see the InterFAX Developer’s Guide topic Using InterFAX to receive faxes.
Inbound fax webhook
Like Twilio, InterFAX can receive faxes with inbound phone numbers, and ping your user-defined webhook URL when a fax is received. Once this is set up, the InterFAX system will call back your web app by HTTP POST or by XML Web Service and provide the following structure:
Parameter Name | Parameter Type | Description |
TransactionIDType | String | The type of message. Currently sends out static ‘Inbound’. |
TransactionID | Integer | The ID of this transaction. |
PhoneNumber | String | The Phone number at which this fax was received. |
MessageType | Integer | The type of message. Currently sends out static ‘1’. |
MessageSize | Integer | The size of the inbound fax image (in bytes). |
RemoteCSID | String | The CSID of the sender. |
Pages | Integer | The number of pages received in this fax. |
Status | Integer | Status of the fax. InterFAX status code reference |
RecordingDuration | Integer | The time (in seconds) that it took to receive the fax. |
ReceiveTime | DateTime | Time and date the fax was received in GMT – m/d/yyyy h:mm:ss tt (POST) or ISO-8601 compliant (Web service). |
CallerID | String | The caller ID of the sender. |
Once your application has received notification that a new fax has arrived, it needs to collect the fax image from InterFAX’s servers using the API of your choice.
If you iterate over Twilio’s JSON response today, you will likely need to change your code to accommodate InterFAX’s response.
A lot of similar data is included in InterFAX’s response, along with some new parameters that relate to InterFAX specific features. Please review the JSON response carefully to make sure your application can handle the payload.
Phone numbers
InterFAX includes a distinct fax number which becomes your number to use as long as you are subscribed to the service. In certain localities, they may be able to port in an existing Twilio phone number.
- For further information or direct queries relating to porting in fax numbers to be used with InterFAX, please contact InterFAX support.
- For information about migrating an existing Twilio number, see Port away from Twilio.
InterFAX pricing
InterFAX pricing is separated for sending and receiving faxes, and varies depending on when in the month your usage starts. For details pricing information on using InterFAX world wide, please contact us.