> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.portreeve.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.portreeve.com/_mcp/server.

# Quickstart

Portreeve is an abuse firewall for SaaS signups, trials, checkouts, and logins.
You call it inline at five moments — `signup`, `trial_start`, `trial_convert`,
`checkout_attempt`, `login` — and enforce the verdict that comes back:

```json
{
  "id": "evt_01J8Z3K9",
  "verdict": "review",
  "reasons": [{ "code": "identity_cluster", "detail": { "linked_accounts": 4 } }],
  "policy_version": "2026-08-22.0"
}
```

`allow` and `block` are immediate. `review` **never blocks the user** — it means
"proceed, we're looking at it", and a later denial reaches you via webhook.
Read [Handling verdicts](/reference/handling-verdicts) before going live — wiring the `review`
flow correctly is the part of the integration that matters most.

## Get set up in five minutes

<Steps>

### Create an account

Sign up at [dashboard.portreeve.com](https://dashboard.portreeve.com) — Google
or email. The free tier needs no card.

### Create your test keys

In **Settings → API keys**, create a **secret** test key (`sk_test_…`). You'll
add a **publishable** key (`pk_test_…`) later, for
[device fingerprinting](/integration/device-fingerprinting).

### Fire your first verdict

Works from any stack, before you install anything:

```bash
curl https://api.portreeve.com/v1/verdict \
  -H "authorization: Bearer sk_test_YOUR_KEY" \
  -H "content-type: application/json" \
  -d '{
    "event_type": "signup",
    "external_user_id": "usr_demo_1",
    "email": "jane@example.com",
    "ip": "203.0.113.7"
  }'
```

You'll get back a verdict in under 100 ms:

```json
{ "id": "evt_…", "verdict": "allow", "reasons": [], "policy_version": "…" }
```

### See it in the dashboard

Open **Events** (the mode toggle defaults to **Test**) and your signup is
there, with its verdict and reasons.

</Steps>

## The path from here

The rest of the integration, in order:

1. [Keys and your first verdict in code](/integration/keys-first-verdict) —
   install the SDK, screen a real signup route.
2. [What to send for each event type](/integration/event-payloads) — canonical
   payloads and the fields that matter.
3. [Device fingerprinting](/integration/device-fingerprinting) — the browser snippet.
   Not optional if you take payments.
4. [Handling verdicts](/reference/handling-verdicts) — the `review` flow, webhooks, checkout
   patterns.
5. [Test mode and feedback](/integration/test-mode-feedback) — verify end to end,
   swap to live keys, report outcomes back.

Not on Node? The whole API is reachable over plain [REST](/reference/rest-api).