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

# Domains

> Search types, options, and request payload patterns for Osintly API integrations.

Use this page as a quick reference for valid search types and options used by `POST /search`.

***

## Supported search types

| Type value       | Typical input        |
| ---------------- | -------------------- |
| `Pseudonym`      | `john_doe`           |
| `Email Address`  | `target@example.com` |
| `Domain Name`    | `example.com`        |
| `Cryptocurrency` | Wallet address       |
| `IP Address`     | `8.8.8.8` or IPv6    |

<Note>
  These values must match the OpenAPI enum exactly.
</Note>

***

## Request shape

```json theme={null}
{
  "query": {
    "type": "Email Address",
    "value": "target@example.com"
  },
  "features": {
    "breached_accounts": true,
    "registered_accounts": "include"
  },
  "cache": {
    "mode": "prefer"
  },
  "delivery": {
    "webhook": {
      "url": "https://client.example/webhooks/osintly",
      "secret": "super-secret-webhook-key"
    }
  }
}
```

***

## Request sections

| Field      | Type     | Notes                                                                       |
| ---------- | -------- | --------------------------------------------------------------------------- |
| `query`    | `object` | Required. Contains `type` and `value`.                                      |
| `modules`  | `object` | Optional. Use `mode: "selected"` plus `ids` to restrict execution.          |
| `leaks`    | `object` | Optional. Use `mode: "selected"` plus `sources` to restrict leak providers. |
| `features` | `object` | Optional. Controls `breached_accounts` and `registered_accounts`.           |
| `cache`    | `object` | Optional. Use `mode: "bypass"` to force a fresh execution.                  |
| `delivery` | `object` | Optional. Configure `delivery.webhook`.                                     |

***

## Module selection behavior (`modules`)

Use `modules` when you want to restrict execution to a known set of modules.

```json theme={null}
{
  "query": {
    "type": "Email Address",
    "value": "target@example.com"
  },
  "modules": {
    "mode": "selected",
    "ids": [
      "4a8cbb96-70df-4bd6-8f4a-9c0bf5ffde1f",
      "95c36c17-f76e-4911-bd4e-8ea57515b2fb"
    ]
  }
}
```

Server-side validation rules:

* Every module ID must exist
* Every module ID must be listed and currently available
* Every module ID must be compatible with the selected `query.type`

Default behavior:

* If `options.modules` is omitted or empty, Osintly runs the default module set for that search type
* If `modules` is omitted, Osintly runs the default module set for that search type
* If `modules.mode` is `selected`, execution is limited to `modules.ids`

If validation fails, the API returns `400` with an explicit validation error.

***

## ID and pagination parameters

* `id` (path): search UUID
* `source` (path): leak provider source code/name
* `page` (query): leak source page number, minimum `1`

***

## Common errors

<AccordionGroup>
  <Accordion title="400 Validation error" icon="triangle-exclamation">
    Request shape or field values are invalid. Check enum values and data types.
  </Accordion>

  <Accordion title="401 Unauthorized" icon="key">
    Missing or invalid bearer token.
  </Accordion>

  <Accordion title="429 Rate limit exceeded" icon="gauge-high">
    Respect retry headers and retry after the reset window.
  </Accordion>

  <Accordion title="503 Dispatch unavailable" icon="server">
    Search creation failed at dispatch layer. Retry with backoff.
  </Accordion>
</AccordionGroup>
