---
title: "Poll report status or list all reports"
method: GET
path: "/api/v0/report"
tags: ["Reports"]
---

# Poll report status or list all reports

`GET /api/v0/report`

## Request

- Base URL: `https://api.datalastic.com`
- URL: `https://api.datalastic.com/api/v0/report`
- Auth: one of:
  - API key in header `x-api-key`
  - API key in query parameter `api-key`
- TypeScript: <https://skmtc.dev/datalastic/apis/datalastic-maritime-api/docs/api/v0/report/get.ts> (a function with typed inputs; its response is checked against the schema)

Check the status of a report job by `report_id`. Pass `report_id=_all`
to list every report generated with your key.

When `status` is `_DONE_` the response includes `result_url` for
downloading the ZIP. Every status call returns a fresh signed link,
valid for another 6 hours.

**Credit cost:** free. A report is charged once, when it is submitted.
Checking its status afterwards costs nothing, however many times you
do it, and neither does collecting a fresh download link.

## Query parameters

- `report_id` string, required

## Response `200`

Report status (and download URL when DONE).

- object
  - `data` union
    - ReportJob
      - `report_id` string
      - `status` '_PENDING_' | '_IN_PROGRESS_' | '_DONE_' | '_FAILED_': Job state. Values are wrapped in underscores. A job can move between `_PENDING_` and `_IN_PROGRESS_` more than once before it finishes. `_FAILED_` is terminal: the report is not retried and never gets a `result_url`.
      - `report_type` string
      - `params` union: The filter parameters the job was submitted with.
        - object
        - string
      - `message` string, nullable: Plain-language reason the job failed. Populated when status is `_FAILED_`.
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `result_url` string, uri, nullable: Signed ZIP download URL, populated only when status is `_DONE_`. The link is valid for 6 hours from when it is issued and returns 403 once it expires. Poll the report again for a fresh link. That is free and does not re-run the report. Use the whole URL including its query string, and request it with GET, not HEAD.
    - ReportJob[]
      - `report_id` string
      - `status` '_PENDING_' | '_IN_PROGRESS_' | '_DONE_' | '_FAILED_': Job state. Values are wrapped in underscores. A job can move between `_PENDING_` and `_IN_PROGRESS_` more than once before it finishes. `_FAILED_` is terminal: the report is not retried and never gets a `result_url`.
      - `report_type` string
      - `params` union: The filter parameters the job was submitted with.
        - object
        - string
      - `message` string, nullable: Plain-language reason the job failed. Populated when status is `_FAILED_`.
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `result_url` string, uri, nullable: Signed ZIP download URL, populated only when status is `_DONE_`. The link is valid for 6 hours from when it is issued and returns 403 once it expires. Poll the report again for a fresh link. That is free and does not re-run the report. Use the whole URL including its query string, and request it with GET, not HEAD.
  - `meta` Meta
    - `duration` number, float: Server-side query time in seconds.
    - `endpoint` string
    - `success` boolean
    - `next` string: Pagination token. Present on paginated endpoints (`/vessel_find`) only when more results exist. Pass it back as the `next` query parameter to fetch the following page.

## Other responses

- `400`: Missing required parameter or invalid parameter value.
- `401`: Invalid or expired API key.
- `402`: API key is valid but the credit balance is exhausted or the subscription has expired. Purchase more credits to continue.
- `404`: Requested vessel, port, or resource was not found. No credits deducted.
- `429`: More than 600 API calls in a single minute. The response carries a `Retry-After` header with the wait in seconds. Use it for backoff.
- `500`: Server-side error. Retry the request.

## Changes

- **2026-09-08** `a29cf323d1c3`: 9 warning, 21 info
  - deleted the `query` request parameter `api-key`
  - added the new `_DONE_` enum value to the `data/oneOf[#/components/schemas/ReportJob]/status` response property for the response status `200`
  - added the new `_DONE_` enum value to the `data/oneOf[subschema #2]/items/status` response property for the response status `200`
  - added the new `_FAILED_` enum value to the `data/oneOf[#/components/schemas/ReportJob]/status` response property for the response status `200`
  - …26 more

[Operation history](https://skmtc.dev/datalastic/apis/datalastic-maritime-api/changes/api/v0/report/get.md)

---

[API](https://skmtc.dev/datalastic/apis/datalastic-maritime-api.md) - [All operations](https://skmtc.dev/datalastic/apis/datalastic-maritime-api/llms.txt) - [OpenAPI document](https://skmtc.dev/datalastic/apis/datalastic-maritime-api/revisions/2097cdbffcb4?raw)
