# client.audit.sign_ins

> client.audit.sign_ins — the audit.signIns operations.

`client.audit.sign_ins` — the `audit.signIns` operations.

On `AsyncKindgi` every method is the same, awaited.

## `client.audit.sign_ins.list()`

```python signature
list(
    *,
    limit: int | None = None,
    cursor: str | None = None,
    user_id: str | UUID | None = None,
    kind: Literal['signed-in', 'signed-out', 'sign-in-refused', 'sign-in-link-sent', 'sign-in-link-capped', 'sessions-revoked', 'sessions-ended'] | None = None,
    from_: str | None = None,
    to: str | None = None,
    order: Literal['asc', 'desc'] | None = None,
    timeout: float | None = None,
) -> AuditSignInsListResponse
```

List sign-in audit events. `GET /v1/audit/sign-ins`

The tenant's sign-in history: who signed in and out, how (`method`), when and from where (`clientAddress`), what was refused and why, and emailed links sent or capped. `?userId=` narrows to one person's own sign-ins and sign-outs. Oldest first; `?order=desc` for newest first. A tenant admin's to read (403 `permission-denied` otherwise). Only mounted when `CreateAppInput.auditEvents` is wired.
