# Individual Holmes

Individual Holmes queries an external bureau or one of Stark Infra's internal datasets to investigate an individual (CPF). Each request targets a single bureau through the `type` path parameter and returns that bureau's payload under a key named after the `type` queried.

Use Individual Holmes to run KYC, anti-fraud, judicial, sanctions and federal-revenue checks on a person before onboarding, granting credit or releasing a high-risk operation. Every call is synchronous, scoped to your workspace and logged on Stark Infra's side — there is no resource lifecycle to track.

### Query an Individual Bureau

`GET /individual-holmes/:searchKey/:type`

Path params identify what to look up. The `searchKey` is a CPF (11 digits, masked or unmasked) for every bureau except `internationalPep`, where it is the person's full name. The `type` selects the bureau and the shape of the response.

Query params control paging. Only `civil` and `criminal` (JusBrasil) honour `cursor` — repeat the request with the returned cursor to fetch the next page.

**Parameters**

| Name | Required | Description |
| --- | --- | --- |
| `searchKey` | REQUIRED | CPF of the individual being investigated, masked or unmasked. Example: `012.345.678-90`. For the `internationalPep` bureau, send the person's full name instead. |
| `type` | REQUIRED | Bureau to query. Options: `civil`, `criminal`, `frauds`, `data`, `dict`, `kyc`, `nationalPep`, `internationalPep`, `jointResolution6`, `csnu`, `federalRevenueRegistry`, `deceased`, `negativeMedia`. |
| `limit` | OPTIONAL | Maximum number of items per page for paginated bureaus. Integer in the `1..100` range. Defaults to `100`. |
| `cursor` | OPTIONAL | Opaque page token returned by the previous call. Only meaningful for `civil` and `criminal`; ignored by every other bureau. |

**Request**

```python
import starkinfra

result = starkinfra.request.get(
    path="/individual-holmes/01234567890/kyc"
).json()

print(result)
```

**Response**

```python
The payload key and its inner shape depend on the bureau "type" queried. For each type (civil, criminal, frauds, data, dict, kyc, nationalPep, internationalPep, jointResolution6, csnu, federalRevenueRegistry, deceased, negativeMedia) the response is documented in the corresponding section of the <a href="/get-started/individual-holmes" class="link">get-started</a>.
```

## Available Languages

Code samples on this page are in Python. The same content is available with samples in:

- [Python](https://docs.starkinfra.com/api/v2/individual-holmes-python.md)
- [Node.js](https://docs.starkinfra.com/api/v2/individual-holmes-node.md)
- [PHP](https://docs.starkinfra.com/api/v2/individual-holmes-php.md)
- [Java](https://docs.starkinfra.com/api/v2/individual-holmes-java.md)
- [Ruby](https://docs.starkinfra.com/api/v2/individual-holmes-ruby.md)
- [Elixir](https://docs.starkinfra.com/api/v2/individual-holmes-elixir.md)
- [.NET](https://docs.starkinfra.com/api/v2/individual-holmes-dotnet.md)
- [Go](https://docs.starkinfra.com/api/v2/individual-holmes-go.md)
- [Clojure](https://docs.starkinfra.com/api/v2/individual-holmes-clojure.md)
- [cURL](https://docs.starkinfra.com/api/v2/individual-holmes-curl.md)
