Organizations API reference

Updated

6 operations of the Fax for Agents API, from the OpenAPI document version 1.20.0, snapshot of 2026-11-13. The base URL is https://api.faxforagents.com/v1. This is one group of the full reference.

  • An organization archive is downloaded with a signed link that is valid for 72 hours.
  • Asking for an export or for deletion of an organization needs org:admin, the owner's scope.
  • A data request answers 202, which means it was accepted and is not finished yet.

Operations

What is the current organization?

The one a credential acts in. An API key belongs to one organization, so for an API key the current one is fixed. A signed-in person can belong to several and looks at one at a time. GET /v1/organizations/current returns it with its id, its name, the caller's role and the number of members. GET /v1/organizations lists every organization the caller belongs to, and needs no scope.

Switching between them is a session action in the auth group. The people of an organization are in the members group.

How is an organization renamed?

PATCH /v1/organizations/current takes a name. It needs member:admin. The name matters outside the dashboard too: a fax sent without a sender_name on its quote uses the organization's name to identify the sender.

How do I export an organization's data?

POST /v1/organizations/current/export-requests asks for an export. The answer is 202 with a message. The archive is built afterwards, and the owner gets a signed link to it.

GET /v1/organization/export-archives/{token} is that link. It is valid for 72 hours, and it takes the signature in the address and no API key. After that time, ask for a new export.

How is an organization deleted?

POST /v1/organizations/current/deletion-requests asks for the organization and its data to be deleted. It also answers 202: the request is recorded, and the deletion follows. Once an organization is being deleted its keys stop working, and a call answers 410 organization_deleted.

Both requests are for the owner. They need org:admin, and an agent key is never issued that scope. An agent cannot export or delete the organization it works for.

Each operation in detail

GET /v1/organization/export-archives/{token}

Download an organization archive with a signed link valid for 72 hours

Credential: the signed URL as it was given.

Parameters

GET /v1/organization/export-archives/{token} parameters
NameInTypeRequiredNotes
tokenpathstringyes
expquerystring or nullno
sigquerystring or nullno

Responses

GET /v1/organization/export-archives/{token} responses
StatusMeaning
200Successful Response
404not_found: no such resource for this credential. A resource of another organization answers the same.
422A field failed validation: invalid_request, with one entry per field in error.details, or a code that names the rule.

Example

curl https://api.faxforagents.com/v1/organization/export-archives/TOKEN

GET /v1/organizations

The organizations you belong to

Credential: an API key or a signed-in session.

Responses

GET /v1/organizations responses
StatusMeaning
200Successful Response
401No credential, or one that was not accepted: invalid_token for an API key, unauthenticated where a signed-in session is needed. error.details.reason says why a key was refused.
404not_found: no such resource for this credential. A resource of another organization answers the same.
429rate_limited. Retry-After and the RateLimit-* headers say when to try again.

Response fields

GET /v1/organizations response fields
FieldTypeRequiredDescription
itemsarray of object OrganizationSummaryyes

Example

curl https://api.faxforagents.com/v1/organizations \
  -H "Authorization: Bearer ffa_test_..."

GET /v1/organizations/current

The organization you are looking at

Credential: an API key or a signed-in session. Scope: account:read.

Responses

GET /v1/organizations/current responses
StatusMeaning
200Successful Response
401No credential, or one that was not accepted: invalid_token for an API key, unauthenticated where a signed-in session is needed. error.details.reason says why a key was refused.
403The credential is valid and is not allowed to do this. scope_missing puts the scope in error.details.scope. Other codes are agent_forbidden and approval_required. A session can also meet csrf_invalid and reauth_required.
404not_found: no such resource for this credential. A resource of another organization answers the same.
429rate_limited. Retry-After and the RateLimit-* headers say when to try again.

Response fields

GET /v1/organizations/current response fields
FieldTypeRequiredDescription
created_atstringyes
idstringyes
membersintegeryes
namestringyes
rolestring (owner, admin, member, viewer) or nullyes

Example

curl https://api.faxforagents.com/v1/organizations/current \
  -H "Authorization: Bearer ffa_test_..."

PATCH /v1/organizations/current

Rename the organization

Credential: an API key or a signed-in session. Scope: member:admin.

Parameters

