SharePoint Fax for developers
SharePoint Fax gives your systems a small REST API, signed notices (webhooks) and a Power Automate connector. Together they let an EHR, a line-of-business app, an integration engine or a no-code flow send faxes from your workspace numbers, follow them to delivery and react when a fax arrives.
SharePoint Fax is a product of 365agents Inc.
What you can do #
Send a fax from one of your workspace numbers, with a PDF you upload or a PDF already in SharePoint.
Follow it to delivery by reading its status, or by receiving a
fax.deliveredorfax.failednotice.Read received faxes: who sent them, which number and group they arrived on, and where they are in SharePoint.
Hear about events through signed notices to your own HTTPS endpoint, or through the Power Automate trigger When a fax is received.
Documents never leave SharePoint #
Every received fax is archived to your own SharePoint library. Every fax you send through the API is saved to the sending group's SharePoint outbound folder before it goes out.
API answers and notices carry ids, numbers, page counts, the group and a SharePoint link. They never carry document content, file names, extracted text or summaries. To read the document itself, your system uses its own Microsoft Graph or SharePoint access with the siteId, driveId and itemId it was given.
Concepts #
| Concept | What it is |
|---|---|
| Workspace | Your organization in SharePoint Fax. A Fax Admin turns the API on for the whole workspace. |
| API key | A secret (sfx_live_…) that a Fax Admin creates. It carries scopes, groups, optional numbers, an expiry, optional IP ranges and a rate. |
| Scopes | fax.send sends faxes, fax.read reads faxes, events.manage manages notice subscriptions. |
| Group | A team's fax space, with its own SharePoint library (for example "Intake" or "Referrals"). Ids look like grp_…. |
| Number | One of your fax numbers, belonging to a group. You always send from a number id (num_…), never from digits. |
| Fax | One inbound or outbound fax (fax_…), with a status: queued, sending, delivered, failed, cancelled or received. |
| Notice | A signed HTTPS POST that tells you a fax was received, delivered or failed. |
| Endpoint | A URL of yours that a Fax Admin registers to receive notices. |
| Subscription | A notice registration made through the API (sub_…). Power Automate creates and deletes these for you. |
Ids are opaque strings. Don't parse them.
null. In a fax and in a notice, a field whose value is unknown or does not apply is left out of the JSON. For example, a delivered fax has no failure, and an outbound fax has no receivingNumber. Treat a missing field as "unknown".Quickstart #
Send your first fax in five minutes: turn the API on, create a key, list your numbers, send a PDF and check its status. See the Quickstart.
Where to go next #
Authentication: scopes, limits, rotation and revocation.
API reference: every endpoint, with code in curl, JavaScript, Python, C# and PowerShell.
Webhooks: signed notices and how to verify them.
Power Automate: no-code flows with the custom connector.
Errors: every error code and what to do.
Postman: try every call from Postman.
Use cases: what you can build now.
Machine-readable definitions #
OpenAPI 3.1:
GET https://app.sharepointfax.com/api/public/v1/openapi.json(no key needed).Postman collection: sharepoint-fax.postman_collection.json.
Power Automate connector: download it from Administration → API & integrations.
Good to know #
Faxes sent through the API go out with no review step. The key's scopes, groups and numbers are the whole authorization, so keep each key narrow.
Sent and received pages count toward your plan. There is no separate API fee.