> ## Documentation Index
> Fetch the complete documentation index at: https://ctrlrun-docs-python-3-13-3-14.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# ApprovalProvider

> How a human is asked, and how the answer comes back (SPEC-v0.1 §4.3).

`ctrlrun.ApprovalProvider` — class, defined at `src/ctrlrun/approval.py:304`

```python theme={null}
from ctrlrun import ApprovalProvider
```

```python theme={null}
class ApprovalProvider(Protocol)
    def request(action: Action, ttl: timedelta) -> ApprovalRequest
    def wait(request_id: str, timeout: timedelta | None) -> Approval | None
```

How a human is asked, and how the answer comes back (SPEC-v0.1 §4.3).

`runtime_checkable` so a test can assert the shipped providers still answer to this
shape; it checks method names only, which is why the static check matters more.

## Next

* [Python API index](/docs/reference/api/index).
* [Get started](/docs/get-started/quickstart) · [Why](/docs/why).
