
# Get a bulk password reset job

`GET /v1/jobs/password-resets/{job_id}` · permission `user-credentials:write`

Returns the status and counters of a job created with [Create a bulk password reset job](/docs/api/management/jobs/create-password-reset). No personal data is returned. `status` moves through:

- `marking`: the selected passwords are being flagged; `marked` grows.
- `waiting`: `lazy_then_bulk_reset` only; flagging is done (`marked_at`) and the job waits for `deadline_at`.
- `resetting`: `lazy_then_bulk_reset` only; the deadline passed and the passwords of users who have not changed them are being deleted (`passwords_deleted`), with a reset email for those who have a verified primary address (`emailed`).
- `completed`: the job is done (`completed_at`). An `on_login` job completes as soon as flagging is done.

`total` is the number of distinct users for a `user_ids` job and `0` for a `hash_algo` job; `not_found` counts ids that are not users of this environment or have no password.

## Request

| Parameter | In | Required | Description |
|---|---|---|---|
| `job_id` | path | yes | Job id, prefixed `job_`. |

## Response

`200 OK`.

```json
{
  "id": "job_01h455vb4pex5vsknk084sn02q",
  "mode": "on_login",
  "filter": "user_ids",
  "status": "completed",
  "total": 3,
  "marked": 2,
  "not_found": 1,
  "passwords_deleted": 0,
  "emailed": 0,
  "created_at": "2026-01-15T09:30:00Z",
  "marked_at": "2026-01-15T09:31:00Z",
  "completed_at": "2026-01-15T09:31:00Z"
}
```

## Errors

Every error is an `application/problem+json` body with a stable `code`.

| HTTP | `code` | When |
|---|---|---|
| 401 | `unauthenticated` | The API key is missing, invalid or revoked. |
| 403 | `insufficient_permissions` | The key lacks the `user-credentials:write` permission. |
| 404 | `not_found` | The job does not exist in this environment (or the id is malformed). |
| 429 | `rate_limited` | The rate limit was exceeded; honor `Retry-After`. |
| 503 | `service_unavailable` | A dependency is temporarily unavailable; retry later. |

## Example

```bash
curl https://api.eu.keenauth.com/v1/jobs/password-resets/job_01h455vb4pex5vsknk084sn02q \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI: `keenauth jobs password-resets get job_01h455vb4pex5vsknk084sn02q`
