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

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.

Additional resources