# Platform API reference

> Two read-only operations of the Fax for Agents API. One returns the limits and features in force for your key. The other returns the service

Page: https://faxforagents.com/docs/api/reference/platform/
Last changed: 2026-11-13

Updated Nov 13, 2026

2 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](https://faxforagents.com/docs/api/reference/).

- GET /v1/capabilities returns the limits and features in force for the calling credential.
- GET /v1/service-status is a customer-safe view of availability, with no internal detail.
- Both platform operations need a credential and no scope.

## Operations

- `GET /v1/capabilities` Limits and features in force
- `GET /v1/service-status` Customer-safe availability

## What does the capabilities call return?

`GET /v1/capabilities` describes what the calling credential can do right now. The answer names the environment, the scopes the credential carries and the price version. It lists the accepted formats, `max_pages` and `max_upload_bytes`, a `limits` object, the routes and their rates. It also says what is switched on for sending, receiving, approvals, numbers, extraction and the one-time send.

Read it at start-up and keep the values. A client that reads its limits here does not have to copy them from a page, and it follows a change without a release. The [limits page](https://faxforagents.com/docs/limits/) lists the same published values for people.

## What does the service status call return?

`GET /v1/service-status` is the availability a customer may see. The answer has a `status`, the state of the database and of the fax provider, and the version of the API. It also has the age of the worker's last beat in seconds. `status_page` links the hosted status page.

It is meant for a health panel in your own tooling. The [status page](https://faxforagents.com/status/) says where else to look when the API itself does not answer.

## Do these two calls need a scope?

No. Both take an API key or a signed-in session, and neither names a scope. Any credential that works can call them. Both answer 401 without a credential and 429 past the rate limit.

## Each operation in detail

### GET `/v1/capabilities`

Limits and features in force

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

#### Responses

GET /v1/capabilities responses

| Status | Meaning |
| --- | --- |
| `200` | Successful Response |
| `401` | No 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. |
| `429` | rate_limited. Retry-After and the RateLimit-* headers say when to try again. |

#### Response fields

GET /v1/capabilities response fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `approvals` | boolean | yes |  |
| `environment` | string (live, test) | yes |  |
| `extraction` | boolean | yes |  |
| `extraction_pricing` | object | no | What POST /v1/extractions charges, in micro-units. page_micro is for every page read. escalated_page_micro is added for a page the stronger model reads again. max_pages is the most pages one extraction reads. Sandbox extractions are free. |
| `formats` | array of string | yes |  |
| `limits` | object | yes |  |
| `max_pages` | integer | yes |  |
| `max_upload_bytes` | integer | yes |  |
| `numbers` | boolean | yes |  |
| `one_time` | object | 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

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

#### Responses

GET /v1/service-status responses

| Status | Meaning |
| --- | --- |
| `200` | Successful Response |
| `401` | No 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. |
| `429` | rate_limited. Retry-After and the RateLimit-* headers say when to try again. |

#### Response fields

GET /v1/service-status 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_..."`
```
