Send and receive faxes programmatically with Sinch Fax API. Use when building fax workflows, fax-to-email delivery, sending PDFs by fax, checking fax status, managing fax services, configuring cover pages, receiving fax webhooks, or integrating fax into healthcare, legal, or financial applications.
From sinch-claude-pluginnpx claudepluginhub sinch/sinch-plugins --plugin sinch-claude-pluginThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
The Sinch Fax API lets you send and receive faxes programmatically. It supports multiple file formats, webhooks for incoming faxes, fax-to-email delivery, and automatic retries. Used for healthcare, legal, financial, and government applications where fax remains a required communication channel.
Auth: HTTP Basic (keyId:keySecret) or OAuth2 bearer token. All examples use Basic auth. See sinch-authentication for setup.
Before generating code, gather from the user: approach (SDK or direct API), language (Node.js, Python, Java, .NET, curl), and use case (sending, receiving, fax-to-email, or managing services). Do not assume defaults.
When the user chooses SDK, fetch the relevant API reference docs linked in Links for accurate method signatures. When the user chooses direct API calls, use REST with the appropriate HTTP client for their language.
| Language | Package | Install |
|---|---|---|
| Node.js | @sinch/sdk-core (preview — not recommended for production) | npm install @sinch/sdk-core |
| Python | sinch | pip install sinch |
| Java | com.sinch.sdk:sinch-sdk-java | Maven dependency |
| .NET | Sinch | dotnet add package Sinch |
curl (replace {projectId} with your project ID from the Sinch dashboard):
curl -X POST \
'https://fax.api.sinch.com/v3/projects/{projectId}/faxes' \
-H 'Content-Type: application/json' \
-u YOUR_key_id:YOUR_key_secret \
-d '{
"to": "+12025550134",
"contentUrl": "https://example.com/document.pdf",
"callbackUrl": "https://yourserver.com/fax-callback"
}'
Node.js SDK: See Send a Fax with Node.js.
Test number: Send to +19898989898 to emulate a real fax without charges (always suggest this for integration testing).
Fax Services — Logical containers for fax configuration. Associate numbers, set defaults, and manage routing.
Fax Numbers — Phone numbers provisioned for fax. Must be configured in your Sinch dashboard.
Faxes — Individual fax transmissions (inbound or outbound). Each has a unique ID, status, and metadata.
Fax statuses — QUEUED → IN_PROGRESS → COMPLETED or FAILURE. Error details in errorType and errorMessage fields.
Supported formats — PDF (most reliable), DOC, DOCX, TIF/TIFF, JPG, PNG, TXT, HTML.
Webhooks/Callbacks — HTTP POST notifications for fax events. Default content type is multipart/form-data (fax content as attachment). Set callbackUrlContentType: "application/json" for JSON callbacks.
Cover Pages — Customizable cover pages per service. Attach via coverPageId and coverPageData on send.
Fax-to-Email — Incoming faxes auto-forwarded to email addresses.
Retries — Auto-retry on failure. Default set per fax service; maximum: 5.
Retention — Fax logs and media retained for 13 months. Use DELETE /faxes/{id}/file to remove earlier.
Three ways to deliver content: contentUrl for URLs (recommended — supports basic auth), multipart/form-data for local files, or contentBase64 for in-memory bytes. contentUrl can be a single URL or an array of URLs to compose multi-document faxes.
For HTTPS URLs, ensure your SSL certificate (including intermediate certs) is valid and up-to-date. You can optionally specify from to set the sender number.
multipart/form-data for local files, JSON with contentUrl for URLs.callbackUrlContentType (see Key Concepts). Check direction === 'INBOUND' on the fax object. See Receive a Fax with Node.js.GET /faxes/{id}GET /faxes/{id}/file.pdf (.pdf suffix required)DELETE /faxes/{id}/file (removes stored content before 13-month expiry)POST/GET/DELETE /services/{id}/coverPages — see Services referenceGET /faxes/{id} — look at status, errorType (DOCUMENT_CONVERSION_ERROR, CALL_ERROR, FAX_ERROR, FATAL_ERROR, GENERAL_ERROR), and errorMessagecontentUrl was used with HTTPS, verify the SSL certificate (including intermediate certs) is validcallbackUrl for status tracking — fax delivery is async. Prefer callbacks over polling.DELETE /faxes/{id}/file to remove earlier, or download and archive if longer retention is needed.resolution: "SUPERFINE" (400 dpi) for faxes with small text or detailed images; default FINE (200 dpi) works for most cases.