# Options and configuration

Pass an `ExtractOptions` or `SchemaOptions` instance for readable request controls. You may also pass a mapping with the wire keys shown below.

## Extract options

```python
from makra import ExtractOptions, ProxyRegion, ValidationModes

options = ExtractOptions(
    validation_mode=ValidationModes.OBSERVE,
    additional_pages=2,
    pagination_enabled=True,
    title_enabled=True,
    post_ready_wait_ms=1500,
    proxy_region=ProxyRegion.country("DE"),
    recovery_retry=True,
    recovery_retry_delay_ms=2000,
)
```

| Field | Type | Meaning |
| --- | --- | --- |
| `validation_mode` | `observe`, `repair`, or `None` | Report findings only or permit correction |
| `additional_pages` | Non-negative integer or `None` | Number of follow pages |
| `pagination_enabled` | Boolean or `None` | Explicit pagination switch |
| `title_enabled` | Boolean or `None` | Request generated run title behavior |
| `post_ready_wait_ms` | Integer from 0 through 120000 | Extra wait after page readiness |
| `proxy_region` | `ProxyRegion` or `None` | Egress region request |
| `recovery_retry` | Boolean or `None` | Enable one crawler recovery retry |
| `recovery_retry_delay_ms` | Integer from 0 through 300000 | Delay before recovery retry |

Setting `additional_pages` without `pagination_enabled` enables pagination. A value of zero remains an explicit enabled request with no follow pages.

## Schema options

`SchemaOptions` accepts the shared crawler fields only.

```python
from makra import ProxyRegion, SchemaOptions

options = SchemaOptions(
    post_ready_wait_ms=1000,
    proxy_region=ProxyRegion.continent("europe"),
    recovery_retry=True,
)
```

## Proxy regions

Use `ProxyRegion.worldwide()`, `ProxyRegion.continent(value)`, or `ProxyRegion.country(value)`. Country values are ISO 3166-1 alpha-2 codes and are normalized to uppercase. Continent values are `africa`, `asia`, `europe`, `north.america`, `oceania`, and `south.america`.

Regional routing changes where the request exits. It does not bypass access controls or guarantee localized content.

## Mapping form

```python
config = {
    "validation_mode": "observe",
    "pagination": {"enabled": True, "additional_pages": 2},
    "title": {"enabled": True},
    "crawler": {
        "post_ready_wait_ms": 1500,
        "proxy": {
            "region": {"scope": "country", "value": "DE"},
        },
        "recovery": {"retry": True, "retry_delay_ms": 2000},
    },
}
```

The SDK translates recovery keys to the API's wire names. Public config keys removed from the SDK, including `memory`, `selector_chain_version`, and extract-level `audit`, raise `ValueError`.

Use [Client reference](/markdown/makra-sdk/v0.0.4-beta/reference/client) for where each options type is accepted.
