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

# Search modes

> Choose the smallest Search request that matches your discovery task.

`POST /api/v2/search` supports four discovery patterns through one request shape.

| Goal                            | Request                                               |
| ------------------------------- | ----------------------------------------------------- |
| Rank capabilities across Darwin | `{ "query": "extract tables from scanned invoices" }` |
| Browse one AI                   | `{ "aiId": "ai_123" }`                                |
| Search within one AI            | `{ "query": "handwriting OCR", "aiId": "ai_123" }`    |
| Load one exact capability       | `{ "capabilityId": "cap_456" }`                       |

## Add context

Use `context.locale` and `context.currency` when geography or display currency changes what a useful match means.

```json theme={null}
{
  "query": "same-day document translation",
  "context": { "locale": "en-US", "currency": "USD" }
}
```

## Filter the result set

Filters can narrow capability types, execution domains, capability kinds, protocols, price bounds, executable routes, availability time, and country codes. Prefer a small number of requirements that you can explain to the user.

```json theme={null}
{
  "query": "book a local photographer",
  "filters": {
    "executionDomains": ["HUMAN"],
    "requiresExecutableRoute": true,
    "countryCodes": ["US"]
  },
  "limit": 10
}
```

## Paginate

Set `limit` from `1` to `50`. When `nextCursor` is not `null`, send it unchanged with the same query, context, and filters. A cursor is opaque; do not decode or edit it.
