# Get Scan Status

Get the status of a specific scan job.

**Endpoint**: `GET /api/scanner/status/:jobId`
**Auth**: Required (Admin only)

## Path Parameters

| Parameter | Type          | Required | Description   |
| --------- | ------------- | -------- | ------------- |
| jobId     | string (UUID) | Yes      | Scan job UUID |

## Request Headers

| Header        | Type   | Required | Description                         |
| ------------- | ------ | -------- | ----------------------------------- |
| Authorization | string | Yes      | Bearer token (must have admin role) |

### Example Request

```http
GET /api/scanner/status/550e8400-e29b-41d4-a716-446655440000
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```

## Response (200 OK)

```json
{
  "job_id": "uuid",
  "library_id": "uuid",
  "status": "in_progress",
  "started_at": "2026-02-08T10:00:00Z",
  "updated_at": "2026-02-08T10:05:00Z",
  "progress": {
    "total_files": 1523,
    "scanned_files": 850,
    "added_files": 125,
    "updated_files": 45,
    "failed_files": 3,
    "percentage": 55.8
  },
  "errors": [
    {
      "file_path": "/path/to/file.epub",
      "error": "Invalid EPUB format"
    }
  ]
}
```

## Status Values

| Status      | Description                |
| ----------- | -------------------------- |
| pending     | Job is queued              |
| in_progress | Job is currently running   |
| completed   | Job completed successfully |
| failed      | Job failed with errors     |
| cancelled   | Job was cancelled          |

## Error Responses

| Code | Description                         |
| ---- | ----------------------------------- |
| 401  | Invalid or expired token            |
| 403  | User does not have admin privileges |
| 404  | Job not found                       |
