> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cyclemate.club/llms.txt
> Use this file to discover all available pages before exploring further.

# Get report status

> Poll a submitted report for its processing status and outcome summary

## Overview

Returns the current processing status of a report you submitted. Once analysis completes, typically within 15 minutes of submission, it also returns a one-line summary of the outcome.

Callers can only read reports they submitted: a user session token sees its own reports, and a partner API key sees reports submitted through the API. Anything else returns `404`.

### Authentication

This endpoint requires an API key. Include it in the `Authorization` header:

```
Authorization: Bearer YOUR_API_KEY
```

### Polling

A sensible cadence is every 1–2 minutes after submission until `summary` is non-null. Statuses can continue to change after the summary lands (e.g. `in_review` → `accepted` once a human reviewer acts).

## Path parameters

<ParamField path="id" type="number" required>
  The report ID returned by [`POST /reports`](/api-reference/reports/submit-report).
</ParamField>

## Response body

<ResponseField name="id" type="number">
  The report ID.
</ResponseField>

<ResponseField name="status" type="string">
  The processing lifecycle stage:

  | Value       | Meaning                                                                    |
  | ----------- | -------------------------------------------------------------------------- |
  | `received`  | Ingested and queued for analysis.                                          |
  | `in_review` | A reviewer is actively looking at the report.                              |
  | `accepted`  | The report was verified and acted on. The fix feeds the routing algorithm. |
  | `closed`    | The report was closed without a routing change.                            |
</ResponseField>

<ResponseField name="summary" type="string | null">
  One-line summary of how the report was processed: what was found and what happens next. `null` until analysis completes, typically within 15 minutes of submission.
</ResponseField>

<ResponseField name="issue_type" type="string">
  The category the report was submitted with.
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp of receipt.
</ResponseField>

<ResponseField name="updated_at" type="string">
  ISO 8601 timestamp of the latest status change; equals `created_at` until the first one.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl 'https://api.cyclemate.club/reports/1287/' \
    -H 'Authorization: Bearer YOUR_API_KEY'
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "id": 1287,
    "status": "accepted",
    "summary": "We verified the reported closure on Kingsland Road and have proposed a temporary routing avoidance pending review.",
    "issue_type": "road_closed",
    "created_at": "2026-08-05T10:12:31.201Z",
    "updated_at": "2026-08-05T10:24:02.847Z"
  }
  ```
</ResponseExample>

## Error responses

### 401 Unauthorized

Missing or invalid credentials.

```json theme={null}
{
  "error": "Missing Authorization header"
}
```

### 404 Not found

Unknown report ID, or a report your key did not submit.

```json theme={null}
{
  "error": "Report not found"
}
```

### 405 Method not allowed

Method other than `GET` on a report item.

```json theme={null}
{
  "error": "Method not allowed"
}
```

### 429 Too many requests

Rate limit exceeded. Includes a `Retry-After` header and a `retry_after_seconds` body field.

```json theme={null}
{
  "error": "Rate limit exceeded",
  "retry_after_seconds": 45
}
```

### 500 Internal server error

Unexpected server failure.

```json theme={null}
{
  "error": "Internal server error"
}
```
