> ## Documentation Index
> Fetch the complete documentation index at: https://reach-owl.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# POST /api/v1/authenticate

> Exchange your email and password for a Bearer token. No Authorization header required. Returns a token string used on all subsequent requests.

Call this endpoint to exchange your ReachOll credentials for a Bearer token. Every other endpoint in the API requires the returned token in the `Authorization` header.

## Endpoint

```text theme={null}
POST https://reachowl.com/api/v1/authenticate
```

## Request Body

<ParamField body="email" type="string" required>
  Your registered ReachOwl email address.
</ParamField>

<ParamField body="password" type="string" required>
  Your ReachOwl password.
</ParamField>

## Example Request

```bash theme={null}
curl -X POST "https://reachowl.com/api/v1/authenticate" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "email": "user@example.com",
    "password": "your_password"
  }'
```

## Response

```json theme={null}
{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}
```

<ResponseField name="token" type="string">
  The Bearer token to include in the `Authorization` header on every subsequent request.
</ResponseField>

## Errors

| Status | Meaning                                                              |
| ------ | -------------------------------------------------------------------- |
| `401`  | Invalid email or password.                                           |
| `422`  | Validation error, for example a missing `email` or `password` field. |

<Note>
  Do not send an `Authorization` header to this endpoint. It is the only public endpoint in the API.
</Note>
