:::endpoint GET /v1/admin/fraud/overrides

Every trader override of the firm. An override holds one trader to a different
level, different thresholds, or both, on one detector, with a reason and an
optional end: the traveller who needs eight countries a month instead of
three. A trader has at most one per detector, and trading rules take none.

With an end date it stops by itself, and stays here as ended.

Needs a firm. Our own staff name one with the `Propper-Workspace` header.

## Request

| Parameter        | Description |
| ---------------- | ----------- |
| `status`         | `active` (the default: no end, or an end still to come), `ended`, or `all` |
| `category`       | `ip`, `geo`, `device`, `linking`, `affiliate`, or `all` (the default) |
| `ending`         | `true` for only those in force that end within seven days. `false` is the default |
| `trader`         | Only the overrides of this trader, by id |
| `q`              | Search, up to 80 characters: the trader's name or email, the detector's key or name, or a whole override id |
| `sort`           | `-updated_at` (the default) last changed first, `expires_at` ending soonest first, or `name` by the trader's name. Overrides in force always come before ended ones, and one without an end sorts last by ending |
| `limit`          | How many, see [pagination](/docs/api/pagination) |
| `starting_after` | The `next_cursor` of the page before. A cursor only works with the `sort` it was handed out with |

```bash
curl "https://api.proppertrading.com/v1/admin/fraud/overrides?limit=2" \
  -H "Authorization: Bearer ptat_9f2c1a44_3b8e7d2f5c9a1b4e6d8f0a2c4e6b8d1f" \
  -H "Propper-Workspace: acme"
```

## Response

{
    "data": [
        {
            "object": "fraud_override",
            "id": "fovr_54gkvdr3wjevh3cm",
            "trader": {
                "id": "usr_fg2yda2mfnx9xpdr",
                "name": "Mia Tanaka",
                "email": "mia.tanaka.73@example.com"
            },
            "detector": "shared_ip",
            "detector_name": "Shared IP",
            "level": "monitor",
            "params": {},
            "reason": "Shares a flat with another trader, both verified.",
            "expires_at": null,
            "active": true,
            "created_by": null,
            "created_at": "2026-09-04T19:26:51+00:00",
            "updated_at": "2026-10-10T19:26:51+00:00",
            "action_url": "/admin/fraud/overrides?override=fovr_54gkvdr3wjevh3cm"
        },
        {
            "object": "fraud_override",
            "id": "fovr_n936unrak5zz8u2k",
            "trader": {
                "id": "usr_3mc4m89ax3excay2",
                "name": "Tomasz Ahmed",
                "email": "tomasz.ahmed.71@example.com"
            },
            "detector": "max_countries",
            "detector_name": "Too many countries",
            "level": null,
            "params": {
                "max_countries": 8
            },
            "reason": "Travels for work, asked by e-mail for more countries a month.",
            "expires_at": "2026-12-09T19:26:51+00:00",
            "active": true,
            "created_by": null,
            "created_at": "2026-09-09T19:26:51+00:00",
            "updated_at": "2026-10-10T19:26:51+00:00",
            "action_url": "/admin/fraud/overrides?override=fovr_n936unrak5zz8u2k"
        }
    ],
    "meta": {
        "request_id": "req_01m50zcm83seckaf9sp2b17qc5",
        "has_more": true,
        "next_cursor": "eyJzIjoiLXVwZGF0ZWRfYXQiLCJ2IjpbMCwiLTE3OTE2NjA0MTEuMDAwMDAwIl0sImlkIjoiZm92cl9uOTM2dW5yYWs1eno4dTJrIn0"
    }
}

| Field           | Description |
| --------------- | ----------- |
| `trader`        | Null when the trader deleted their account |
| `detector`      | The detector's key. `detector_name` is its name in words |
| `level`         | The level it holds the trader to, or null to keep the firm's |
| `params`        | Only the thresholds it changes, by key, `{}` for none |
| `reason`        | Why, for whoever opens it next. Null when nobody wrote one |
| `expires_at`    | When it stops by itself, null for never |
| `active`        | Whether it is in force |
| `created_by`    | Who made it, by name |

## Errors

| Status | Code                      | Meaning                                                                                                    |
| ------ | ------------------------- | ---------------------------------------------------------------------------------------------------------- |
| 400    | `workspace_required`      | Asked by our own staff without naming a firm                                                               |
| 400    | `validation_failed`       | `status`, `category` or `ending` is not one of its values, `trader` is not a trader id, or `q` is not text |
| 400    | `invalid_sort`            | `sort` is not one of the three orders                                                                      |
| 400    | `invalid_limit`           | `limit` is not a positive integer                                                                          |
| 400    | `invalid_cursor`          | `starting_after` is not a cursor handed out for this `sort`                                                |
| 401    | `invalid_token`           | Not a token, or the secret does not match                                                                  |
| 401    | `revoked_token`           | Signed out here or from another device                                                                     |
| 401    | `expired_token`           | Ninety days without use, or a set expiry passed                                                            |
| 403    | `admin_access_required`   | This account no longer helps run the environment                                                           |
| 403    | `insufficient_scope`      | This device does not hold `admin:read`                                                                     |
| 403    | `workspace_not_permitted` | The `Propper-Workspace` header names an environment this account cannot act in                             |
| 403    | `forbidden`               | Without `view_fraud`                                                                                       |