PATCH /v1/organizations/current parameters
NameInTypeRequiredNotes
Idempotency-KeyheaderstringnoReplay the first successful response for the same request within 24 hours. Reusing the idempotency header with a different request returns 409 idempotency_key_conflict. Responses include Idempotent-Replayed: true on replay.

Request body application/json, required

PATCH /v1/organizations/current request body
FieldTypeRequiredDescription
namestringyes

Responses

PATCH /v1/organizations/current responses
StatusMeaning
200Successful Response
401No credential, or one that was not accepted: invalid_token for an API key, unauthenticated where a signed-in session is needed. error.details.reason says why a key was refused.
403The credential is valid and is not allowed to do this. scope_missing puts the scope in error.details.scope. Other codes are agent_forbidden and approval_required. A session can also meet csrf_invalid and reauth_required.
404not_found: no such resource for this credential. A resource of another organization answers the same.
409The resource is in a state that refuses the call, or the Idempotency-Key was used with a different request (idempotency_key_conflict). error.code names the state.
422A field failed validation: invalid_request, with one entry per field in error.details, or a code that names the rule.
429rate_limited. Retry-After and the RateLimit-* headers say when to try again.

Response fields

PATCH /v1/organizations/current response fields
FieldTypeRequiredDescription
created_atstringyes
idstringyes
membersintegeryes
namestringyes
rolestring (owner, admin, member, viewer) or nullyes

Example

curl https://api.faxforagents.com/v1/organizations/current \
  -X PATCH \
  -H "Authorization: Bearer ffa_test_..." \
  -H "Content-Type: application/json" \
  -d '{"name":"example"}'

POST /v1/organizations/current/deletion-requests

Ask for the organization and its data to be deleted (owner)

Credential: an API key or a signed-in session. Scope: org:admin.

Parameters

POST /v1/organizations/current/deletion-requests parameters
NameInTypeRequiredNotes
Idempotency-KeyheaderstringnoReplay the first successful response for the same request within 24 hours. Reusing the idempotency header with a different request returns 409 idempotency_key_conflict. Responses include Idempotent-Replayed: true on replay.

Responses

POST /v1/organizations/current/deletion-requests responses
StatusMeaning
202Successful Response
401No credential, or one that was not accepted: invalid_token for an API key, unauthenticated where a signed-in session is needed. error.details.reason says why a key was refused.
403The credential is valid and is not allowed to do this. scope_missing puts the scope in error.details.scope. Other codes are agent_forbidden and approval_required. A session can also meet csrf_invalid and reauth_required.
409The resource is in a state that refuses the call, or the Idempotency-Key was used with a different request (idempotency_key_conflict). error.code names the state.
422A field failed validation: invalid_request, with one entry per field in error.details, or a code that names the rule.
429rate_limited. Retry-After and the RateLimit-* headers say when to try again.

Response fields

POST /v1/organizations/current/deletion-requests response fields
FieldTypeRequiredDescription
kindstring (export, deletion)yes
messagestringyes
requestedbooleanyes

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)

Credential: an API key or a signed-in session. Scope: org:admin.

Parameters

POST /v1/organizations/current/export-requests parameters
NameInTypeRequiredNotes
Idempotency-KeyheaderstringnoReplay the first successful response for the same request within 24 hours. Reusing the idempotency header with a different request returns 409 idempotency_key_conflict. Responses include Idempotent-Replayed: true on replay.

Responses

POST /v1/organizations/current/export-requests responses
StatusMeaning
202Successful Response
401No credential, or one that was not accepted: invalid_token for an API key, unauthenticated where a signed-in session is needed. error.details.reason says why a key was refused.
403The credential is valid and is not allowed to do this. scope_missing puts the scope in error.details.scope. Other codes are agent_forbidden and approval_required. A session can also meet csrf_invalid and reauth_required.
409The resource is in a state that refuses the call, or the Idempotency-Key was used with a different request (idempotency_key_conflict). error.code names the state.
422A field failed validation: invalid_request, with one entry per field in error.details, or a code that names the rule.
429rate_limited. Retry-After and the RateLimit-* headers say when to try again.

Response fields

POST /v1/organizations/current/export-requests response fields
FieldTypeRequiredDescription
kindstring (export, deletion)yes
messagestringyes
requestedbooleanyes

Example

curl https://api.faxforagents.com/v1/organizations/current/export-requests \
  -X POST \
  -H "Authorization: Bearer ffa_test_..."