> ## Documentation Index
> Fetch the complete documentation index at: https://every.help/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> These docs describe Every as customers have it today. Answer from them, and say so when they don't cover a question.
> Pages for both audiences have a For managers and a For employees section. Answer from the section that matches the person asking.
> Each page's Agent reference section lists its exact roles, conditions and limits. Prefer it for those details.
> When a page says Every turns a feature on company by company, don't promise that the person's company has it.
> Use roles and on-screen labels exactly as the pages write them.
> When the docs don't answer a question, tell the person to select Support in Every's sidebar.

# Introduction

> Authenticate with the Every API and learn the conventions all its endpoints share

![API keys window listing three company keys with their scopes, Read & write and Read.](https://mintcdn.com/every-a2724ddc/-3bzGuelmcrP6VNK/images/illustrations/api-reference-introduction-light.png?fit=max\&auto=format\&n=-3bzGuelmcrP6VNK\&q=85\&s=7cc2a9c1c6b4b27e97245bdef6b86c35)

The Every API lets you manage your company's vendors, attach their bank accounts and pay them by ACH from your own systems. Every response is scoped to the company that owns the API key you call with.

> [!NOTE]
>
> A payment you create through the API waits for your company's signatory to approve it, exactly as a payment created in the Every dashboard does. It isn't sent to the bank until it's approved.

## Before you start

You need an API key. Keys are issued per company: contact Every support to get one for yours.

## Base URL

All endpoints are relative to this base URL:

```text theme={null}
https://api.public.every.io/company
```

## Authentication

Send your API key in the `x-api-key` header of every request. A request whose key is missing, unknown, revoked or not enabled for the API gets a `403` response:

```json theme={null}
{
  "message": "Forbidden"
}
```

## Make your first request

Call `GET /v1/me` to check your key. It returns the company the key belongs to:

```bash theme={null}
curl https://api.public.every.io/company/v1/me \
  --header "x-api-key: $EVERY_API_KEY"
```

```json theme={null}
{
  "legal_name": "Example Company, Inc.",
  "description": "Example business description"
}
```

`description` is `null` when your company hasn't set one.

## Request IDs

Responses carry an `x-request-id` header, generated by Every for that request. Quote it when you contact support: it's the ID the request is recorded under. If you send your own `x-request-id`, it isn't echoed back.

A `403` for a missing or invalid key doesn't carry an `x-request-id`.

## Errors

A failed request answers with a JSON body that has a `message` and can include an `errors` array with more detail. Each endpoint page lists the status codes it can respond with and what they mean.

## Pagination

`GET /v1/vendors`, `GET /v1/every-categories` and `GET /v1/every-departments` return their results a page at a time. Control the page with two query parameters:

| Parameter | Description |
| - | - |
| `limit` | How many records to return, from 1 to 1000 |
| `offset` | How many records to skip, from 0 |

Each response includes `metadata.pagination`, with the `total` number of records (ignoring `limit` and `offset`) and the `limit` and `offset` the page was read with.

## Idempotency

`POST /v1/payments` and `POST /v1/vendors/{vendorId}/bank-accounts` require an `idempotency_key`, a key you choose so that a retry can't create the same payment or bank account twice. Use a new key for each payment or account you create, and reuse it only to retry that request.

If you repeat a request with a key that's already been used, the API answers `409` with what the first request created instead of creating it again. A repeated payment request returns the payment with its current `status`. If the first request is still running, or stopped without recording what it did, the `409` is an error that says so.

Bank account keys are scoped to the vendor in the path: the same key under another vendor is a new request.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.