For developers

Build on the CopiaFacts API

CopiaFacts has a rich API for integrating your own applications with fax, email, voice and SMS. We've kept the same file-based core since inception, which has kept integrations scalable, redundant and easy to extend.

Over the years we've added hooks for custom clients and a simple scripting language for the cases a text file alone can't handle.

Four ways in

Pick the integration that fits your application.

Every approach reaches the same CopiaFacts engine, so behavior like retries and logging is consistent no matter how a job gets started.

File-Based API

Drop a text file into a folder and CopiaFacts sends a fax, email, SMS or voice message. For e-mail and SMS, an MSMQ interface is also available. Inbound calls can be screened by a Call Control DLL based on DNIS or ANI.

Read the FS API reference

Print-Based API

If your application can print, it can fax. Printing to the Fax Save driver or the Mail Merge print driver sends a fax with no additional integration work.

Email-to-Fax API

Any application that can send email can send a fax through the CopiaFacts email-to-fax gateway — address it to the fax number, like 6417416000@fax.company.com. Office and PDF attachments convert automatically before transmission.

Explore the gateway

Scripting API

Write complete fax-on-demand and IVR applications, or simple pre/post-processing hooks, with the CopiaFacts scripting language — including database access and calls to external programs.

Read the scripting reference
Real examples

What an actual CopiaFacts job looks like.

These are genuine examples from the CopiaFacts Reference Manual, not simplified toy syntax.

Fax job with cover sheet and variables
$fax_filename  @FFBASE\image\00001154.TIF
$fax_cover     @FFBASE\copia.gct
$fax_header    "Please deliver to @ROUTETO"
$fax_sender    "Dorothy"
$fax_receiver  "Ann Other"
$fax_send_time 17:00:00
$fax_phone     3105553218
$fax_origin    user_request
$fax_user      @FFUSER\fax.usr
$var_def       Comp "Other Company Inc."

A fax job with a cover sheet, a custom header and a variable available to the cover sheet template.

Email job (same engine, same API)
$fax_user       @FFUSER\email.usr
$email_esender "Steve Hersee" <steve@copia.com>
$email_address "Tim Frost" <tim@copia.com>
$email_subject "Demonstration message with attachment"
$email_text    "Attached is a sample PDF file"
$email_attach  "@FFBASE\sample.pdf" "application/pdf"

Fax, email and voice jobs all use the same file-based API — only the commands change.

Scripting: extract email-to-fax data
; loop through MEMOx body-text fields
$set_var MINDEX 1       ; index starts at 1
$repeat
  $set_var CURVAR "MEMO"
  $set_var CURVAR |@MINDEX  ; -> MEMOx
  $set_var MDATA @^CURVAR  ; @^ dereferences it
  $set_var MINDEX +1
$until @MINDEX >= 30

Full script and sample input/output in the reference manual.

Developer FAQ

Questions about integrating with CopiaFacts.

Do I need to install an SDK or client library?

No. The core API is a text file written into a folder, so any language or platform that can write a file can integrate with CopiaFacts.

Is there a REST or HTTP API?

The primary API is file-based, with an MSMQ interface available for email and SMS transactions. If you have a requirement that doesn't fit these approaches, ask us.

How do I know when a fax job finishes?

CopiaFacts moves the job's FS file into a SENT or FAIL folder when it completes, and records the outcome in the daily log file, so your application can monitor either.

Are there working sample applications?

Yes. CopiaFacts ships with sample scripts, and new and updated samples are installed with every release — see the developer resources above.

Talk to Copia

Tell us what you're integrating.

Share your application, platform and which API approach you're considering. Copia can help determine the right integration path.

Talk to Copia

Send a quick question about the API.

Add a few details and a Copia specialist will follow up — no obligation.

For existing-product technical support, use the Support Center. See our Privacy Policy.