SecurelyFax for agents
A JSON API designed for LLM tool calls. Quote → upload → send, with signed webhook receipts for delivery and inbound. No browsers, no PDFs to assemble, no scraping.
Already on Business? Enable agent mode free →
Agent plan
$49.99/mo
Already on Business?
Free
add-on with any Business or HIPAA subscription
Authenticate with a bearer key created at /app/api-keys with scope agent.
POST /api/v1/agent/fax/quote
Authorization: Bearer sk_...
Content-Type: application/json
{"to": "+18005551234", "estimated_pages": 3}
→ 200 OK
{
"quote_id": 42,
"to": "+18005551234",
"estimated_pages": 3,
"cost_cents": 21,
"reserved_balance_cents": 0,
"billing_method": "subscription",
"balance_cents_after": 5000,
"expires_at": "2026-05-25T17:42:00+00:00"
}
POST /api/v1/agent/fax/42/send
Authorization: Bearer sk_...
Idempotency-Key: agent-trace-9f3e
Content-Type: multipart/form-data; boundary=...
file=@invoice.pdf
→ 202 Accepted
{
"id": 8801,
"direction": "outbound",
"status": "sending",
"to_number": "+18005551234",
"page_count": 3,
"cost_cents": 21,
"balance_cents": 5000,
"telnyx_fax_id": "...",
"created_at": "..."
}
POST https://your-app.example.com/securelyfax-webhook
X-SecurelyFax-Timestamp: 1748192520
X-SecurelyFax-Signature: sha256=<hex>
X-SecurelyFax-Event: fax.delivered
Content-Type: application/json
{
"event": "fax.delivered",
"fax_id": 8801,
"direction": "outbound",
"status": "delivered",
"to": "+18005551234",
"pages": 3,
"cost_cents": 21,
"balance_cents": 5000,
"completed_at": "..."
}
Verify with HMAC-SHA256 over {timestamp}.{raw_body} using your webhook signing secret:
import hmac, hashlib
def verify(secret, timestamp, body, signature_header):
expected = hmac.new(
secret.encode(),
f"{timestamp}.".encode() + body,
hashlib.sha256,
).hexdigest()
return hmac.compare_digest(f"sha256={expected}", signature_header)
GET /api/v1/agent/account — balance, plan, DID, webhook URLPOST /api/v1/agent/webhook — register or rotate (body: {"url": "https://…"})DELETE /api/v1/agent/webhookGET /api/v1/agent/fax/{id} — status pollGET /api/v1/agent/fax/{id}/download — 15-min signed S3 URL
Faxes received on your dedicated number fire fax.received with a
15-minute signed PDF URL included in the payload. Agents can pull, OCR, and act in a single
round-trip — no polling.
Spin up in five minutes. Cancel any time.