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

# Finowl API

> Check emails and passwords against known breaches and predict gender from names, emails and usernames, with one simple JSON API.

Finowl gives your backend two kinds of signal through one API key:

* **Breach checks** tell you whether an email or password has appeared in a known data breach, so you can protect accounts at sign up, at login and over time.
* **Gender prediction** estimates gender from a name, email or username, one at a time or 50 at a time, with explicit unknown results when the signal is weak.

```bash theme={null}
curl https://api.finowl.co/v1/breaches/password \
  -H "Authorization: Bearer $FINOWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"password": "P@ssw0rd"}'
```

```json theme={null}
{ "breached": true, "count": 133211 }
```

## Start here

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Make your first request in under 5 minutes.
  </Card>

  <Card title="API reference" icon="code" href="/api-reference/introduction">
    Every endpoint, field and response, with a live playground.
  </Card>

  <Card title="Authentication" icon="key" href="/authentication">
    Create, store and rotate API keys.
  </Card>

  <Card title="Errors" icon="triangle-exclamation" href="/concepts/errors">
    Every error code and what to do about it.
  </Card>
</CardGroup>

## What you can build

<CardGroup cols={3}>
  <Card title="Safer sign ups" icon="lock" href="/guides/password-checks-at-signup">
    Reject passwords that already appear in breach lists before they reach your database.
  </Card>

  <Card title="Breach alerts" icon="bell" href="/guides/email-breach-monitoring">
    Tell users when their email shows up in a breach and prompt a password change.
  </Card>

  <Card title="Contact enrichment" icon="users" href="/guides/batch-gender-enrichment">
    Add a gender estimate to CRM records, 50 contacts per request.
  </Card>
</CardGroup>

## Endpoints at a glance

| Endpoint | Input | Returns |
| - | - | - |
| [`POST /v1/breaches/email`](/api-reference/breaches/email) | An email address | Every public breach it appears in |
| [`POST /v1/breaches/password`](/api-reference/breaches/password) | A password | How many times it appears in breaches |
| [`POST /v1/gender/name`](/api-reference/gender/name) | A first or full name | A gender estimate with confidence |
| [`POST /v1/gender/email`](/api-reference/gender/email) | An email address | A gender estimate from the name in it |
| [`POST /v1/gender/username`](/api-reference/gender/username) | A username or handle | A gender estimate when the signal allows |
| [`POST /v1/gender/batch`](/api-reference/gender/batch) | Up to 50 mixed inputs | One result per input, in order |

<Tip>
  Want to try it without writing code? Open the [Sandbox](https://app.finowl.co/sandbox) in your dashboard, run any endpoint and copy the generated code in 9 languages.
</Tip>


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