> ## Documentation Index
> Fetch the complete documentation index at: https://every-a2724ddc.mintlify.site/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 under /admins/ are for the people who run Every for the company, and pages under /employees/ are for employees. Answer from the pages that match 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 a feature is in closed beta, or that Every turns it 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 someone asks what a term means, answer with the Glossary page's definition (/glossary), which other pages show in parentheses after the term.
> When the docs don't answer a question, tell the person to email [support@every.io](mailto:support@every.io).

# Introduction

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

![API key dialog with a copy button above the list of API keys.](https://mintcdn.com/every-a2724ddc/6k1svT9aHzVFwBZW/images/illustrations/api-reference-introduction-light.png?fit=max\&auto=format\&n=6k1svT9aHzVFwBZW\&q=85\&s=42c8ed64292190b956516e5513104bfd)

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]
>
> Every asks your company's signatory to approve an API payment. Someone with permission to override payment approvals can approve it instead (see [Approvals](https://every-a2724ddc.mintlify.site/admins/bill-pay/approvals.md)). The payment isn't sent to the bank until it's approved.

## Before you start

Company Admins create company API keys in **Settings** → **API**. For the steps, see [Every API](https://every-a2724ddc.mintlify.site/admins/settings/api.md).

> [!NOTE]
>
> Every turns on Every API company by company. If you don't see it, email [support@every.io](mailto:support@every.io) to ask about it.

## 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

When you email [support@every.io](mailto:support@every.io), include the `x-request-id` response header. Every generates this ID for the request and records the request under it. A caller-supplied `x-request-id` isn't echoed back.

## 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.


## Related topics

- [Every API](https://every-a2724ddc.mintlify.site/admins/settings/api.md)


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