---
title: "Poll a report job"
method: GET
path: "/api/v1/reports/{id}"
tags: ["reports"]
---

# Poll a report job

`GET /api/v1/reports/{id}`

## Request

- Base URL: `https://jointhestudentlife.com`
- URL: `https://jointhestudentlife.com/api/v1/reports/{id}`
- Auth: none required

## Path parameters

- `id` string, required

## Response `200`

Job status, with the result once succeeded.

- ReportJob
  - `id` string, required: Job id. Opaque: pass it back unchanged.
  - `type` 'city_comparison' | 'events_overview', required
  - `status` 'pending' | 'succeeded', required: pending right after POST; succeeded when polled. The report is built from the data at the moment you poll.
  - `created_at` string, date-time
  - `expires_at` string, date-time: 24 hours after creation. Polling after that gets 410.
  - `completed_at` string, date-time
  - `status_url` string, uri, required: Where to poll. Same as the Location header.
  - `poll_after_seconds` integer
  - `data_updated` string
  - `result` object: Present when status is succeeded. city_comparison: {cities: [...]}. events_overview: {total, by_type, by_ticket_status, events: [...]}.
  - `note` string

## Other responses

- `404`: Error
- `410`: Error
- `429`: Rate limited
- `default`: Error

---

[API](https://skmtc.dev/jointhestudentlife/apis/the-student-life-api.md) · [All operations](https://skmtc.dev/jointhestudentlife/apis/the-student-life-api/llms.txt) · [OpenAPI document](https://skmtc.dev/jointhestudentlife/apis/the-student-life-api/revisions/d04925a4902b?raw)
