Full API reference
Updated
Every operation of the Fax for Agents API as static HTML. 146 operations and 147 schemas from the OpenAPI document version 1.3.3, snapshot of 2026-10-30. The base URL is https://api.faxforagents.com/v1. The same document is at /openapi.json.
agents
GET /v1/agentsList agent identitiesPOST /v1/agentsRegister an agent identityGET /v1/agents/{agent_id}Read an agent with its keys and budgetsPATCH /v1/agents/{agent_id}Change an agent; disabling revokes its keysGET /v1/agents/{agent_id}/activityThe agent's audit trailPOST /v1/agents/{agent_id}/keysMint a key for the agent (bounded scopes, secret shown once)
GET /v1/agents
List agent identities
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Agent | yes |
Example
curl https://api.faxforagents.com/v1/agents \
-H "Authorization: Bearer ffa_test_..."
POST /v1/agents
Register an agent identity
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
contact_email | string or null | no | Where decided approvals are mailed. |
name | string | yes | |
policy_ids | array of string | no | |
purpose | string or null | no | Shown to humans, never evaluated. |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
budget_id | string or null | yes | |
budgets | array of object | yes | |
contact_email | string or null | yes | |
created_at | string | yes | |
created_by | string | yes | |
disabled_at | string or null | yes | |
enabled | boolean | yes | |
id | string | yes | |
keys | array of object ApiKey | yes | |
name | string | yes | |
policy_ids | array of string | yes | |
project_id | string or null | yes | |
purpose | string or null | yes | |
status | string | yes | |
updated_at | string | yes |
Example
curl https://api.faxforagents.com/v1/agents \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/agents/{agent_id}
Read an agent with its keys and budgets
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
agent_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
budget_id | string or null | yes | |
budgets | array of object | yes | |
contact_email | string or null | yes | |
created_at | string | yes | |
created_by | string | yes | |
disabled_at | string or null | yes | |
enabled | boolean | yes | |
id | string | yes | |
keys | array of object ApiKey | yes | |
name | string | yes | |
policy_ids | array of string | yes | |
project_id | string or null | yes | |
purpose | string or null | yes | |
status | string | yes | |
updated_at | string | yes |
Example
curl https://api.faxforagents.com/v1/agents/AGENT_ID \
-H "Authorization: Bearer ffa_test_..."
PATCH /v1/agents/{agent_id}
Change an agent; disabling revokes its keys
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
agent_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
contact_email | string or null | no | |
enabled | boolean or null | no | false revokes every key of the agent. |
name | string or null | no | |
policy_ids | array of string or null | no | |
purpose | string or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
budget_id | string or null | yes | |
budgets | array of object | yes | |
contact_email | string or null | yes | |
created_at | string | yes | |
created_by | string | yes | |
disabled_at | string or null | yes | |
enabled | boolean | yes | |
id | string | yes | |
keys | array of object ApiKey | yes | |
name | string | yes | |
policy_ids | array of string | yes | |
project_id | string or null | yes | |
purpose | string or null | yes | |
status | string | yes | |
updated_at | string | yes |
Example
curl https://api.faxforagents.com/v1/agents/AGENT_ID \
-X PATCH \
-H "Authorization: Bearer ffa_test_..."
GET /v1/agents/{agent_id}/activity
The agent's audit trail
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
agent_id | path | string | yes | |
cursor | query | string or null | no | |
limit | query | integer | no | Default 50. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object AgentActivity | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/agents/AGENT_ID/activity \
-H "Authorization: Bearer ffa_test_..."
POST /v1/agents/{agent_id}/keys
Mint a key for the agent (bounded scopes, secret shown once)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
agent_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
environment | string (live, test) | no | |
expires_in_days | integer or null | no | |
label | string | no | |
scopes | array of string or null | no | Omit for the default agent set. Never approval:decide, key:admin, policy:admin, agent:admin. |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
agent_id | string or null | yes | |
created_at | string | yes | |
environment | string (live, test) | yes | |
expires_at | string or null | yes | |
id | string | yes | |
label | string | yes | |
last_used_at | string or null | yes | |
prefix | string | yes | |
project_id | string or null | yes | |
revoked_at | string or null | yes | |
rotated_from_id | string or null | yes | |
scopes | array of string | yes | |
secret | string | yes | Shown once. Store it now; it cannot be read back. |
Example
curl https://api.faxforagents.com/v1/agents/AGENT_ID/keys \
-X POST \
-H "Authorization: Bearer ffa_test_..."
identity
GET /v1/api-keysList API keys (metadata only)POST /v1/api-keysCreate an API key (the secret is shown once)DELETE /v1/api-keys/{key_id}Revoke a keyPOST /v1/api-keys/{key_id}/rotateRotate a key: a new secret, the old one works for 24 more hoursGET /v1/meWho am I
GET /v1/api-keys
List API keys (metadata only)
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object ApiKey | yes |
Example
curl https://api.faxforagents.com/v1/api-keys \
-H "Authorization: Bearer ffa_test_..."
POST /v1/api-keys
Create an API key (the secret is shown once)
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
environment | string (live, test) | no | |
expires_in_days | integer or null | no | |
label | string | yes | |
scopes | array of string or null | no | Omit for the default agent set; '*' for all. |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
agent_id | string or null | yes | |
created_at | string | yes | |
environment | string (live, test) | yes | |
expires_at | string or null | yes | |
id | string | yes | |
label | string | yes | |
last_used_at | string or null | yes | |
prefix | string | yes | |
project_id | string or null | yes | |
revoked_at | string or null | yes | |
rotated_from_id | string or null | yes | |
scopes | array of string | yes | |
secret | string | yes | Shown once. Store it now; it cannot be read back. |
Example
curl https://api.faxforagents.com/v1/api-keys \
-X POST \
-H "Authorization: Bearer ffa_test_..."
DELETE /v1/api-keys/{key_id}
Revoke a key
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
key_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
deleted | boolean | no | |
id | string | yes |
Example
curl https://api.faxforagents.com/v1/api-keys/KEY_ID \
-X DELETE \
-H "Authorization: Bearer ffa_test_..."
POST /v1/api-keys/{key_id}/rotate
Rotate a key: a new secret, the old one works for 24 more hours
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
key_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
agent_id | string or null | yes | |
created_at | string | yes | |
environment | string (live, test) | yes | |
expires_at | string or null | yes | |
id | string | yes | |
label | string | yes | |
last_used_at | string or null | yes | |
prefix | string | yes | |
project_id | string or null | yes | |
revoked_at | string or null | yes | |
rotated_from_id | string or null | yes | |
scopes | array of string | yes | |
secret | string | yes | Shown once. Store it now; it cannot be read back. |
Example
curl https://api.faxforagents.com/v1/api-keys/KEY_ID/rotate \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/me
Who am I
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
actor | string | yes | |
environment | string (live, test) | yes | |
key_id | string | yes | |
key_prefix | string | yes | |
org_id | string | yes | |
project_id | string | yes | |
scopes | array of string | yes |
Example
curl https://api.faxforagents.com/v1/me \
-H "Authorization: Bearer ffa_test_..."
approvals
GET /v1/approval-requestsApproval requests, pending firstPOST /v1/approval-requestsAsk a human to approve a quoted send, or ask for help (grants nothing)GET /v1/approval-requests/{approval_id}Read one requestPOST /v1/approval-requests/{approval_id}/approveApprove the bound quote (a human with approval:decide, never the requester)POST /v1/approval-requests/{approval_id}/rejectReject with a reasonPOST /v1/approvals/{approval_id}/revokeRevoke an approval nobody has used yet
GET /v1/approval-requests
Approval requests, pending first
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
status | query | string or null | no | |
cursor | query | string or null | no | |
limit | query | integer | no | Default 50. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object ApprovalRequest | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/approval-requests \
-H "Authorization: Bearer ffa_test_..."
POST /v1/approval-requests
Ask a human to approve a quoted send, or ask for help (grants nothing)
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
fax_job_id | string or null | no | |
kind | string (send, help) | no | |
message | string or null | no | What the person should know (kind help). Shown as data. |
quote_id | string or null | no | The quote to bind (kind send). |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
bound | object | yes | |
consumed_by_job_id | string or null | yes | |
created_at | string | yes | |
decided_at | string or null | yes | |
decided_by | string or null | yes | |
expires_at | string or null | yes | |
id | string | yes | |
kind | string (send, help) | yes | |
message | string or null | yes | |
notified | boolean or null | no | On creation: whether the organization was mailed. false when the request repeats a pending one or the organization's daily cap of request mails is reached; the request is still shown in the dashboard. |
quote_id | string or null | yes | |
reason | string or null | yes | |
requested_by | string | yes | |
status | string (pending, approved, rejected, revoked, expired) | yes |
Example
curl https://api.faxforagents.com/v1/approval-requests \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/approval-requests/{approval_id}
Read one request
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
approval_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
bound | object | yes | |
consumed_by_job_id | string or null | yes | |
created_at | string | yes | |
decided_at | string or null | yes | |
decided_by | string or null | yes | |
expires_at | string or null | yes | |
id | string | yes | |
kind | string (send, help) | yes | |
message | string or null | yes | |
notified | boolean or null | no | On creation: whether the organization was mailed. false when the request repeats a pending one or the organization's daily cap of request mails is reached; the request is still shown in the dashboard. |
quote_id | string or null | yes | |
reason | string or null | yes | |
requested_by | string | yes | |
status | string (pending, approved, rejected, revoked, expired) | yes |
Example
curl https://api.faxforagents.com/v1/approval-requests/APPROVAL_ID \
-H "Authorization: Bearer ffa_test_..."
POST /v1/approval-requests/{approval_id}/approve
Approve the bound quote (a human with approval:decide, never the requester)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
approval_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
reason | string or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
bound | object | yes | |
consumed_by_job_id | string or null | yes | |
created_at | string | yes | |
decided_at | string or null | yes | |
decided_by | string or null | yes | |
expires_at | string or null | yes | |
id | string | yes | |
kind | string (send, help) | yes | |
message | string or null | yes | |
notified | boolean or null | no | On creation: whether the organization was mailed. false when the request repeats a pending one or the organization's daily cap of request mails is reached; the request is still shown in the dashboard. |
quote_id | string or null | yes | |
reason | string or null | yes | |
requested_by | string | yes | |
status | string (pending, approved, rejected, revoked, expired) | yes |
Example
curl https://api.faxforagents.com/v1/approval-requests/APPROVAL_ID/approve \
-X POST \
-H "Authorization: Bearer ffa_test_..."
POST /v1/approval-requests/{approval_id}/reject
Reject with a reason
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
approval_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
reason | string or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
bound | object | yes | |
consumed_by_job_id | string or null | yes | |
created_at | string | yes | |
decided_at | string or null | yes | |
decided_by | string or null | yes | |
expires_at | string or null | yes | |
id | string | yes | |
kind | string (send, help) | yes | |
message | string or null | yes | |
notified | boolean or null | no | On creation: whether the organization was mailed. false when the request repeats a pending one or the organization's daily cap of request mails is reached; the request is still shown in the dashboard. |
quote_id | string or null | yes | |
reason | string or null | yes | |
requested_by | string | yes | |
status | string (pending, approved, rejected, revoked, expired) | yes |
Example
curl https://api.faxforagents.com/v1/approval-requests/APPROVAL_ID/reject \
-X POST \
-H "Authorization: Bearer ffa_test_..."
POST /v1/approvals/{approval_id}/revoke
Revoke an approval nobody has used yet
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
approval_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
reason | string or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
bound | object | yes | |
consumed_by_job_id | string or null | yes | |
created_at | string | yes | |
decided_at | string or null | yes | |
decided_by | string or null | yes | |
expires_at | string or null | yes | |
id | string | yes | |
kind | string (send, help) | yes | |
message | string or null | yes | |
notified | boolean or null | no | On creation: whether the organization was mailed. false when the request repeats a pending one or the organization's daily cap of request mails is reached; the request is still shown in the dashboard. |
quote_id | string or null | yes | |
reason | string or null | yes | |
requested_by | string | yes | |
status | string (pending, approved, rejected, revoked, expired) | yes |
Example
curl https://api.faxforagents.com/v1/approvals/APPROVAL_ID/revoke \
-X POST \
-H "Authorization: Bearer ffa_test_..."
auth
POST /v1/auth/invitations/{token}/acceptJoin the organization an invitation link names (the signed-in email must match)POST /v1/auth/logoutEnd this sessionPOST /v1/auth/magic-linksSend a sign-in link to an email address (always 202)GET /v1/auth/magic-links/{token}Open a sign-in link: sets the session cookie and redirects to the appGET /v1/auth/meThe signed-in person, their organizations and the CSRF tokenGET /v1/auth/oauth/{provider}/callbackFinish GitHub or Google sign-in (the app forwards its /auth/{provider}/callback here)GET /v1/auth/oauth/{provider}/startBegin GitHub or Google sign-in (redirects to the provider)GET /v1/auth/passkeysYour passkeysPOST /v1/auth/passkeys/login/optionsOptions for navigator.credentials.get() (discoverable, no email needed)POST /v1/auth/passkeys/login/verifySign in with a passkey assertionPOST /v1/auth/passkeys/register/optionsOptions for navigator.credentials.create() (fresh session required)POST /v1/auth/passkeys/register/verifyStore a new passkey after the browser created itDELETE /v1/auth/passkeys/{passkey_id}Remove one of your passkeysGET /v1/auth/providersWhich sign-in methods are availablePOST /v1/auth/reauthProve it is you again (passkey now, or a fresh link by mail) before a sensitive actionDELETE /v1/auth/sessionsSign out everywhere elseGET /v1/auth/sessionsYour live sessionsDELETE /v1/auth/sessions/{session_id}Revoke one of your sessionsPOST /v1/auth/switch-organizationLook at another organization you belong to
POST /v1/auth/invitations/{token}/accept
Join the organization an invitation link names (the signed-in email must match)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
token | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
organization | object OrganizationSummary | yes |
Example
curl https://api.faxforagents.com/v1/auth/invitations/TOKEN/accept \
-X POST \
-H "Authorization: Bearer ffa_test_..."
POST /v1/auth/logout
End this session
Responses
| Status | Meaning |
|---|---|
204 | Successful Response |
Example
curl https://api.faxforagents.com/v1/auth/logout \
-X POST \
-H "Authorization: Bearer ffa_test_..."
POST /v1/auth/magic-links
Send a sign-in link to an email address (always 202)
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
email | string (email) | yes | |
next | string or null | no | An in-app path to open after sign-in. |
Responses
| Status | Meaning |
|---|---|
202 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
message | string | yes | |
sent | boolean | yes |
Example
curl https://api.faxforagents.com/v1/auth/magic-links \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/auth/magic-links/{token}
Open a sign-in link: sets the session cookie and redirects to the app
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
token | path | string | yes |
Responses
| Status | Meaning |
|---|---|
303 | Redirect to the app, signed in or with an error code in the query. |
422 | Validation Error |
Example
curl https://api.faxforagents.com/v1/auth/magic-links/TOKEN \
-H "Authorization: Bearer ffa_test_..."
GET /v1/auth/me
The signed-in person, their organizations and the CSRF token
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
csrf_token | string | yes | |
organization | object OrganizationSummary or null | yes | |
organizations | array of object OrganizationSummary | yes | |
passkeys | integer | yes | |
providers | object Providers | yes | |
session | object SessionInfo | yes | |
user | object UserOut | yes |
Example
curl https://api.faxforagents.com/v1/auth/me \
-H "Authorization: Bearer ffa_test_..."
GET /v1/auth/oauth/{provider}/callback
Finish GitHub or Google sign-in (the app forwards its /auth/{provider}/callback here)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
provider | path | string | yes | |
code | query | string | no | Default "". |
state | query | string | no | Default "". |
error | query | string or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
csrf_token | string | yes | |
organization | object OrganizationSummary or null | yes | |
organizations | array of object OrganizationSummary | yes | |
passkeys | integer | yes | |
providers | object Providers | yes | |
session | object SessionInfo | yes | |
user | object UserOut | yes |
Example
curl https://api.faxforagents.com/v1/auth/oauth/PROVIDER/callback \
-H "Authorization: Bearer ffa_test_..."
GET /v1/auth/oauth/{provider}/start
Begin GitHub or Google sign-in (redirects to the provider)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
provider | path | string | yes | |
next | query | string or null | no |
Responses
| Status | Meaning |
|---|---|
303 | Successful Response |
422 | Validation Error |
Example
curl https://api.faxforagents.com/v1/auth/oauth/PROVIDER/start \
-H "Authorization: Bearer ffa_test_..."
GET /v1/auth/passkeys
Your passkeys
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Passkey | yes |
Example
curl https://api.faxforagents.com/v1/auth/passkeys \
-H "Authorization: Bearer ffa_test_..."
POST /v1/auth/passkeys/login/options
Options for navigator.credentials.get() (discoverable, no email needed)
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Example
curl https://api.faxforagents.com/v1/auth/passkeys/login/options \
-X POST \
-H "Authorization: Bearer ffa_test_..."
POST /v1/auth/passkeys/login/verify
Sign in with a passkey assertion
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
credential | object | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
csrf_token | string | yes | |
organization | object OrganizationSummary or null | yes | |
organizations | array of object OrganizationSummary | yes | |
passkeys | integer | yes | |
providers | object Providers | yes | |
session | object SessionInfo | yes | |
user | object UserOut | yes |
Example
curl https://api.faxforagents.com/v1/auth/passkeys/login/verify \
-X POST \
-H "Authorization: Bearer ffa_test_..."
POST /v1/auth/passkeys/register/options
Options for navigator.credentials.create() (fresh session required)
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Example
curl https://api.faxforagents.com/v1/auth/passkeys/register/options \
-X POST \
-H "Authorization: Bearer ffa_test_..."
POST /v1/auth/passkeys/register/verify
Store a new passkey after the browser created it
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
credential | object | yes | |
label | string or null | no |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
aaguid | string or null | yes | |
backup_eligible | boolean | yes | |
created_at | string | yes | |
id | string | yes | |
label | string or null | yes | |
last_used_at | string or null | yes | |
transports | array of string or null | yes |
Example
curl https://api.faxforagents.com/v1/auth/passkeys/register/verify \
-X POST \
-H "Authorization: Bearer ffa_test_..."
DELETE /v1/auth/passkeys/{passkey_id}
Remove one of your passkeys
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
passkey_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
204 | Successful Response |
422 | Validation Error |
Example
curl https://api.faxforagents.com/v1/auth/passkeys/PASSKEY_ID \
-X DELETE \
-H "Authorization: Bearer ffa_test_..."
GET /v1/auth/providers
Which sign-in methods are available
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
github | boolean | yes | |
google | boolean | yes | |
magic_link | boolean | no | |
passkeys | boolean | no |
Example
curl https://api.faxforagents.com/v1/auth/providers \
-H "Authorization: Bearer ffa_test_..."
POST /v1/auth/reauth
Prove it is you again (passkey now, or a fresh link by mail) before a sensitive action
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
credential | object or null | no | |
method | string (passkey, magic_link) | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
202 | A sign-in link was sent; opening it in this browser refreshes the session. |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
csrf_token | string | yes | |
organization | object OrganizationSummary or null | yes | |
organizations | array of object OrganizationSummary | yes | |
passkeys | integer | yes | |
providers | object Providers | yes | |
session | object SessionInfo | yes | |
user | object UserOut | yes |
Example
curl https://api.faxforagents.com/v1/auth/reauth \
-X POST \
-H "Authorization: Bearer ffa_test_..."
DELETE /v1/auth/sessions
Sign out everywhere else
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
revoked | integer | yes |
Example
curl https://api.faxforagents.com/v1/auth/sessions \
-X DELETE \
-H "Authorization: Bearer ffa_test_..."
GET /v1/auth/sessions
Your live sessions
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object SessionOut | yes |
Example
curl https://api.faxforagents.com/v1/auth/sessions \
-H "Authorization: Bearer ffa_test_..."
DELETE /v1/auth/sessions/{session_id}
Revoke one of your sessions
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
session_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
204 | Successful Response |
422 | Validation Error |
Example
curl https://api.faxforagents.com/v1/auth/sessions/SESSION_ID \
-X DELETE \
-H "Authorization: Bearer ffa_test_..."
POST /v1/auth/switch-organization
Look at another organization you belong to
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
org_id | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
csrf_token | string | yes | |
organization | object OrganizationSummary or null | yes | |
organizations | array of object OrganizationSummary | yes | |
passkeys | integer | yes | |
providers | object Providers | yes | |
session | object SessionInfo | yes | |
user | object UserOut | yes |
Example
curl https://api.faxforagents.com/v1/auth/switch-organization \
-X POST \
-H "Authorization: Bearer ffa_test_..."
billing
GET /v1/auto-topupsAuto top-up settingsPOST /v1/auto-topupsOpt in to auto top-up (threshold, amount, daily cap); the card is saved at the first paymentDELETE /v1/auto-topups/{auto_topup_id}Turn auto top-up offGET /v1/balanceAvailable and held balancePOST /v1/billing-portal-sessionsOpen the Stripe customer portal (cards, invoices, the subscription)GET /v1/billing-settingsBilling settings of the organizationPATCH /v1/billing-settingsChange the billing email or the low-balance thresholdGET /v1/budgetsSpending caps of this environmentPOST /v1/budgetsCreate a daily or monthly cap for the organization, a project or an agentPATCH /v1/budgets/{budget_id}Change a cap's limit or statusGET /v1/invoicesStripe invoices and receipts (hosted links)GET /v1/invoices/{invoice_id}One Stripe invoiceGET /v1/ledgerWallet transactions, newest firstGET /v1/subscriptionsSubscriptions and the workspace entitlementPOST /v1/subscriptions/checkoutOpen a hosted Checkout for the Agent workspace subscriptionGET /v1/topup-sessionsTop-up sessions, newest firstPOST /v1/topup-sessionsOpen a hosted Checkout to fund the live wallet (10 to 1000 USD)GET /v1/topup-sessions/{topup_session_id}Read a top-up sessionGET /v1/usageUsage rollups by day, direction, destination and projectPOST /v1/usage-exportsExport usage as CSV behind a signed downloadGET /v1/usage-exports/{export_id}Read a usage export (fresh link)GET /v1/usage-exports/{export_id}/contentThe CSV behind a signed URL (no API key)
GET /v1/auto-topups
Auto top-up settings
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object AutoTopup | yes |
Example
curl https://api.faxforagents.com/v1/auto-topups \
-H "Authorization: Bearer ffa_test_..."
POST /v1/auto-topups
Opt in to auto top-up (threshold, amount, daily cap); the card is saved at the first payment
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | Whole dollars, 10 to 1000 USD. |
daily_cap_micro | integer | yes | Never more than this per UTC day. |
threshold_micro | integer | yes | Top up when the available balance drops below this. |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
created_at | string | yes | |
daily_cap_micro | integer | yes | |
disabled_at | string or null | yes | |
environment | string (live, test) | yes | |
id | string | yes | |
last_attempt_at | string or null | yes | |
payment_method_saved | boolean | yes | |
setup_session_id | string or null | yes | |
setup_url | string or null | no | Where to save the card while status is pending_setup. |
status | string (pending_setup, active, disabled) | yes | |
threshold_micro | integer | yes | |
updated_at | string | yes |
Example
curl https://api.faxforagents.com/v1/auto-topups \
-X POST \
-H "Authorization: Bearer ffa_test_..."
DELETE /v1/auto-topups/{auto_topup_id}
Turn auto top-up off
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
auto_topup_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
deleted | boolean | no | |
id | string | yes |
Example
curl https://api.faxforagents.com/v1/auto-topups/AUTO_TOPUP_ID \
-X DELETE \
-H "Authorization: Bearer ffa_test_..."
GET /v1/balance
Available and held balance
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
available_micro | integer | yes | |
currency | string | yes | |
environment | string (live, test) | yes | |
held_micro | integer | yes |
Example
curl https://api.faxforagents.com/v1/balance \
-H "Authorization: Bearer ffa_test_..."
POST /v1/billing-portal-sessions
Open the Stripe customer portal (cards, invoices, the subscription)
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
expires_at | string | yes | |
url | string | yes |
Example
curl https://api.faxforagents.com/v1/billing-portal-sessions \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/billing-settings
Billing settings of the organization
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
billing_email | string or null | yes | |
disputed | boolean | yes | |
low_balance_active | boolean | yes | |
low_balance_threshold_micro | integer | yes | |
org_id | string | yes | |
stripe_customer | boolean | yes | |
workspace | boolean | yes |
Example
curl https://api.faxforagents.com/v1/billing-settings \
-H "Authorization: Bearer ffa_test_..."
PATCH /v1/billing-settings
Change the billing email or the low-balance threshold
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
billing_email | string or null | no | |
low_balance_threshold_micro | integer or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
billing_email | string or null | yes | |
disputed | boolean | yes | |
low_balance_active | boolean | yes | |
low_balance_threshold_micro | integer | yes | |
org_id | string | yes | |
stripe_customer | boolean | yes | |
workspace | boolean | yes |
Example
curl https://api.faxforagents.com/v1/billing-settings \
-X PATCH \
-H "Authorization: Bearer ffa_test_..."
GET /v1/budgets
Spending caps of this environment
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Budget | yes |
Example
curl https://api.faxforagents.com/v1/budgets \
-H "Authorization: Bearer ffa_test_..."
POST /v1/budgets
Create a daily or monthly cap for the organization, a project or an agent
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
agent_id | string or null | no | |
limit_micro | integer | yes | |
period | string (daily, monthly) | yes | |
project_id | string or null | no | |
scope | string (organization, project, agent) | no |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
agent_id | string or null | yes | |
created_at | string | yes | |
environment | string (live, test) | yes | |
id | string | yes | |
limit_micro | integer | yes | |
period | string (daily, monthly) | yes | |
project_id | string or null | yes | |
remaining_micro | integer | yes | |
resets_at | string | yes | |
scope | string (organization, project, agent) | yes | |
spent_micro | integer | yes | |
status | string (active, disabled) | yes | |
updated_at | string | yes |
Example
curl https://api.faxforagents.com/v1/budgets \
-X POST \
-H "Authorization: Bearer ffa_test_..."
PATCH /v1/budgets/{budget_id}
Change a cap's limit or status
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
budget_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
limit_micro | integer or null | no | |
status | string (active, disabled) or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
agent_id | string or null | yes | |
created_at | string | yes | |
environment | string (live, test) | yes | |
id | string | yes | |
limit_micro | integer | yes | |
period | string (daily, monthly) | yes | |
project_id | string or null | yes | |
remaining_micro | integer | yes | |
resets_at | string | yes | |
scope | string (organization, project, agent) | yes | |
spent_micro | integer | yes | |
status | string (active, disabled) | yes | |
updated_at | string | yes |
Example
curl https://api.faxforagents.com/v1/budgets/BUDGET_ID \
-X PATCH \
-H "Authorization: Bearer ffa_test_..."
GET /v1/invoices
Stripe invoices and receipts (hosted links)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
cursor | query | string or null | no | |
limit | query | integer | no | Default 20. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Invoice | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/invoices \
-H "Authorization: Bearer ffa_test_..."
GET /v1/invoices/{invoice_id}
One Stripe invoice
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
invoice_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
amount_due_micro | integer | yes | |
amount_paid_micro | integer | yes | |
created_at | string or null | yes | |
currency | string | yes | |
hosted_invoice_url | string or null | yes | |
id | string | yes | |
invoice_pdf | string or null | yes | |
number | string or null | yes | |
status | string or null | yes | |
subscription_id | string or null | yes |
Example
curl https://api.faxforagents.com/v1/invoices/INVOICE_ID \
-H "Authorization: Bearer ffa_test_..."
GET /v1/ledger
Wallet transactions, newest first
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
cursor | query | string or null | no | |
limit | query | integer | no | Default 50. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object LedgerEntry | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/ledger \
-H "Authorization: Bearer ffa_test_..."
GET /v1/subscriptions
Subscriptions and the workspace entitlement
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Subscription | yes | |
next_cursor | string or null | no | |
workspace | boolean | yes |
Example
curl https://api.faxforagents.com/v1/subscriptions \
-H "Authorization: Bearer ffa_test_..."
POST /v1/subscriptions/checkout
Open a hosted Checkout for the Agent workspace subscription
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
product | string | yes | |
stripe_session_id | string | yes | |
url | string | yes |
Example
curl https://api.faxforagents.com/v1/subscriptions/checkout \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/topup-sessions
Top-up sessions, newest first
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
cursor | query | string or null | no | |
limit | query | integer | no | Default 50. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object TopupSession | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/topup-sessions \
-H "Authorization: Bearer ffa_test_..."
POST /v1/topup-sessions
Open a hosted Checkout to fund the live wallet (10 to 1000 USD)
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
amount_usd | integer | yes | Whole US dollars, 10 to 1000 per session. |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
auto_topup_id | string or null | yes | |
completed_at | string or null | yes | |
created_at | string | yes | |
currency | string | yes | |
environment | string (live, test) | yes | |
error | string or null | yes | |
expires_at | string or null | yes | |
id | string | yes | |
kind | string (manual, auto, setup) | yes | |
status | string (open, completed, expired, canceled, failed) | yes | |
stripe_payment_intent_id | string or null | yes | |
stripe_session_id | string or null | yes | |
url | string or null | no | The hosted Checkout page while the session is open. |
Example
curl https://api.faxforagents.com/v1/topup-sessions \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/topup-sessions/{topup_session_id}
Read a top-up session
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
topup_session_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
auto_topup_id | string or null | yes | |
completed_at | string or null | yes | |
created_at | string | yes | |
currency | string | yes | |
environment | string (live, test) | yes | |
error | string or null | yes | |
expires_at | string or null | yes | |
id | string | yes | |
kind | string (manual, auto, setup) | yes | |
status | string (open, completed, expired, canceled, failed) | yes | |
stripe_payment_intent_id | string or null | yes | |
stripe_session_id | string or null | yes | |
url | string or null | no | The hosted Checkout page while the session is open. |
Example
curl https://api.faxforagents.com/v1/topup-sessions/TOPUP_SESSION_ID \
-H "Authorization: Bearer ffa_test_..."
GET /v1/usage
Usage rollups by day, direction, destination and project
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
from | query | string or null | no | |
to | query | string or null | no | |
group_by | query | string | no | Comma-separated subset. Default "day,direction,route,project". |
project_id | query | string or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
currency | string | yes | |
environment | string (live, test) | yes | |
from | string | yes | |
group_by | array of string | yes | |
items | array of object UsageItem | yes | |
to | string | yes | |
totals | object | yes |
Example
curl https://api.faxforagents.com/v1/usage \
-H "Authorization: Bearer ffa_test_..."
POST /v1/usage-exports
Export usage as CSV behind a signed download
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
from | string or null | no | ISO date; default 30 days ago. |
to | string or null | no | ISO date; default today. |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
content_type | string | yes | |
created_at | string | yes | |
environment | string (live, test) | yes | |
expires_at | string | yes | |
id | string | yes | |
params | object | yes | |
row_count | integer | yes | |
status | string (ready, expired) | yes | |
url | string or null | yes |
Example
curl https://api.faxforagents.com/v1/usage-exports \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/usage-exports/{export_id}
Read a usage export (fresh link)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
export_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
content_type | string | yes | |
created_at | string | yes | |
environment | string (live, test) | yes | |
expires_at | string | yes | |
id | string | yes | |
params | object | yes | |
row_count | integer | yes | |
status | string (ready, expired) | yes | |
url | string or null | yes |
Example
curl https://api.faxforagents.com/v1/usage-exports/EXPORT_ID \
-H "Authorization: Bearer ffa_test_..."
GET /v1/usage-exports/{export_id}/content
The CSV behind a signed URL (no API key)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
export_id | path | string | yes | |
exp | query | string or null | no | |
sig | query | string or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Example
curl https://api.faxforagents.com/v1/usage-exports/EXPORT_ID/content \
-H "Authorization: Bearer ffa_test_..."
platform
GET /v1/capabilitiesLimits and features in forceGET /v1/service-statusCustomer-safe availability
GET /v1/capabilities
Limits and features in force
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
approvals | boolean | yes | |
environment | string (live, test) | yes | |
formats | array of string | yes | |
limits | object | yes | |
max_pages | integer | yes | |
max_upload_bytes | integer | yes | |
numbers | boolean | yes | |
price_version | string | yes | |
provider | string | yes | |
rates | object | yes | |
receive | boolean | yes | |
routes | array of string | yes | |
scopes | array of string | yes | |
send | boolean | yes |
Example
curl https://api.faxforagents.com/v1/capabilities \
-H "Authorization: Bearer ffa_test_..."
GET /v1/service-status
Customer-safe availability
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
database | boolean | yes | |
environment | string (live, test) | yes | |
provider | string | yes | |
status | string (ok, degraded) | yes | |
status_page | string or null | no | |
version | string | yes | |
worker_beat_age_s | integer or null | no |
Example
curl https://api.faxforagents.com/v1/service-status \
-H "Authorization: Bearer ffa_test_..."
extractions
GET /v1/classificationsClassifications, newest firstPOST /v1/classificationsClassify a received fax or a document into one of your document types, or abstainGET /v1/classifications/{classification_id}One classificationGET /v1/document-summariesSummaries, newest firstPOST /v1/document-summariesSummarise a received fax or a document; every sentence cites its pagesGET /v1/document-summaries/{summary_id}One summaryGET /v1/extraction-schemasYour extraction schemasPOST /v1/extraction-schemasSave a versioned extraction schema (the same name again is the next version)GET /v1/extraction-schemas/{schema_id}One schema versionGET /v1/extractionsExtractions, newest firstPOST /v1/extractionsRead a received fax or a document: OCR per page, then fields against a schemaGET /v1/extractions/{extraction_id}One extraction with its correctionsPOST /v1/extractions/{extraction_id}/correctionsRecord a reviewer's correction of one field (stored beside the extraction, never merged)
GET /v1/classifications
Classifications, newest first
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
inbox_item_id | query | string or null | no | |
document_id | query | string or null | no | |
cursor | query | string or null | no | |
limit | query | integer | no | Default 50. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Extraction | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/classifications \
-H "Authorization: Bearer ffa_test_..."
POST /v1/classifications
Classify a received fax or a document into one of your document types, or abstain
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
abstain_below | number | no | |
document_id | string or null | no | |
document_types | array of string | yes | |
inbox_item_id | string or null | no | |
max_pages | integer or null | no | |
strict | boolean | no | Refuse with page_limit_exceeded when the document has more pages than would be read, instead of reading the first ones and warning. |
strong_model_if_below | number | no |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
confidence | number or null | yes | |
corrections | array of object or null | no | |
created_at | string | yes | |
created_by | string | yes | |
currency | string | yes | |
document_id | string | yes | |
document_pages | integer | yes | The document's page count. Above pages_processed on a completed row means the cap left pages unread; output.truncated and a warning say so. |
environment | string (live, test) | yes | |
error_code | string or null | yes | |
id | string | yes | |
inbox_item_id | string or null | yes | |
kind | string (extract, classify, summarize) | yes | |
models | object | yes | |
options | object | yes | |
output | object or null | yes | |
pages | array of object ExtractionPage | yes | |
pages_escalated | integer | yes | |
pages_processed | integer | yes | |
pages_requested | integer | yes | |
price_micro | integer | yes | |
provider_cost_micro | integer | yes | |
schema | object or null | no | |
schema_id | string or null | yes | |
started_at | string or null | yes | |
status | string (pending, queued, running, completed, failed) | yes |
Example
curl https://api.faxforagents.com/v1/classifications \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/classifications/{classification_id}
One classification
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
classification_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
confidence | number or null | yes | |
corrections | array of object or null | no | |
created_at | string | yes | |
created_by | string | yes | |
currency | string | yes | |
document_id | string | yes | |
document_pages | integer | yes | The document's page count. Above pages_processed on a completed row means the cap left pages unread; output.truncated and a warning say so. |
environment | string (live, test) | yes | |
error_code | string or null | yes | |
id | string | yes | |
inbox_item_id | string or null | yes | |
kind | string (extract, classify, summarize) | yes | |
models | object | yes | |
options | object | yes | |
output | object or null | yes | |
pages | array of object ExtractionPage | yes | |
pages_escalated | integer | yes | |
pages_processed | integer | yes | |
pages_requested | integer | yes | |
price_micro | integer | yes | |
provider_cost_micro | integer | yes | |
schema | object or null | no | |
schema_id | string or null | yes | |
started_at | string or null | yes | |
status | string (pending, queued, running, completed, failed) | yes |
Example
curl https://api.faxforagents.com/v1/classifications/CLASSIFICATION_ID \
-H "Authorization: Bearer ffa_test_..."
GET /v1/document-summaries
Summaries, newest first
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
inbox_item_id | query | string or null | no | |
document_id | query | string or null | no | |
cursor | query | string or null | no | |
limit | query | integer | no | Default 50. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Extraction | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/document-summaries \
-H "Authorization: Bearer ffa_test_..."
POST /v1/document-summaries
Summarise a received fax or a document; every sentence cites its pages
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
document_id | string or null | no | |
inbox_item_id | string or null | no | |
max_pages | integer or null | no | |
strict | boolean | no | Refuse with page_limit_exceeded when the document has more pages than would be read, instead of reading the first ones and warning. |
strong_model_if_below | number | no |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
confidence | number or null | yes | |
corrections | array of object or null | no | |
created_at | string | yes | |
created_by | string | yes | |
currency | string | yes | |
document_id | string | yes | |
document_pages | integer | yes | The document's page count. Above pages_processed on a completed row means the cap left pages unread; output.truncated and a warning say so. |
environment | string (live, test) | yes | |
error_code | string or null | yes | |
id | string | yes | |
inbox_item_id | string or null | yes | |
kind | string (extract, classify, summarize) | yes | |
models | object | yes | |
options | object | yes | |
output | object or null | yes | |
pages | array of object ExtractionPage | yes | |
pages_escalated | integer | yes | |
pages_processed | integer | yes | |
pages_requested | integer | yes | |
price_micro | integer | yes | |
provider_cost_micro | integer | yes | |
schema | object or null | no | |
schema_id | string or null | yes | |
started_at | string or null | yes | |
status | string (pending, queued, running, completed, failed) | yes |
Example
curl https://api.faxforagents.com/v1/document-summaries \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/document-summaries/{summary_id}
One summary
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
summary_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
confidence | number or null | yes | |
corrections | array of object or null | no | |
created_at | string | yes | |
created_by | string | yes | |
currency | string | yes | |
document_id | string | yes | |
document_pages | integer | yes | The document's page count. Above pages_processed on a completed row means the cap left pages unread; output.truncated and a warning say so. |
environment | string (live, test) | yes | |
error_code | string or null | yes | |
id | string | yes | |
inbox_item_id | string or null | yes | |
kind | string (extract, classify, summarize) | yes | |
models | object | yes | |
options | object | yes | |
output | object or null | yes | |
pages | array of object ExtractionPage | yes | |
pages_escalated | integer | yes | |
pages_processed | integer | yes | |
pages_requested | integer | yes | |
price_micro | integer | yes | |
provider_cost_micro | integer | yes | |
schema | object or null | no | |
schema_id | string or null | yes | |
started_at | string or null | yes | |
status | string (pending, queued, running, completed, failed) | yes |
Example
curl https://api.faxforagents.com/v1/document-summaries/SUMMARY_ID \
-H "Authorization: Bearer ffa_test_..."
GET /v1/extraction-schemas
Your extraction schemas
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object ExtractionSchema | yes |
Example
curl https://api.faxforagents.com/v1/extraction-schemas \
-H "Authorization: Bearer ffa_test_..."
POST /v1/extraction-schemas
Save a versioned extraction schema (the same name again is the next version)
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
description | string or null | no | |
name | string | yes | |
schema | object | yes |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
created_by | string | yes | |
description | string or null | yes | |
id | string | yes | |
name | string | yes | |
schema | object | yes | |
status | string | yes | |
version | integer | yes |
Example
curl https://api.faxforagents.com/v1/extraction-schemas \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/extraction-schemas/{schema_id}
One schema version
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
schema_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
created_by | string | yes | |
description | string or null | yes | |
id | string | yes | |
name | string | yes | |
schema | object | yes | |
status | string | yes | |
version | integer | yes |
Example
curl https://api.faxforagents.com/v1/extraction-schemas/SCHEMA_ID \
-H "Authorization: Bearer ffa_test_..."
GET /v1/extractions
Extractions, newest first
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
inbox_item_id | query | string or null | no | |
document_id | query | string or null | no | |
cursor | query | string or null | no | |
limit | query | integer | no | Default 50. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Extraction | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/extractions \
-H "Authorization: Bearer ffa_test_..."
POST /v1/extractions
Read a received fax or a document: OCR per page, then fields against a schema
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
document_id | string or null | no | |
inbox_item_id | string or null | no | |
max_pages | integer or null | no | |
schema | object or null | no | A JSON Schema object of string, number, boolean or date fields with descriptions. |
schema_id | string or null | no | |
strict | boolean | no | Refuse with page_limit_exceeded when the document has more pages than would be read, instead of reading the first ones and warning. |
strong_model_if_below | number | no |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
confidence | number or null | yes | |
corrections | array of object or null | no | |
created_at | string | yes | |
created_by | string | yes | |
currency | string | yes | |
document_id | string | yes | |
document_pages | integer | yes | The document's page count. Above pages_processed on a completed row means the cap left pages unread; output.truncated and a warning say so. |
environment | string (live, test) | yes | |
error_code | string or null | yes | |
id | string | yes | |
inbox_item_id | string or null | yes | |
kind | string (extract, classify, summarize) | yes | |
models | object | yes | |
options | object | yes | |
output | object or null | yes | |
pages | array of object ExtractionPage | yes | |
pages_escalated | integer | yes | |
pages_processed | integer | yes | |
pages_requested | integer | yes | |
price_micro | integer | yes | |
provider_cost_micro | integer | yes | |
schema | object or null | no | |
schema_id | string or null | yes | |
started_at | string or null | yes | |
status | string (pending, queued, running, completed, failed) | yes |
Example
curl https://api.faxforagents.com/v1/extractions \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/extractions/{extraction_id}
One extraction with its corrections
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
extraction_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
confidence | number or null | yes | |
corrections | array of object or null | no | |
created_at | string | yes | |
created_by | string | yes | |
currency | string | yes | |
document_id | string | yes | |
document_pages | integer | yes | The document's page count. Above pages_processed on a completed row means the cap left pages unread; output.truncated and a warning say so. |
environment | string (live, test) | yes | |
error_code | string or null | yes | |
id | string | yes | |
inbox_item_id | string or null | yes | |
kind | string (extract, classify, summarize) | yes | |
models | object | yes | |
options | object | yes | |
output | object or null | yes | |
pages | array of object ExtractionPage | yes | |
pages_escalated | integer | yes | |
pages_processed | integer | yes | |
pages_requested | integer | yes | |
price_micro | integer | yes | |
provider_cost_micro | integer | yes | |
schema | object or null | no | |
schema_id | string or null | yes | |
started_at | string or null | yes | |
status | string (pending, queued, running, completed, failed) | yes |
Example
curl https://api.faxforagents.com/v1/extractions/EXTRACTION_ID \
-H "Authorization: Bearer ffa_test_..."
POST /v1/extractions/{extraction_id}/corrections
Record a reviewer's correction of one field (stored beside the extraction, never merged)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
extraction_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
field | string or null | no | |
note | string or null | no | |
value | any | no |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
created_by | string | yes | |
extraction_id | string | yes | |
field | string | yes | |
id | string | yes | |
note | string or null | yes | |
value | any | yes |
Example
curl https://api.faxforagents.com/v1/extractions/EXTRACTION_ID/corrections \
-X POST \
-H "Authorization: Bearer ffa_test_..."
numbers
GET /v1/coverageWhere we send and where we host numbersGET /v1/number-inventoryFax-capable numbers for salePOST /v1/number-ordersBuy a number (the first month is held now, charged on activation)GET /v1/number-orders/{order_id}Read a number orderGET /v1/numbersYour numbersGET /v1/numbers/{number_id}One numberPATCH /v1/numbers/{number_id}Label and inbound route of a numberPOST /v1/numbers/{number_id}/release-requestsRelease a number (confirm with the number itself; 30-day quarantine follows)GET /v1/port-ordersPort orders and port-out requestsPOST /v1/port-ordersRequest a port-in (handled with you)GET /v1/port-orders/{port_id}One port orderPOST /v1/port-out-requestsNote a port-out of one of your numbersPOST /v1/portability-checksCan these numbers port inPOST /v1/sender-verificationsVerify a number of yours as a sender (only numbers you own)
GET /v1/coverage
Where we send and where we host numbers
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
coverage_version | string or null | yes | |
excluded | object | yes | |
generated_at | string or null | yes | |
inbound | object | yes | |
note | string or null | yes | |
orderable_now | array of string | yes | |
outbound | object | yes |
Example
curl https://api.faxforagents.com/v1/coverage \
-H "Authorization: Bearer ffa_test_..."
GET /v1/number-inventory
Fax-capable numbers for sale
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
country | query | string | no | Default "US". |
locality | query | string or null | no | |
type | query | string (local, toll_free) | no | Default "local". |
limit | query | integer | no | Default 10. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
country | string | yes | |
items | array of object InventoryNumber | yes | |
locality | string or null | yes | |
note | string | yes | |
number_type | string | yes | |
recurring_period | string | yes |
Example
curl https://api.faxforagents.com/v1/number-inventory \
-H "Authorization: Bearer ffa_test_..."
POST /v1/number-orders
Buy a number (the first month is held now, charged on activation)
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
e164 | string | yes | A number from GET /v1/number-inventory, E.164. |
inbound_webhook_id | string or null | no | The webhook that receives fax.received for this number (default: all). |
label | string or null | no | |
project_id | string or null | no | Inbound faxes are filed under this project. |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
country | string or null | yes | |
created_at | string | yes | |
currency | string | yes | |
e164 | string or null | yes | |
environment | string (live, test) | yes | |
error | string or null | yes | |
first_month_hold_micro | integer | yes | Held now, captured when the number activates. |
id | string | yes | |
number | object Number or null | yes | |
number_id | string or null | yes | |
number_type | string or null | yes | |
provider | string | yes | |
recurring_charge_micro | integer | yes | Charged every month on the activation day. |
recurring_period | string | yes | |
status | string | yes |
Example
curl https://api.faxforagents.com/v1/number-orders \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/number-orders/{order_id}
Read a number order
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
order_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
country | string or null | yes | |
created_at | string | yes | |
currency | string | yes | |
e164 | string or null | yes | |
environment | string (live, test) | yes | |
error | string or null | yes | |
first_month_hold_micro | integer | yes | Held now, captured when the number activates. |
id | string | yes | |
number | object Number or null | yes | |
number_id | string or null | yes | |
number_type | string or null | yes | |
provider | string | yes | |
recurring_charge_micro | integer | yes | Charged every month on the activation day. |
recurring_period | string | yes | |
status | string | yes |
Example
curl https://api.faxforagents.com/v1/number-orders/ORDER_ID \
-H "Authorization: Bearer ffa_test_..."
GET /v1/numbers
Your numbers
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
include_released | query | boolean | no | Default false. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Number | yes |
Example
curl https://api.faxforagents.com/v1/numbers \
-H "Authorization: Bearer ffa_test_..."
GET /v1/numbers/{number_id}
One number
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
number_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
activated_at | string or null | yes | |
country | string | yes | |
created_at | string | yes | |
currency | string | yes | |
e164 | string | yes | |
environment | string (live, test) | yes | |
id | string | yes | |
inbound_status | string | yes | |
inbound_webhook_id | string or null | yes | |
label | string or null | yes | |
locality | string or null | yes | |
monthly_micro | integer | yes | |
number_type | string | yes | |
order_id | string or null | yes | |
project_id | string or null | yes | |
provider | string | yes | |
released_at | string or null | yes | |
renews_at | string or null | yes | |
status | string | yes |
Example
curl https://api.faxforagents.com/v1/numbers/NUMBER_ID \
-H "Authorization: Bearer ffa_test_..."
PATCH /v1/numbers/{number_id}
Label and inbound route of a number
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
number_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
inbound_webhook_id | string or null | no | |
label | string or null | no | |
project_id | string or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
activated_at | string or null | yes | |
country | string | yes | |
created_at | string | yes | |
currency | string | yes | |
e164 | string | yes | |
environment | string (live, test) | yes | |
id | string | yes | |
inbound_status | string | yes | |
inbound_webhook_id | string or null | yes | |
label | string or null | yes | |
locality | string or null | yes | |
monthly_micro | integer | yes | |
number_type | string | yes | |
order_id | string or null | yes | |
project_id | string or null | yes | |
provider | string | yes | |
released_at | string or null | yes | |
renews_at | string or null | yes | |
status | string | yes |
Example
curl https://api.faxforagents.com/v1/numbers/NUMBER_ID \
-X PATCH \
-H "Authorization: Bearer ffa_test_..."
POST /v1/numbers/{number_id}/release-requests
Release a number (confirm with the number itself; 30-day quarantine follows)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
number_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
confirm | string or null | no | The number itself, typed out, to confirm. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
activated_at | string or null | yes | |
country | string | yes | |
created_at | string | yes | |
currency | string | yes | |
e164 | string | yes | |
environment | string (live, test) | yes | |
id | string | yes | |
inbound_status | string | yes | |
inbound_webhook_id | string or null | yes | |
label | string or null | yes | |
locality | string or null | yes | |
monthly_micro | integer | yes | |
number_type | string | yes | |
order_id | string or null | yes | |
project_id | string or null | yes | |
provider | string | yes | |
released_at | string or null | yes | |
renews_at | string or null | yes | |
status | string | yes |
Example
curl https://api.faxforagents.com/v1/numbers/NUMBER_ID/release-requests \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/port-orders
Port orders and port-out requests
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object PortOrder | yes |
Example
curl https://api.faxforagents.com/v1/port-orders \
-H "Authorization: Bearer ffa_test_..."
POST /v1/port-orders
Request a port-in (handled with you)
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
note | string or null | no | |
numbers | array of string | yes |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
direction | string | yes | |
environment | string (live, test) | yes | |
id | string | yes | |
milestones | array of object | yes | |
numbers | array of string | yes | |
provider | string | yes | |
request | object | yes | |
status | string | yes | |
updated_at | string | yes |
Example
curl https://api.faxforagents.com/v1/port-orders \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/port-orders/{port_id}
One port order
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
port_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
direction | string | yes | |
environment | string (live, test) | yes | |
id | string | yes | |
milestones | array of object | yes | |
numbers | array of string | yes | |
provider | string | yes | |
request | object | yes | |
status | string | yes | |
updated_at | string | yes |
Example
curl https://api.faxforagents.com/v1/port-orders/PORT_ID \
-H "Authorization: Bearer ffa_test_..."
POST /v1/port-out-requests
Note a port-out of one of your numbers
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
note | string or null | no | |
number_id | string | yes |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
direction | string | yes | |
environment | string (live, test) | yes | |
id | string | yes | |
milestones | array of object | yes | |
numbers | array of string | yes | |
provider | string | yes | |
request | object | yes | |
status | string | yes | |
updated_at | string | yes |
Example
curl https://api.faxforagents.com/v1/port-out-requests \
-X POST \
-H "Authorization: Bearer ffa_test_..."
POST /v1/portability-checks
Can these numbers port in
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
numbers | array of string | yes |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
checked_at | string | yes | |
items | array of object | yes |
Example
curl https://api.faxforagents.com/v1/portability-checks \
-X POST \
-H "Authorization: Bearer ffa_test_..."
POST /v1/sender-verifications
Verify a number of yours as a sender (only numbers you own)
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
from | string | yes | A number your organization owns, E.164. |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
environment | string (live, test) | yes | |
from | string | yes | |
id | string | yes | |
method | string | yes | |
number_id | string or null | yes | |
status | string | yes | |
verified_at | string or null | yes |
Example
curl https://api.faxforagents.com/v1/sender-verifications \
-X POST \
-H "Authorization: Bearer ffa_test_..."
documents
GET /v1/documentsList documents, newest firstPOST /v1/documentsCreate an immutable document from an upload or from textDELETE /v1/documents/{document_id}Delete a document (its bytes and previews)GET /v1/documents/{document_id}Read a document's hash, pages and validation stateGET /v1/documents/{document_id}/contentThe PDF bytes behind a signed URL (no API key)GET /v1/documents/{document_id}/downloadA short-lived signed download URLGET /v1/documents/{document_id}/pagesRendered pages with signed preview URLsGET /v1/documents/{document_id}/pages/{page_number}/contentA page PNG behind a signed URL (no API key)GET /v1/documents/{document_id}/validationValidation warningsPOST /v1/uploadsCreate a bounded upload sessionDELETE /v1/uploads/{upload_id}Cancel an incomplete uploadPOST /v1/uploads/{upload_id}/completeFinalize an upload (size and hash checked)PUT /v1/uploads/{upload_id}/contentSend the bytes to a signed upload URL (no API key)
GET /v1/documents
List documents, newest first
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
cursor | query | string or null | no | |
limit | query | integer | no | Default 50. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Document | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/documents \
-H "Authorization: Bearer ffa_test_..."
POST /v1/documents
Create an immutable document from an upload or from text
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
filename | string or null | no | |
html | string or null | no | HTML rendered to PDF by a headless browser with scripts off and no network: inline CSS and data: images print, external resources are counted as blocked. US letter unless @page says otherwise. At most 2 MiB. |
markdown | string or null | no | Markdown (headings, lists, emphasis, code) rendered to PDF. |
text | string or null | no | Plain text rendered to a letter PDF. |
upload_id | string or null | no |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
content_type | string | yes | |
created_at | string | yes | |
deleted_at | string or null | yes | |
environment | string (live, test) | yes | |
expires_at | string or null | yes | |
filename | string | yes | |
id | string | yes | |
page_count | integer | yes | |
render_reason | string or null | yes | |
render_status | string | yes | |
sha256 | string | yes | |
size_bytes | integer | yes | |
source | string | yes | |
status | string | yes | |
upload_id | string or null | yes | |
validation | object | yes |
Example
curl https://api.faxforagents.com/v1/documents \
-X POST \
-H "Authorization: Bearer ffa_test_..."
DELETE /v1/documents/{document_id}
Delete a document (its bytes and previews)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
document_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
deleted | boolean | no | |
id | string | yes |
Example
curl https://api.faxforagents.com/v1/documents/DOCUMENT_ID \
-X DELETE \
-H "Authorization: Bearer ffa_test_..."
GET /v1/documents/{document_id}
Read a document's hash, pages and validation state
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
document_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
content_type | string | yes | |
created_at | string | yes | |
deleted_at | string or null | yes | |
environment | string (live, test) | yes | |
expires_at | string or null | yes | |
filename | string | yes | |
id | string | yes | |
page_count | integer | yes | |
render_reason | string or null | yes | |
render_status | string | yes | |
sha256 | string | yes | |
size_bytes | integer | yes | |
source | string | yes | |
status | string | yes | |
upload_id | string or null | yes | |
validation | object | yes |
Example
curl https://api.faxforagents.com/v1/documents/DOCUMENT_ID \
-H "Authorization: Bearer ffa_test_..."
GET /v1/documents/{document_id}/content
The PDF bytes behind a signed URL (no API key)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
document_id | path | string | yes | |
exp | query | string or null | no | |
sig | query | string or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Example
curl https://api.faxforagents.com/v1/documents/DOCUMENT_ID/content \
-H "Authorization: Bearer ffa_test_..."
GET /v1/documents/{document_id}/download
A short-lived signed download URL
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
document_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
content_type | string | yes | |
expires_at | string | yes | |
url | string | yes |
Example
curl https://api.faxforagents.com/v1/documents/DOCUMENT_ID/download \
-H "Authorization: Bearer ffa_test_..."
GET /v1/documents/{document_id}/pages
Rendered pages with signed preview URLs
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
document_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
document_id | string | yes | |
items | array of object PagePreview | yes | |
page_count | integer | yes | |
render_reason | string or null | yes | |
render_status | string | yes |
Example
curl https://api.faxforagents.com/v1/documents/DOCUMENT_ID/pages \
-H "Authorization: Bearer ffa_test_..."
GET /v1/documents/{document_id}/pages/{page_number}/content
A page PNG behind a signed URL (no API key)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
document_id | path | string | yes | |
page_number | path | integer | yes | |
exp | query | string or null | no | |
sig | query | string or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Example
curl https://api.faxforagents.com/v1/documents/DOCUMENT_ID/pages/PAGE_NUMBER/content \
-H "Authorization: Bearer ffa_test_..."
GET /v1/documents/{document_id}/validation
Validation warnings
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
document_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
page_count | integer | yes | |
render_reason | string or null | yes | |
render_status | string | yes | |
status | string | yes | |
warnings | array of object | yes |
Example
curl https://api.faxforagents.com/v1/documents/DOCUMENT_ID/validation \
-H "Authorization: Bearer ffa_test_..."
POST /v1/uploads
Create a bounded upload session
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
content_type | string | no | application/pdf, image/png, image/jpeg or image/tiff. An image becomes 8-bit gray letter pages, since fax is monochrome. A frame wider than it is tall is rotated. A frame above 300 dpi letter is downsampled. Every TIFF frame is a page. PNG and JPEG take the first frame. The bytes must be the declared type. |
filename | string | yes | |
size_bytes | integer | yes |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
content_type | string | yes | |
created_at | string | yes | |
declared_size | integer | yes | |
expires_at | string | yes | |
filename | string | yes | |
id | string | yes | |
received_size | integer | yes | |
sha256 | string or null | yes | |
status | string | yes | |
upload_method | string or null | no | |
upload_url | string or null | no | |
upload_url_expires_at | string or null | no |
Example
curl https://api.faxforagents.com/v1/uploads \
-X POST \
-H "Authorization: Bearer ffa_test_..."
DELETE /v1/uploads/{upload_id}
Cancel an incomplete upload
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
upload_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
deleted | boolean | no | |
id | string | yes |
Example
curl https://api.faxforagents.com/v1/uploads/UPLOAD_ID \
-X DELETE \
-H "Authorization: Bearer ffa_test_..."
POST /v1/uploads/{upload_id}/complete
Finalize an upload (size and hash checked)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
upload_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
sha256 | string or null | no | Optional: fail if the bytes differ. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
content_type | string | yes | |
created_at | string | yes | |
declared_size | integer | yes | |
expires_at | string | yes | |
filename | string | yes | |
id | string | yes | |
received_size | integer | yes | |
sha256 | string or null | yes | |
status | string | yes | |
upload_method | string or null | no | |
upload_url | string or null | no | |
upload_url_expires_at | string or null | no |
Example
curl https://api.faxforagents.com/v1/uploads/UPLOAD_ID/complete \
-X POST \
-H "Authorization: Bearer ffa_test_..."
PUT /v1/uploads/{upload_id}/content
Send the bytes to a signed upload URL (no API key)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
upload_id | path | string | yes | |
exp | query | string or null | no | |
sig | query | string or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
content_type | string | yes | |
created_at | string | yes | |
declared_size | integer | yes | |
expires_at | string | yes | |
filename | string | yes | |
id | string | yes | |
received_size | integer | yes | |
sha256 | string or null | yes | |
status | string | yes | |
upload_method | string or null | no | |
upload_url | string or null | no | |
upload_url_expires_at | string or null | no |
Example
curl https://api.faxforagents.com/v1/uploads/UPLOAD_ID/content \
-X PUT \
-H "Authorization: Bearer ffa_test_..."
events
GET /v1/eventsEvents for reconciliation, oldest first from the cursor
GET /v1/events
Events for reconciliation, oldest first from the cursor
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
type | query | string or null | no | |
cursor | query | string or null | no | The cursor from the previous page (opaque). |
limit | query | integer | no | Default 100. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Event | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/events \
-H "Authorization: Bearer ffa_test_..."
quotes
POST /v1/fax-quotesPrice an exact document to one destinationGET /v1/fax-quotes/{quote_id}Read a quote
POST /v1/fax-quotes
Price an exact document to one destination
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
cover | object or null | no | Cover sheet fields: to_name, from_name, subject, message. Counts as a page. |
document_id | string | yes | |
from | string or null | no | A number you own; omit for the shared pool. |
to | string | yes | Destination in E.164, for example +12025550123. |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
authorization_required | boolean | yes | |
billable_pages | integer | yes | |
consumed_by_job_id | string or null | yes | |
cover | object or null | yes | |
cover_pages | integer | yes | |
created_at | string | yes | |
currency | string | yes | |
document_id | string | yes | |
document_pages | integer | yes | |
document_sha256 | string | yes | |
environment | string (live, test) | yes | |
expired | boolean | yes | |
expires_at | string | yes | |
from | string or null | no | |
id | string | yes | |
per_page_micro | integer | no | |
price_version | string | yes | |
route | string | yes | |
route_label | string | no | |
to | string | yes | |
warnings | array of object | yes |
Example
curl https://api.faxforagents.com/v1/fax-quotes \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/fax-quotes/{quote_id}
Read a quote
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
quote_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
authorization_required | boolean | yes | |
billable_pages | integer | yes | |
consumed_by_job_id | string or null | yes | |
cover | object or null | yes | |
cover_pages | integer | yes | |
created_at | string | yes | |
currency | string | yes | |
document_id | string | yes | |
document_pages | integer | yes | |
document_sha256 | string | yes | |
environment | string (live, test) | yes | |
expired | boolean | yes | |
expires_at | string | yes | |
from | string or null | no | |
id | string | yes | |
per_page_micro | integer | no | |
price_version | string | yes | |
route | string | yes | |
route_label | string | no | |
to | string | yes | |
warnings | array of object | yes |
Example
curl https://api.faxforagents.com/v1/fax-quotes/QUOTE_ID \
-H "Authorization: Bearer ffa_test_..."
faxes
GET /v1/faxesList fax jobs, newest firstPOST /v1/faxesSend a quoted fax (Idempotency-Key recommended)GET /v1/faxes/{fax_id}Read a fax job (with evidence once delivered)GET /v1/faxes/{fax_id}/attemptsAttempt historyPOST /v1/faxes/{fax_id}/cancelCancel if still possible (best effort once sending)GET /v1/faxes/{fax_id}/eventsOrdered events of one faxGET /v1/faxes/{fax_id}/receiptDelivery evidence as a receipt (JSON)
GET /v1/faxes
List fax jobs, newest first
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
state | query | string or null | no | |
cursor | query | string or null | no | |
limit | query | integer | no | Default 50. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object FaxJob | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/faxes \
-H "Authorization: Bearer ffa_test_..."
POST /v1/faxes
Send a quoted fax (Idempotency-Key recommended)
Request body application/json, required
M9: an approved request authorizes the send; without one a quote that needs authorization is evaluated against the caller's delegated policies.
| Field | Type | Required | Description |
|---|---|---|---|
approval_id | string or null | no | An approved approval request bound to this quote. Consumed by this one send. |
client_reference | string or null | no | |
quote_id | string | yes |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
attempt_count | integer | yes | |
billable_pages | integer | yes | |
cancel_requested_at | string or null | yes | |
captured_micro | integer | yes | |
client_reference | string or null | yes | |
completed_at | string or null | yes | |
cover_pages | integer | yes | |
created_at | string | yes | |
currency | string | yes | |
direction | string | yes | |
document_id | string | yes | |
document_sha256 | string | yes | |
environment | string (live, test) | yes | |
evidence | object or null | no | The carrier's evidence once delivered or partial; null before. |
failure_code | string or null | yes | |
from | string or null | no | |
id | string | yes | |
pages_sent | integer | yes | |
provider | string | yes | |
provider_ref | string or null | yes | |
quote_id | string or null | yes | |
route | string | yes | |
state | string (queued, active, partial, failed, unknown, delivered) | yes | |
to | string | yes | |
transmitted_sha256 | string or null | yes | |
updated_at | string | yes |
Example
curl https://api.faxforagents.com/v1/faxes \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/faxes/{fax_id}
Read a fax job (with evidence once delivered)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
fax_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
attempt_count | integer | yes | |
billable_pages | integer | yes | |
cancel_requested_at | string or null | yes | |
captured_micro | integer | yes | |
client_reference | string or null | yes | |
completed_at | string or null | yes | |
cover_pages | integer | yes | |
created_at | string | yes | |
currency | string | yes | |
direction | string | yes | |
document_id | string | yes | |
document_sha256 | string | yes | |
environment | string (live, test) | yes | |
evidence | object or null | no | The carrier's evidence once delivered or partial; null before. |
failure_code | string or null | yes | |
from | string or null | no | |
id | string | yes | |
pages_sent | integer | yes | |
provider | string | yes | |
provider_ref | string or null | yes | |
quote_id | string or null | yes | |
route | string | yes | |
state | string (queued, active, partial, failed, unknown, delivered) | yes | |
to | string | yes | |
transmitted_sha256 | string or null | yes | |
updated_at | string | yes |
Example
curl https://api.faxforagents.com/v1/faxes/FAX_ID \
-H "Authorization: Bearer ffa_test_..."
GET /v1/faxes/{fax_id}/attempts
Attempt history
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
fax_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Attempt | yes |
Example
curl https://api.faxforagents.com/v1/faxes/FAX_ID/attempts \
-H "Authorization: Bearer ffa_test_..."
POST /v1/faxes/{fax_id}/cancel
Cancel if still possible (best effort once sending)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
fax_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
attempt_count | integer | yes | |
billable_pages | integer | yes | |
cancel_requested_at | string or null | yes | |
captured_micro | integer | yes | |
client_reference | string or null | yes | |
completed_at | string or null | yes | |
cover_pages | integer | yes | |
created_at | string | yes | |
currency | string | yes | |
direction | string | yes | |
document_id | string | yes | |
document_sha256 | string | yes | |
environment | string (live, test) | yes | |
evidence | object or null | no | The carrier's evidence once delivered or partial; null before. |
failure_code | string or null | yes | |
from | string or null | no | |
id | string | yes | |
pages_sent | integer | yes | |
provider | string | yes | |
provider_ref | string or null | yes | |
quote_id | string or null | yes | |
route | string | yes | |
state | string (queued, active, partial, failed, unknown, delivered) | yes | |
to | string | yes | |
transmitted_sha256 | string or null | yes | |
updated_at | string | yes |
Example
curl https://api.faxforagents.com/v1/faxes/FAX_ID/cancel \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/faxes/{fax_id}/events
Ordered events of one fax
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
fax_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Event | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/faxes/FAX_ID/events \
-H "Authorization: Bearer ffa_test_..."
GET /v1/faxes/{fax_id}/receipt
Delivery evidence as a receipt (JSON)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
fax_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
attempts | array of object Attempt | yes | |
billable_pages | integer | yes | |
captured_micro | integer | yes | |
completed_at | string or null | yes | |
created_at | string | yes | |
currency | string | yes | |
document_sha256 | string | yes | |
evidence | object or null | yes | |
failure_code | string or null | yes | |
fax_job_id | string | yes | |
from | string or null | no | |
generated_at | string | yes | |
note | string | yes | |
pages_sent | integer | yes | |
provider | string | yes | |
state | string | yes | |
to | string | yes | |
transmitted_sha256 | string or null | yes |
Example
curl https://api.faxforagents.com/v1/faxes/FAX_ID/receipt \
-H "Authorization: Bearer ffa_test_..."
inbox
GET /v1/inboxReceived faxes, newest first (metadata only)DELETE /v1/inbox/{inbox_id}Delete a received faxGET /v1/inbox/{inbox_id}One received fax with its text as dataPATCH /v1/inbox/{inbox_id}Mark a received fax read or archivedGET /v1/inbox/{inbox_id}/contentThe received PDF behind a signed URL (no API key)GET /v1/inbox/{inbox_id}/downloadA short-lived signed link to the received PDF
GET /v1/inbox
Received faxes, newest first (metadata only)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
cursor | query | string or null | no | |
limit | query | integer | no | Default 50. |
status | query | string (received, read, archived) or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object faxforagents__api__routes__inbox__InboxItem | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/inbox \
-H "Authorization: Bearer ffa_test_..."
DELETE /v1/inbox/{inbox_id}
Delete a received fax
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
inbox_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
deleted | boolean | no | |
id | string | yes |
Example
curl https://api.faxforagents.com/v1/inbox/INBOX_ID \
-X DELETE \
-H "Authorization: Bearer ffa_test_..."
GET /v1/inbox/{inbox_id}
One received fax with its text as data
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
inbox_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | no | |
document | object or null | no | |
document_id | string or null | yes | |
duration_secs | integer or null | no | |
environment | string (live, test) | no | |
expires_at | string or null | no | |
extraction_id | string or null | no | |
from | string or null | no | |
id | string | yes | |
media_status | string | no | |
note | string or null | no | |
number_id | string or null | no | |
pages | integer | yes | |
partial_content | boolean | no | |
project_id | string or null | no | |
provider | string | no | |
read_at | string or null | no | |
received_at | string | yes | |
status | string | yes | |
text | string or null | no | |
to | string | yes |
Example
curl https://api.faxforagents.com/v1/inbox/INBOX_ID \
-H "Authorization: Bearer ffa_test_..."
PATCH /v1/inbox/{inbox_id}
Mark a received fax read or archived
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
inbox_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
status | string (received, read, archived) or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | no | |
document_id | string or null | yes | |
duration_secs | integer or null | no | |
environment | string (live, test) | no | |
expires_at | string or null | no | |
from | string or null | no | |
id | string | yes | |
media_status | string | no | |
note | string or null | no | |
number_id | string or null | no | |
pages | integer | yes | |
partial_content | boolean | no | |
project_id | string or null | no | |
provider | string | no | |
read_at | string or null | no | |
received_at | string | yes | |
status | string | yes | |
to | string | yes |
Example
curl https://api.faxforagents.com/v1/inbox/INBOX_ID \
-X PATCH \
-H "Authorization: Bearer ffa_test_..."
GET /v1/inbox/{inbox_id}/content
The received PDF behind a signed URL (no API key)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
inbox_id | path | string | yes | |
exp | query | string or null | no | |
sig | query | string or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Example
curl https://api.faxforagents.com/v1/inbox/INBOX_ID/content \
-H "Authorization: Bearer ffa_test_..."
GET /v1/inbox/{inbox_id}/download
A short-lived signed link to the received PDF
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
inbox_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
content_type | string | yes | |
expires_at | string | yes | |
url | string | yes |
Example
curl https://api.faxforagents.com/v1/inbox/INBOX_ID/download \
-H "Authorization: Bearer ffa_test_..."
members
GET /v1/invitationsOpen invitationsPOST /v1/invitationsInvite someone by email (a link that works for 7 days)DELETE /v1/invitations/{invitation_id}Withdraw an invitationGET /v1/membersThe organization's membersDELETE /v1/members/{member_id}Remove a member (owner)PATCH /v1/members/{member_id}Change a member's role
GET /v1/invitations
Open invitations
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Invitation | yes |
Example
curl https://api.faxforagents.com/v1/invitations \
-H "Authorization: Bearer ffa_test_..."
POST /v1/invitations
Invite someone by email (a link that works for 7 days)
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
email | string (email) | yes | |
role | string (owner, admin, member, viewer) | no |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
accepted_at | string or null | yes | |
created_at | string | yes | |
email | string | yes | |
expires_at | string | yes | |
id | string | yes | |
invited_by | string | yes | |
role | string (owner, admin, member, viewer) | yes |
Example
curl https://api.faxforagents.com/v1/invitations \
-X POST \
-H "Authorization: Bearer ffa_test_..."
DELETE /v1/invitations/{invitation_id}
Withdraw an invitation
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
invitation_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
204 | Successful Response |
422 | Validation Error |
Example
curl https://api.faxforagents.com/v1/invitations/INVITATION_ID \
-X DELETE \
-H "Authorization: Bearer ffa_test_..."
GET /v1/members
The organization's members
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Member | yes |
Example
curl https://api.faxforagents.com/v1/members \
-H "Authorization: Bearer ffa_test_..."
DELETE /v1/members/{member_id}
Remove a member (owner)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
member_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
204 | Successful Response |
422 | Validation Error |
Example
curl https://api.faxforagents.com/v1/members/MEMBER_ID \
-X DELETE \
-H "Authorization: Bearer ffa_test_..."
PATCH /v1/members/{member_id}
Change a member's role
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
member_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
role | string (owner, admin, member, viewer) or null | no | Required. Optional in the schema so a foreign id is a 404 first. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
email | string | yes | |
id | string | yes | |
name | string or null | yes | |
role | string (owner, admin, member, viewer) | yes | |
user_id | string or null | yes |
Example
curl https://api.faxforagents.com/v1/members/MEMBER_ID \
-X PATCH \
-H "Authorization: Bearer ffa_test_..."
organizations
GET /v1/organizationsThe organizations you belong toGET /v1/organizations/currentThe organization you are looking atPATCH /v1/organizations/currentRename the organizationPOST /v1/organizations/current/deletion-requestsAsk for the organization and its data to be deleted (owner)POST /v1/organizations/current/export-requestsAsk for an export of the organization's data (owner)
GET /v1/organizations
The organizations you belong to
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object OrganizationSummary | yes |
Example
curl https://api.faxforagents.com/v1/organizations \
-H "Authorization: Bearer ffa_test_..."
GET /v1/organizations/current
The organization you are looking at
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
id | string | yes | |
members | integer | yes | |
name | string | yes | |
role | string (owner, admin, member, viewer) or null | yes |
Example
curl https://api.faxforagents.com/v1/organizations/current \
-H "Authorization: Bearer ffa_test_..."
PATCH /v1/organizations/current
Rename the organization
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
id | string | yes | |
members | integer | yes | |
name | string | yes | |
role | string (owner, admin, member, viewer) or null | yes |
Example
curl https://api.faxforagents.com/v1/organizations/current \
-X PATCH \
-H "Authorization: Bearer ffa_test_..."
POST /v1/organizations/current/deletion-requests
Ask for the organization and its data to be deleted (owner)
Responses
| Status | Meaning |
|---|---|
202 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
kind | string (export, deletion) | yes | |
message | string | yes | |
requested | boolean | yes |
Example
curl https://api.faxforagents.com/v1/organizations/current/deletion-requests \
-X POST \
-H "Authorization: Bearer ffa_test_..."
POST /v1/organizations/current/export-requests
Ask for an export of the organization's data (owner)
Responses
| Status | Meaning |
|---|---|
202 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
kind | string (export, deletion) | yes | |
message | string | yes | |
requested | boolean | yes |
Example
curl https://api.faxforagents.com/v1/organizations/current/export-requests \
-X POST \
-H "Authorization: Bearer ffa_test_..."
policies
GET /v1/policiesList the organization's policiesPOST /v1/policiesCreate a delegated policy (version 1)GET /v1/policies/effectiveWhat the calling key may do on its own, and whether a human is needed otherwiseGET /v1/policies/{policy_id}Read a policy (its current version)PATCH /v1/policies/{policy_id}Change a policy: a new immutable versionGET /v1/policies/{policy_id}/versionsEvery version, oldest firstPOST /v1/policy-evaluationsDry run: would the calling key's policies allow this send? Never executes
GET /v1/policies
List the organization's policies
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Policy | yes |
Example
curl https://api.faxforagents.com/v1/policies \
-H "Authorization: Bearer ffa_test_..."
POST /v1/policies
Create a delegated policy (version 1)
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | no | |
name | string | yes | |
purpose | string or null | no | Why this policy exists. Shown, never evaluated. |
rules | object | yes | See the PolicyRules schema in docs/APPROVALS.md. |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
created_by | string | yes | |
current_version_id | string or null | yes | |
enabled | boolean | yes | |
id | string | yes | |
name | string | yes | |
purpose | string or null | yes | |
rules | object | yes | |
updated_at | string | yes | |
version | integer | yes |
Example
curl https://api.faxforagents.com/v1/policies \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/policies/effective
What the calling key may do on its own, and whether a human is needed otherwise
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
actor | string | yes | |
approval_required_without_policy | boolean | yes | |
environment | string (live, test) | yes | |
policies | array of object Policy | yes | |
rules_order | array of string | yes | |
under_policy | boolean | yes |
Example
curl https://api.faxforagents.com/v1/policies/effective \
-H "Authorization: Bearer ffa_test_..."
GET /v1/policies/{policy_id}
Read a policy (its current version)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
policy_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
created_by | string | yes | |
current_version_id | string or null | yes | |
enabled | boolean | yes | |
id | string | yes | |
name | string | yes | |
purpose | string or null | yes | |
rules | object | yes | |
updated_at | string | yes | |
version | integer | yes |
Example
curl https://api.faxforagents.com/v1/policies/POLICY_ID \
-H "Authorization: Bearer ffa_test_..."
PATCH /v1/policies/{policy_id}
Change a policy: a new immutable version
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
policy_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean or null | no | |
name | string or null | no | |
purpose | string or null | no | |
rules | object or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
created_by | string | yes | |
current_version_id | string or null | yes | |
enabled | boolean | yes | |
id | string | yes | |
name | string | yes | |
purpose | string or null | yes | |
rules | object | yes | |
updated_at | string | yes | |
version | integer | yes |
Example
curl https://api.faxforagents.com/v1/policies/POLICY_ID \
-X PATCH \
-H "Authorization: Bearer ffa_test_..."
GET /v1/policies/{policy_id}/versions
Every version, oldest first
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
policy_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object PolicyVersion | yes |
Example
curl https://api.faxforagents.com/v1/policies/POLICY_ID/versions \
-H "Authorization: Bearer ffa_test_..."
POST /v1/policy-evaluations
Dry run: would the calling key's policies allow this send? Never executes
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
document_id | string or null | no | Or plan: this document ... |
from | string or null | no | |
quote_id | string or null | no | Evaluate an existing quote. |
to | string or null | no | ... to this E.164 destination. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
decision | string | yes | |
denials | array of object | yes | |
executed | boolean | no | |
plan | object | yes | |
policy_id | string or null | yes | |
policy_name | string or null | yes | |
policy_version_id | string or null | yes | |
reason | string | yes | |
rule | string or null | yes | |
version | integer or null | yes |
Example
curl https://api.faxforagents.com/v1/policy-evaluations \
-X POST \
-H "Authorization: Bearer ffa_test_..."
sandbox
DELETE /v1/sandbox/dataReset this organization's test dataPOST /v1/sandbox/inbound-faxesCreate a synthetic inbound fax (the same pipeline as a real one)GET /v1/sandbox/scenariosThe scenario catalog and active fixturesPOST /v1/sandbox/scenariosSelect the outcome of the next sends
DELETE /v1/sandbox/data
Reset this organization's test data
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
deleted | object | yes | |
reset | boolean | yes | |
wallet_available_micro | integer | yes |
Example
curl https://api.faxforagents.com/v1/sandbox/data \
-X DELETE \
-H "Authorization: Bearer ffa_test_..."
POST /v1/sandbox/inbound-faxes
Create a synthetic inbound fax (the same pipeline as a real one)
A synthetic PDF goes through ``inbox.service.receive_now``: the private document, the inbox item, the ``fax.received`` event with its download reference, exactly as a carrier delivery (M8).
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
from | string or null | no | |
pages | integer | no | |
partial_content | boolean | no | Rehearse a cut-off transmission. |
to | string | yes |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | no | |
document_id | string or null | yes | |
from | string or null | no | |
id | string | yes | |
note | string or null | no | |
pages | integer | yes | |
received_at | string | yes | |
status | string | yes | |
to | string | yes |
Example
curl https://api.faxforagents.com/v1/sandbox/inbound-faxes \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/sandbox/scenarios
The scenario catalog and active fixtures
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
destinations | array of object | yes | |
fixtures | array of object SandboxFixture | yes | |
scenarios | array of object | yes |
Example
curl https://api.faxforagents.com/v1/sandbox/scenarios \
-H "Authorization: Bearer ffa_test_..."
POST /v1/sandbox/scenarios
Select the outcome of the next sends
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
destination | string or null | no | Apply to one destination; omit for every send. |
scenario | string | yes |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
destination | string or null | yes | |
expires_at | string | yes | |
id | string | yes | |
scenario | string | yes |
Example
curl https://api.faxforagents.com/v1/sandbox/scenarios \
-X POST \
-H "Authorization: Bearer ffa_test_..."
webhooks
GET /v1/webhook-deliveriesDelivery attempts (no payload secrets)POST /v1/webhook-deliveries/{delivery_id}/replayReplay the event with the same event idGET /v1/webhooksList webhooksPOST /v1/webhooksRegister a destination (secret shown once)DELETE /v1/webhooks/{webhook_id}Remove a destinationPATCH /v1/webhooks/{webhook_id}Change url, filters or pausePOST /v1/webhooks/{webhook_id}/rotate-secretNew secret; the old one signs too for 24 hoursPOST /v1/webhooks/{webhook_id}/testSend a signed webhook.test event to this destination
GET /v1/webhook-deliveries
Delivery attempts (no payload secrets)
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
webhook_id | query | string or null | no | |
event_id | query | string or null | no | |
cursor | query | string or null | no | |
limit | query | integer | no | Default 50. |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Delivery | yes | |
next_cursor | string or null | no |
Example
curl https://api.faxforagents.com/v1/webhook-deliveries \
-H "Authorization: Bearer ffa_test_..."
POST /v1/webhook-deliveries/{delivery_id}/replay
Replay the event with the same event id
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
delivery_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
202 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
attempt | integer | yes | |
created_at | string | yes | |
delivered_at | string or null | yes | |
duration_ms | integer or null | yes | |
error | string or null | yes | |
event_id | string | yes | |
event_type | string | yes | |
id | string | yes | |
next_attempt_at | string or null | yes | |
replay_of | string or null | yes | |
response_status | integer or null | yes | |
schedule_s | array of integer | yes | |
status | string | yes | |
webhook_id | string | yes |
Example
curl https://api.faxforagents.com/v1/webhook-deliveries/DELIVERY_ID/replay \
-X POST \
-H "Authorization: Bearer ffa_test_..."
GET /v1/webhooks
List webhooks
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Webhook | yes |
Example
curl https://api.faxforagents.com/v1/webhooks \
-H "Authorization: Bearer ffa_test_..."
POST /v1/webhooks
Register a destination (secret shown once)
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
description | string or null | no | |
event_types | array of string or null | no | Empty or omitted: every event type. |
url | string | yes |
Responses
| Status | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
description | string or null | yes | |
event_types | array of string | yes | |
id | string | yes | |
previous_secret_expires_at | string or null | yes | |
secret | string | yes | whsec_... Shown once. Verify webhook-signature with it. |
status | string | yes | |
updated_at | string | yes | |
url | string | yes |
Example
curl https://api.faxforagents.com/v1/webhooks \
-X POST \
-H "Authorization: Bearer ffa_test_..."
DELETE /v1/webhooks/{webhook_id}
Remove a destination
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
webhook_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
deleted | boolean | no | |
id | string | yes |
Example
curl https://api.faxforagents.com/v1/webhooks/WEBHOOK_ID \
-X DELETE \
-H "Authorization: Bearer ffa_test_..."
PATCH /v1/webhooks/{webhook_id}
Change url, filters or pause
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
webhook_id | path | string | yes |
Request body application/json, required
| Field | Type | Required | Description |
|---|---|---|---|
description | string or null | no | |
event_types | array of string or null | no | |
status | string (active, paused) or null | no | |
url | string or null | no |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
description | string or null | yes | |
event_types | array of string | yes | |
id | string | yes | |
previous_secret_expires_at | string or null | yes | |
status | string | yes | |
updated_at | string | yes | |
url | string | yes |
Example
curl https://api.faxforagents.com/v1/webhooks/WEBHOOK_ID \
-X PATCH \
-H "Authorization: Bearer ffa_test_..."
POST /v1/webhooks/{webhook_id}/rotate-secret
New secret; the old one signs too for 24 hours
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
webhook_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
200 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
description | string or null | yes | |
event_types | array of string | yes | |
id | string | yes | |
previous_secret_expires_at | string or null | yes | |
secret | string | yes | whsec_... Shown once. Verify webhook-signature with it. |
status | string | yes | |
updated_at | string | yes | |
url | string | yes |
Example
curl https://api.faxforagents.com/v1/webhooks/WEBHOOK_ID/rotate-secret \
-X POST \
-H "Authorization: Bearer ffa_test_..."
POST /v1/webhooks/{webhook_id}/test
Send a signed webhook.test event to this destination
Parameters
| Name | In | Type | Required | Notes |
|---|---|---|---|---|
webhook_id | path | string | yes |
Responses
| Status | Meaning |
|---|---|
202 | Successful Response |
422 | Validation Error |
Response fields
| Field | Type | Required | Description |
|---|---|---|---|
correlation_id | string or null | yes | |
created_at | string | yes | |
data | object | yes | |
environment | string (live, test) | yes | |
fax_job_id | string or null | yes | |
id | string | yes | |
org_id | string | yes | |
project_id | string or null | yes | |
resource_id | string | yes | |
resource_type | string | yes | |
schema_version | integer | yes | |
type | string | yes |
Example
curl https://api.faxforagents.com/v1/webhooks/WEBHOOK_ID/test \
-X POST \
-H "Authorization: Bearer ffa_test_..."
Schemas
147 named objects, as the API sends and accepts them.
Accepted
| Field | Type | Required | Description |
|---|---|---|---|
organization | object OrganizationSummary | yes |
Agent
| Field | Type | Required | Description |
|---|---|---|---|
budget_id | string or null | yes | |
budgets | array of object | yes | |
contact_email | string or null | yes | |
created_at | string | yes | |
created_by | string | yes | |
disabled_at | string or null | yes | |
enabled | boolean | yes | |
id | string | yes | |
keys | array of object ApiKey | yes | |
name | string | yes | |
policy_ids | array of string | yes | |
project_id | string or null | yes | |
purpose | string or null | yes | |
status | string | yes | |
updated_at | string | yes |
AgentActivity
| Field | Type | Required | Description |
|---|---|---|---|
action | string | yes | |
actor | string | yes | |
correlation_id | string or null | yes | |
created_at | string | yes | |
data | object | yes | |
id | string | yes | |
resource_id | string or null | yes | |
resource_type | string | yes |
AgentActivityPage
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object AgentActivity | yes | |
next_cursor | string or null | no |
AgentCreate
| Field | Type | Required | Description |
|---|---|---|---|
contact_email | string or null | no | Where decided approvals are mailed. |
name | string | yes | |
policy_ids | array of string | no | |
purpose | string or null | no | Shown to humans, never evaluated. |
AgentKeyCreate
| Field | Type | Required | Description |
|---|---|---|---|
environment | string (live, test) | no | |
expires_in_days | integer or null | no | |
label | string | no | |
scopes | array of string or null | no | Omit for the default agent set. Never approval:decide, key:admin, policy:admin, agent:admin. |
AgentList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Agent | yes |
AgentUpdate
| Field | Type | Required | Description |
|---|---|---|---|
contact_email | string or null | no | |
enabled | boolean or null | no | false revokes every key of the agent. |
name | string or null | no | |
policy_ids | array of string or null | no | |
purpose | string or null | no |
ApiKey
| Field | Type | Required | Description |
|---|---|---|---|
agent_id | string or null | yes | |
created_at | string | yes | |
environment | string (live, test) | yes | |
expires_at | string or null | yes | |
id | string | yes | |
label | string | yes | |
last_used_at | string or null | yes | |
prefix | string | yes | |
project_id | string or null | yes | |
revoked_at | string or null | yes | |
rotated_from_id | string or null | yes | |
scopes | array of string | yes |
ApiKeyCreate
| Field | Type | Required | Description |
|---|---|---|---|
environment | string (live, test) | no | |
expires_in_days | integer or null | no | |
label | string | yes | |
scopes | array of string or null | no | Omit for the default agent set; '*' for all. |
ApiKeyList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object ApiKey | yes |
ApiKeyWithSecret
| Field | Type | Required | Description |
|---|---|---|---|
agent_id | string or null | yes | |
created_at | string | yes | |
environment | string (live, test) | yes | |
expires_at | string or null | yes | |
id | string | yes | |
label | string | yes | |
last_used_at | string or null | yes | |
prefix | string | yes | |
project_id | string or null | yes | |
revoked_at | string or null | yes | |
rotated_from_id | string or null | yes | |
scopes | array of string | yes | |
secret | string | yes | Shown once. Store it now; it cannot be read back. |
ApprovalDecision
| Field | Type | Required | Description |
|---|---|---|---|
reason | string or null | no |
ApprovalRequest
| Field | Type | Required | Description |
|---|---|---|---|
bound | object | yes | |
consumed_by_job_id | string or null | yes | |
created_at | string | yes | |
decided_at | string or null | yes | |
decided_by | string or null | yes | |
expires_at | string or null | yes | |
id | string | yes | |
kind | string (send, help) | yes | |
message | string or null | yes | |
notified | boolean or null | no | On creation: whether the organization was mailed. false when the request repeats a pending one or the organization's daily cap of request mails is reached; the request is still shown in the dashboard. |
quote_id | string or null | yes | |
reason | string or null | yes | |
requested_by | string | yes | |
status | string (pending, approved, rejected, revoked, expired) | yes |
ApprovalRequestCreate
| Field | Type | Required | Description |
|---|---|---|---|
fax_job_id | string or null | no | |
kind | string (send, help) | no | |
message | string or null | no | What the person should know (kind help). Shown as data. |
quote_id | string or null | no | The quote to bind (kind send). |
ApprovalRequestPage
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object ApprovalRequest | yes | |
next_cursor | string or null | no |
Attempt
| Field | Type | Required | Description |
|---|---|---|---|
attempt_number | integer | yes | |
error | string or null | yes | |
evidence | object or null | yes | |
failure_code | string or null | yes | |
fax_job_id | string | yes | |
finished_at | string or null | yes | |
id | string | yes | |
pages_sent | integer | yes | |
provider | string | yes | |
provider_ref | string or null | yes | |
started_at | string | yes | |
status | string | yes |
AttemptPage
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Attempt | yes |
AutoTopup
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
created_at | string | yes | |
daily_cap_micro | integer | yes | |
disabled_at | string or null | yes | |
environment | string (live, test) | yes | |
id | string | yes | |
last_attempt_at | string or null | yes | |
payment_method_saved | boolean | yes | |
setup_session_id | string or null | yes | |
setup_url | string or null | no | Where to save the card while status is pending_setup. |
status | string (pending_setup, active, disabled) | yes | |
threshold_micro | integer | yes | |
updated_at | string | yes |
AutoTopupCreate
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | Whole dollars, 10 to 1000 USD. |
daily_cap_micro | integer | yes | Never more than this per UTC day. |
threshold_micro | integer | yes | Top up when the available balance drops below this. |
AutoTopupList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object AutoTopup | yes |
Balance
| Field | Type | Required | Description |
|---|---|---|---|
available_micro | integer | yes | |
currency | string | yes | |
environment | string (live, test) | yes | |
held_micro | integer | yes |
BillingSettings
| Field | Type | Required | Description |
|---|---|---|---|
billing_email | string or null | yes | |
disputed | boolean | yes | |
low_balance_active | boolean | yes | |
low_balance_threshold_micro | integer | yes | |
org_id | string | yes | |
stripe_customer | boolean | yes | |
workspace | boolean | yes |
BillingSettingsPatch
| Field | Type | Required | Description |
|---|---|---|---|
billing_email | string or null | no | |
low_balance_threshold_micro | integer or null | no |
Budget
| Field | Type | Required | Description |
|---|---|---|---|
agent_id | string or null | yes | |
created_at | string | yes | |
environment | string (live, test) | yes | |
id | string | yes | |
limit_micro | integer | yes | |
period | string (daily, monthly) | yes | |
project_id | string or null | yes | |
remaining_micro | integer | yes | |
resets_at | string | yes | |
scope | string (organization, project, agent) | yes | |
spent_micro | integer | yes | |
status | string (active, disabled) | yes | |
updated_at | string | yes |
BudgetCreate
| Field | Type | Required | Description |
|---|---|---|---|
agent_id | string or null | no | |
limit_micro | integer | yes | |
period | string (daily, monthly) | yes | |
project_id | string or null | no | |
scope | string (organization, project, agent) | no |
BudgetList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Budget | yes |
BudgetPatch
| Field | Type | Required | Description |
|---|---|---|---|
limit_micro | integer or null | no | |
status | string (active, disabled) or null | no |
Capabilities
| Field | Type | Required | Description |
|---|---|---|---|
approvals | boolean | yes | |
environment | string (live, test) | yes | |
formats | array of string | yes | |
limits | object | yes | |
max_pages | integer | yes | |
max_upload_bytes | integer | yes | |
numbers | boolean | yes | |
price_version | string | yes | |
provider | string | yes | |
rates | object | yes | |
receive | boolean | yes | |
routes | array of string | yes | |
scopes | array of string | yes | |
send | boolean | yes |
ClassificationCreate
| Field | Type | Required | Description |
|---|---|---|---|
abstain_below | number | no | |
document_id | string or null | no | |
document_types | array of string | yes | |
inbox_item_id | string or null | no | |
max_pages | integer or null | no | |
strict | boolean | no | Refuse with page_limit_exceeded when the document has more pages than would be read, instead of reading the first ones and warning. |
strong_model_if_below | number | no |
Correction
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
created_by | string | yes | |
extraction_id | string | yes | |
field | string | yes | |
id | string | yes | |
note | string or null | yes | |
value | any | yes |
CorrectionCreate
| Field | Type | Required | Description |
|---|---|---|---|
field | string or null | no | |
note | string or null | no | |
value | any | no |
Coverage
| Field | Type | Required | Description |
|---|---|---|---|
coverage_version | string or null | yes | |
excluded | object | yes | |
generated_at | string or null | yes | |
inbound | object | yes | |
note | string or null | yes | |
orderable_now | array of string | yes | |
outbound | object | yes |
Deleted
| Field | Type | Required | Description |
|---|---|---|---|
deleted | boolean | no | |
id | string | yes |
Delivery
| Field | Type | Required | Description |
|---|---|---|---|
attempt | integer | yes | |
created_at | string | yes | |
delivered_at | string or null | yes | |
duration_ms | integer or null | yes | |
error | string or null | yes | |
event_id | string | yes | |
event_type | string | yes | |
id | string | yes | |
next_attempt_at | string or null | yes | |
replay_of | string or null | yes | |
response_status | integer or null | yes | |
schedule_s | array of integer | yes | |
status | string | yes | |
webhook_id | string | yes |
DeliveryPage
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Delivery | yes | |
next_cursor | string or null | no |
Document
| Field | Type | Required | Description |
|---|---|---|---|
content_type | string | yes | |
created_at | string | yes | |
deleted_at | string or null | yes | |
environment | string (live, test) | yes | |
expires_at | string or null | yes | |
filename | string | yes | |
id | string | yes | |
page_count | integer | yes | |
render_reason | string or null | yes | |
render_status | string | yes | |
sha256 | string | yes | |
size_bytes | integer | yes | |
source | string | yes | |
status | string | yes | |
upload_id | string or null | yes | |
validation | object | yes |
DocumentCreate
| Field | Type | Required | Description |
|---|---|---|---|
filename | string or null | no | |
html | string or null | no | HTML rendered to PDF by a headless browser with scripts off and no network: inline CSS and data: images print, external resources are counted as blocked. US letter unless @page says otherwise. At most 2 MiB. |
markdown | string or null | no | Markdown (headings, lists, emphasis, code) rendered to PDF. |
text | string or null | no | Plain text rendered to a letter PDF. |
upload_id | string or null | no |
DocumentPage
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Document | yes | |
next_cursor | string or null | no |
DocumentPages
| Field | Type | Required | Description |
|---|---|---|---|
document_id | string | yes | |
items | array of object PagePreview | yes | |
page_count | integer | yes | |
render_reason | string or null | yes | |
render_status | string | yes |
DocumentValidation
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
page_count | integer | yes | |
render_reason | string or null | yes | |
render_status | string | yes | |
status | string | yes | |
warnings | array of object | yes |
EffectivePolicies
| Field | Type | Required | Description |
|---|---|---|---|
actor | string | yes | |
approval_required_without_policy | boolean | yes | |
environment | string (live, test) | yes | |
policies | array of object Policy | yes | |
rules_order | array of string | yes | |
under_policy | boolean | yes |
Event
| Field | Type | Required | Description |
|---|---|---|---|
correlation_id | string or null | yes | |
created_at | string | yes | |
data | object | yes | |
environment | string (live, test) | yes | |
fax_job_id | string or null | yes | |
id | string | yes | |
org_id | string | yes | |
project_id | string or null | yes | |
resource_id | string | yes | |
resource_type | string | yes | |
schema_version | integer | yes | |
type | string | yes |
EventPage
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Event | yes | |
next_cursor | string or null | no |
Extraction
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
confidence | number or null | yes | |
corrections | array of object or null | no | |
created_at | string | yes | |
created_by | string | yes | |
currency | string | yes | |
document_id | string | yes | |
document_pages | integer | yes | The document's page count. Above pages_processed on a completed row means the cap left pages unread; output.truncated and a warning say so. |
environment | string (live, test) | yes | |
error_code | string or null | yes | |
id | string | yes | |
inbox_item_id | string or null | yes | |
kind | string (extract, classify, summarize) | yes | |
models | object | yes | |
options | object | yes | |
output | object or null | yes | |
pages | array of object ExtractionPage | yes | |
pages_escalated | integer | yes | |
pages_processed | integer | yes | |
pages_requested | integer | yes | |
price_micro | integer | yes | |
provider_cost_micro | integer | yes | |
schema | object or null | no | |
schema_id | string or null | yes | |
started_at | string or null | yes | |
status | string (pending, queued, running, completed, failed) | yes |
ExtractionCreate
| Field | Type | Required | Description |
|---|---|---|---|
document_id | string or null | no | |
inbox_item_id | string or null | no | |
max_pages | integer or null | no | |
schema | object or null | no | A JSON Schema object of string, number, boolean or date fields with descriptions. |
schema_id | string or null | no | |
strict | boolean | no | Refuse with page_limit_exceeded when the document has more pages than would be read, instead of reading the first ones and warning. |
strong_model_if_below | number | no |
ExtractionPage
| Field | Type | Required | Description |
|---|---|---|---|
confidence | number | yes | |
escalated | boolean | no | |
language | string or null | no | |
model | string | yes | |
page | integer | yes | |
status | string | yes | |
text | string | yes | |
warnings | array of string | no |
ExtractionPageList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Extraction | yes | |
next_cursor | string or null | no |
ExtractionSchema
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
created_by | string | yes | |
description | string or null | yes | |
id | string | yes | |
name | string | yes | |
schema | object | yes | |
status | string | yes | |
version | integer | yes |
ExtractionSchemaList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object ExtractionSchema | yes |
FaxCreate
M9: an approved request authorizes the send; without one a quote that needs authorization is evaluated against the caller's delegated policies.
| Field | Type | Required | Description |
|---|---|---|---|
approval_id | string or null | no | An approved approval request bound to this quote. Consumed by this one send. |
client_reference | string or null | no | |
quote_id | string | yes |
FaxJob
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
attempt_count | integer | yes | |
billable_pages | integer | yes | |
cancel_requested_at | string or null | yes | |
captured_micro | integer | yes | |
client_reference | string or null | yes | |
completed_at | string or null | yes | |
cover_pages | integer | yes | |
created_at | string | yes | |
currency | string | yes | |
direction | string | yes | |
document_id | string | yes | |
document_sha256 | string | yes | |
environment | string (live, test) | yes | |
evidence | object or null | no | The carrier's evidence once delivered or partial; null before. |
failure_code | string or null | yes | |
from | string or null | no | |
id | string | yes | |
pages_sent | integer | yes | |
provider | string | yes | |
provider_ref | string or null | yes | |
quote_id | string or null | yes | |
route | string | yes | |
state | string (queued, active, partial, failed, unknown, delivered) | yes | |
to | string | yes | |
transmitted_sha256 | string or null | yes | |
updated_at | string | yes |
FaxJobPage
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object FaxJob | yes | |
next_cursor | string or null | no |
HTTPValidationError
| Field | Type | Required | Description |
|---|---|---|---|
detail | array of object ValidationError | no |
InboxItemDetail
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | no | |
document | object or null | no | |
document_id | string or null | yes | |
duration_secs | integer or null | no | |
environment | string (live, test) | no | |
expires_at | string or null | no | |
extraction_id | string or null | no | |
from | string or null | no | |
id | string | yes | |
media_status | string | no | |
note | string or null | no | |
number_id | string or null | no | |
pages | integer | yes | |
partial_content | boolean | no | |
project_id | string or null | no | |
provider | string | no | |
read_at | string or null | no | |
received_at | string | yes | |
status | string | yes | |
text | string or null | no | |
to | string | yes |
InboxPage
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object faxforagents__api__routes__inbox__InboxItem | yes | |
next_cursor | string or null | no |
InboxUpdate
| Field | Type | Required | Description |
|---|---|---|---|
status | string (received, read, archived) or null | no |
Inventory
| Field | Type | Required | Description |
|---|---|---|---|
country | string | yes | |
items | array of object InventoryNumber | yes | |
locality | string or null | yes | |
note | string | yes | |
number_type | string | yes | |
recurring_period | string | yes |
InventoryNumber
| Field | Type | Required | Description |
|---|---|---|---|
country | string | yes | |
currency | string | yes | |
e164 | string | yes | |
locality | string or null | yes | |
monthly_micro | integer | yes | |
number_type | string | yes | |
setup_micro | integer | yes |
Invitation
| Field | Type | Required | Description |
|---|---|---|---|
accepted_at | string or null | yes | |
created_at | string | yes | |
email | string | yes | |
expires_at | string | yes | |
id | string | yes | |
invited_by | string | yes | |
role | string (owner, admin, member, viewer) | yes |
InvitationCreate
| Field | Type | Required | Description |
|---|---|---|---|
email | string (email) | yes | |
role | string (owner, admin, member, viewer) | no |
InvitationList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Invitation | yes |
Invoice
| Field | Type | Required | Description |
|---|---|---|---|
amount_due_micro | integer | yes | |
amount_paid_micro | integer | yes | |
created_at | string or null | yes | |
currency | string | yes | |
hosted_invoice_url | string or null | yes | |
id | string | yes | |
invoice_pdf | string or null | yes | |
number | string or null | yes | |
status | string or null | yes | |
subscription_id | string or null | yes |
InvoicePage
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Invoice | yes | |
next_cursor | string or null | no |
LedgerEntry
| Field | Type | Required | Description |
|---|---|---|---|
account | string | yes | |
amount_micro | integer | yes | |
created_at | string | yes | |
id | string | yes | |
kind | string | yes | |
memo | string or null | yes | |
ref_id | string or null | yes | |
ref_type | string or null | yes | |
txn_id | string | yes |
LedgerPage
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object LedgerEntry | yes | |
next_cursor | string or null | no |
MagicLinkRequest
| Field | Type | Required | Description |
|---|---|---|---|
email | string (email) | yes | |
next | string or null | no | An in-app path to open after sign-in. |
Member
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
email | string | yes | |
id | string | yes | |
name | string or null | yes | |
role | string (owner, admin, member, viewer) | yes | |
user_id | string or null | yes |
MemberList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Member | yes |
MemberPatch
| Field | Type | Required | Description |
|---|---|---|---|
role | string (owner, admin, member, viewer) or null | no | Required. Optional in the schema so a foreign id is a 404 first. |
Number
| Field | Type | Required | Description |
|---|---|---|---|
activated_at | string or null | yes | |
country | string | yes | |
created_at | string | yes | |
currency | string | yes | |
e164 | string | yes | |
environment | string (live, test) | yes | |
id | string | yes | |
inbound_status | string | yes | |
inbound_webhook_id | string or null | yes | |
label | string or null | yes | |
locality | string or null | yes | |
monthly_micro | integer | yes | |
number_type | string | yes | |
order_id | string or null | yes | |
project_id | string or null | yes | |
provider | string | yes | |
released_at | string or null | yes | |
renews_at | string or null | yes | |
status | string | yes |
NumberList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Number | yes |
NumberOrder
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
country | string or null | yes | |
created_at | string | yes | |
currency | string | yes | |
e164 | string or null | yes | |
environment | string (live, test) | yes | |
error | string or null | yes | |
first_month_hold_micro | integer | yes | Held now, captured when the number activates. |
id | string | yes | |
number | object Number or null | yes | |
number_id | string or null | yes | |
number_type | string or null | yes | |
provider | string | yes | |
recurring_charge_micro | integer | yes | Charged every month on the activation day. |
recurring_period | string | yes | |
status | string | yes |
NumberOrderCreate
| Field | Type | Required | Description |
|---|---|---|---|
e164 | string | yes | A number from GET /v1/number-inventory, E.164. |
inbound_webhook_id | string or null | no | The webhook that receives fax.received for this number (default: all). |
label | string or null | no | |
project_id | string or null | no | Inbound faxes are filed under this project. |
NumberUpdate
| Field | Type | Required | Description |
|---|---|---|---|
inbound_webhook_id | string or null | no | |
label | string or null | no | |
project_id | string or null | no |
Organization
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
id | string | yes | |
members | integer | yes | |
name | string | yes | |
role | string (owner, admin, member, viewer) or null | yes |
OrganizationList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object OrganizationSummary | yes |
OrganizationPatch
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes |
OrganizationSummary
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
name | string | yes | |
role | string (owner, admin, member, viewer) | yes |
PagePreview
| Field | Type | Required | Description |
|---|---|---|---|
height_px | integer or null | yes | |
page_number | integer | yes | |
url | string | yes | |
width_px | integer or null | yes |
Passkey
| Field | Type | Required | Description |
|---|---|---|---|
aaguid | string or null | yes | |
backup_eligible | boolean | yes | |
created_at | string | yes | |
id | string | yes | |
label | string or null | yes | |
last_used_at | string or null | yes | |
transports | array of string or null | yes |
PasskeyList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Passkey | yes |
PasskeyLoginVerify
| Field | Type | Required | Description |
|---|---|---|---|
credential | object | yes |
PasskeyRegisterVerify
| Field | Type | Required | Description |
|---|---|---|---|
credential | object | yes | |
label | string or null | no |
Policy
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
created_by | string | yes | |
current_version_id | string or null | yes | |
enabled | boolean | yes | |
id | string | yes | |
name | string | yes | |
purpose | string or null | yes | |
rules | object | yes | |
updated_at | string | yes | |
version | integer | yes |
PolicyCreate
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | no | |
name | string | yes | |
purpose | string or null | no | Why this policy exists. Shown, never evaluated. |
rules | object | yes | See the PolicyRules schema in docs/APPROVALS.md. |
PolicyEvaluation
| Field | Type | Required | Description |
|---|---|---|---|
decision | string | yes | |
denials | array of object | yes | |
executed | boolean | no | |
plan | object | yes | |
policy_id | string or null | yes | |
policy_name | string or null | yes | |
policy_version_id | string or null | yes | |
reason | string | yes | |
rule | string or null | yes | |
version | integer or null | yes |
PolicyEvaluationCreate
| Field | Type | Required | Description |
|---|---|---|---|
document_id | string or null | no | Or plan: this document ... |
from | string or null | no | |
quote_id | string or null | no | Evaluate an existing quote. |
to | string or null | no | ... to this E.164 destination. |
PolicyList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Policy | yes |
PolicyUpdate
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean or null | no | |
name | string or null | no | |
purpose | string or null | no | |
rules | object or null | no |
PolicyVersion
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
created_by | string | yes | |
enabled | boolean | yes | |
id | string | yes | |
name | string | yes | |
policy_id | string | yes | |
purpose | string or null | yes | |
rules | object | yes | |
version | integer | yes |
PolicyVersionList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object PolicyVersion | yes |
PortOrder
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
direction | string | yes | |
environment | string (live, test) | yes | |
id | string | yes | |
milestones | array of object | yes | |
numbers | array of string | yes | |
provider | string | yes | |
request | object | yes | |
status | string | yes | |
updated_at | string | yes |
PortOrderCreate
| Field | Type | Required | Description |
|---|---|---|---|
note | string or null | no | |
numbers | array of string | yes |
PortOrderList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object PortOrder | yes |
PortOutRequestCreate
| Field | Type | Required | Description |
|---|---|---|---|
note | string or null | no | |
number_id | string | yes |
PortabilityCheck
| Field | Type | Required | Description |
|---|---|---|---|
checked_at | string | yes | |
items | array of object | yes |
PortabilityCheckCreate
| Field | Type | Required | Description |
|---|---|---|---|
numbers | array of string | yes |
PortalSession
| Field | Type | Required | Description |
|---|---|---|---|
expires_at | string | yes | |
url | string | yes |
Providers
| Field | Type | Required | Description |
|---|---|---|---|
github | boolean | yes | |
google | boolean | yes | |
magic_link | boolean | no | |
passkeys | boolean | no |
Quote
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
authorization_required | boolean | yes | |
billable_pages | integer | yes | |
consumed_by_job_id | string or null | yes | |
cover | object or null | yes | |
cover_pages | integer | yes | |
created_at | string | yes | |
currency | string | yes | |
document_id | string | yes | |
document_pages | integer | yes | |
document_sha256 | string | yes | |
environment | string (live, test) | yes | |
expired | boolean | yes | |
expires_at | string | yes | |
from | string or null | no | |
id | string | yes | |
per_page_micro | integer | no | |
price_version | string | yes | |
route | string | yes | |
route_label | string | no | |
to | string | yes | |
warnings | array of object | yes |
QuoteCreate
| Field | Type | Required | Description |
|---|---|---|---|
cover | object or null | no | Cover sheet fields: to_name, from_name, subject, message. Counts as a page. |
document_id | string | yes | |
from | string or null | no | A number you own; omit for the shared pool. |
to | string | yes | Destination in E.164, for example +12025550123. |
Reauth
| Field | Type | Required | Description |
|---|---|---|---|
credential | object or null | no | |
method | string (passkey, magic_link) | yes |
Receipt
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
attempts | array of object Attempt | yes | |
billable_pages | integer | yes | |
captured_micro | integer | yes | |
completed_at | string or null | yes | |
created_at | string | yes | |
currency | string | yes | |
document_sha256 | string | yes | |
evidence | object or null | yes | |
failure_code | string or null | yes | |
fax_job_id | string | yes | |
from | string or null | no | |
generated_at | string | yes | |
note | string | yes | |
pages_sent | integer | yes | |
provider | string | yes | |
state | string | yes | |
to | string | yes | |
transmitted_sha256 | string or null | yes |
ReleaseRequest
| Field | Type | Required | Description |
|---|---|---|---|
confirm | string or null | no | The number itself, typed out, to confirm. |
Requested
| Field | Type | Required | Description |
|---|---|---|---|
kind | string (export, deletion) | yes | |
message | string | yes | |
requested | boolean | yes |
Revoked
| Field | Type | Required | Description |
|---|---|---|---|
revoked | integer | yes |
SandboxFixture
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
destination | string or null | yes | |
expires_at | string | yes | |
id | string | yes | |
scenario | string | yes |
SandboxInboundCreate
| Field | Type | Required | Description |
|---|---|---|---|
from | string or null | no | |
pages | integer | no | |
partial_content | boolean | no | Rehearse a cut-off transmission. |
to | string | yes |
SandboxReset
| Field | Type | Required | Description |
|---|---|---|---|
deleted | object | yes | |
reset | boolean | yes | |
wallet_available_micro | integer | yes |
SandboxScenarioCreate
| Field | Type | Required | Description |
|---|---|---|---|
destination | string or null | no | Apply to one destination; omit for every send. |
scenario | string | yes |
SandboxScenarios
| Field | Type | Required | Description |
|---|---|---|---|
destinations | array of object | yes | |
fixtures | array of object SandboxFixture | yes | |
scenarios | array of object | yes |
SchemaCreate
| Field | Type | Required | Description |
|---|---|---|---|
description | string or null | no | |
name | string | yes | |
schema | object | yes |
SenderVerification
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
environment | string (live, test) | yes | |
from | string | yes | |
id | string | yes | |
method | string | yes | |
number_id | string or null | yes | |
status | string | yes | |
verified_at | string or null | yes |
SenderVerificationCreate
| Field | Type | Required | Description |
|---|---|---|---|
from | string | yes | A number your organization owns, E.164. |
Sent
| Field | Type | Required | Description |
|---|---|---|---|
message | string | yes | |
sent | boolean | yes |
ServiceStatus
| Field | Type | Required | Description |
|---|---|---|---|
database | boolean | yes | |
environment | string (live, test) | yes | |
provider | string | yes | |
status | string (ok, degraded) | yes | |
status_page | string or null | no | |
version | string | yes | |
worker_beat_age_s | integer or null | no |
SessionInfo
| Field | Type | Required | Description |
|---|---|---|---|
auth_method | string | yes | |
authenticated_at | string | yes | |
expires_at | string | yes | |
fresh | boolean | yes | |
fresh_until | string | yes | |
id | string | yes |
SessionList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object SessionOut | yes |
SessionOut
| Field | Type | Required | Description |
|---|---|---|---|
auth_method | string | yes | |
authenticated_at | string | yes | |
created_at | string | yes | |
current | boolean | yes | |
expires_at | string | yes | |
id | string | yes | |
ip | string or null | yes | |
last_seen_at | string | yes | |
user_agent | string or null | yes |
SignedUrl
| Field | Type | Required | Description |
|---|---|---|---|
content_type | string | yes | |
expires_at | string | yes | |
url | string | yes |
Subscription
| Field | Type | Required | Description |
|---|---|---|---|
cancel_at_period_end | boolean | yes | |
canceled_at | string or null | yes | |
created_at | string | yes | |
current_period_end | string or null | yes | |
entitled | boolean | yes | |
id | string | yes | |
product | string | yes | |
status | string | yes | |
stripe_price_id | string or null | yes | |
stripe_subscription_id | string | yes | |
updated_at | string | yes |
SubscriptionCheckout
| Field | Type | Required | Description |
|---|---|---|---|
product | string | yes | |
stripe_session_id | string | yes | |
url | string | yes |
SubscriptionList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Subscription | yes | |
next_cursor | string or null | no | |
workspace | boolean | yes |
SummaryCreate
| Field | Type | Required | Description |
|---|---|---|---|
document_id | string or null | no | |
inbox_item_id | string or null | no | |
max_pages | integer or null | no | |
strict | boolean | no | Refuse with page_limit_exceeded when the document has more pages than would be read, instead of reading the first ones and warning. |
strong_model_if_below | number | no |
SwitchOrganization
| Field | Type | Required | Description |
|---|---|---|---|
org_id | string | yes |
TopupCreate
| Field | Type | Required | Description |
|---|---|---|---|
amount_usd | integer | yes | Whole US dollars, 10 to 1000 per session. |
TopupSession
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
auto_topup_id | string or null | yes | |
completed_at | string or null | yes | |
created_at | string | yes | |
currency | string | yes | |
environment | string (live, test) | yes | |
error | string or null | yes | |
expires_at | string or null | yes | |
id | string | yes | |
kind | string (manual, auto, setup) | yes | |
status | string (open, completed, expired, canceled, failed) | yes | |
stripe_payment_intent_id | string or null | yes | |
stripe_session_id | string or null | yes | |
url | string or null | no | The hosted Checkout page while the session is open. |
TopupSessionPage
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object TopupSession | yes | |
next_cursor | string or null | no |
UploadComplete
| Field | Type | Required | Description |
|---|---|---|---|
sha256 | string or null | no | Optional: fail if the bytes differ. |
UploadCreate
| Field | Type | Required | Description |
|---|---|---|---|
content_type | string | no | application/pdf, image/png, image/jpeg or image/tiff. An image becomes 8-bit gray letter pages, since fax is monochrome. A frame wider than it is tall is rotated. A frame above 300 dpi letter is downsampled. Every TIFF frame is a page. PNG and JPEG take the first frame. The bytes must be the declared type. |
filename | string | yes | |
size_bytes | integer | yes |
UploadSession
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string or null | yes | |
content_type | string | yes | |
created_at | string | yes | |
declared_size | integer | yes | |
expires_at | string | yes | |
filename | string | yes | |
id | string | yes | |
received_size | integer | yes | |
sha256 | string or null | yes | |
status | string | yes | |
upload_method | string or null | no | |
upload_url | string or null | no | |
upload_url_expires_at | string or null | no |
UsageExport
| Field | Type | Required | Description |
|---|---|---|---|
content_type | string | yes | |
created_at | string | yes | |
environment | string (live, test) | yes | |
expires_at | string | yes | |
id | string | yes | |
params | object | yes | |
row_count | integer | yes | |
status | string (ready, expired) | yes | |
url | string or null | yes |
UsageExportCreate
| Field | Type | Required | Description |
|---|---|---|---|
from | string or null | no | ISO date; default 30 days ago. |
to | string or null | no | ISO date; default today. |
UsageItem
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | yes | |
day | string or null | no | |
destination | string or null | no | |
direction | string or null | no | |
jobs | integer | yes | |
pages | integer | yes | |
project_id | string or null | no | |
route | string or null | no |
UsageReport
| Field | Type | Required | Description |
|---|---|---|---|
currency | string | yes | |
environment | string (live, test) | yes | |
from | string | yes | |
group_by | array of string | yes | |
items | array of object UsageItem | yes | |
to | string | yes | |
totals | object | yes |
UserOut
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
email | string | yes | |
email_verified | boolean | yes | |
id | string | yes | |
last_login_at | string or null | yes | |
name | string or null | yes |
ValidationError
| Field | Type | Required | Description |
|---|---|---|---|
ctx | object | no | |
input | any | no | |
loc | array of string or integer | yes | |
msg | string | yes | |
type | string | yes |
Webhook
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
description | string or null | yes | |
event_types | array of string | yes | |
id | string | yes | |
previous_secret_expires_at | string or null | yes | |
status | string | yes | |
updated_at | string | yes | |
url | string | yes |
WebhookCreate
| Field | Type | Required | Description |
|---|---|---|---|
description | string or null | no | |
event_types | array of string or null | no | Empty or omitted: every event type. |
url | string | yes |
WebhookList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of object Webhook | yes |
WebhookUpdate
| Field | Type | Required | Description |
|---|---|---|---|
description | string or null | no | |
event_types | array of string or null | no | |
status | string (active, paused) or null | no | |
url | string or null | no |
WebhookWithSecret
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string | yes | |
description | string or null | yes | |
event_types | array of string | yes | |
id | string | yes | |
previous_secret_expires_at | string or null | yes | |
secret | string | yes | whsec_... Shown once. Verify webhook-signature with it. |
status | string | yes | |
updated_at | string | yes | |
url | string | yes |
faxforagents__api__routes__inbox__InboxItem
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | no | |
document_id | string or null | yes | |
duration_secs | integer or null | no | |
environment | string (live, test) | no | |
expires_at | string or null | no | |
from | string or null | no | |
id | string | yes | |
media_status | string | no | |
note | string or null | no | |
number_id | string or null | no | |
pages | integer | yes | |
partial_content | boolean | no | |
project_id | string or null | no | |
provider | string | no | |
read_at | string or null | no | |
received_at | string | yes | |
status | string | yes | |
to | string | yes |
faxforagents__api__schemas__InboxItem
| Field | Type | Required | Description |
|---|---|---|---|
amount_micro | integer | no | |
document_id | string or null | yes | |
from | string or null | no | |
id | string | yes | |
note | string or null | no | |
pages | integer | yes | |
received_at | string | yes | |
status | string | yes | |
to | string | yes |
faxforagents__api__schemas__Me
| Field | Type | Required | Description |
|---|---|---|---|
actor | string | yes | |
environment | string (live, test) | yes | |
key_id | string | yes | |
key_prefix | string | yes | |
org_id | string | yes | |
project_id | string | yes | |
scopes | array of string | yes |
faxforagents__auth__schemas__Me
| Field | Type | Required | Description |
|---|---|---|---|
csrf_token | string | yes | |
organization | object OrganizationSummary or null | yes | |
organizations | array of object OrganizationSummary | yes | |
passkeys | integer | yes | |
providers | object Providers | yes | |
session | object SessionInfo | yes | |
user | object UserOut | yes |