---
title: "ODI complaints for a model year, paged"
method: GET
path: "/v2/safety/{ref}/complaints"
tags: ["safety"]
---

# ODI complaints for a model year, paged

`GET /v2/safety/{ref}/complaints`

## Request

- Base URL: `https://api.cardog.app`
- URL: `https://api.cardog.app/v2/safety/{ref}/complaints`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

## Path parameters

- `ref` string, required

## Query parameters

- `page` integer
- `limit` integer

## Response `200`

Complaints, newest first

- Complaints
  - `modelYearRef` string, nullable, required: Null when the query covered more than one model year
  - `totalCount` integer, required
  - `complaints` object[], required
    - `ref` string, required: Ref of the complaint: "complaint:nhtsa/{odino}", where odino is the NHTSA ODI number. NHTSA publishes one row per affected component under the same number, so this ref identifies the complaint, not a single row.
    - `modelYearRef` string, nullable, required: Entity ref ({domain}:{key}) in the "model-year" domain. Example: "model-year:toyota/rav4/2021"
    - `component` string, nullable, required
    - `summary` string, nullable, required
    - `incidentDate` string, nullable, required: Date of the incident (ISO date, YYYY-MM-DD)
    - `filedDate` string, nullable, required: Date the complaint was filed (ISO date, YYYY-MM-DD)
    - `crash` boolean, nullable, required
    - `fire` boolean, nullable, required
    - `injuries` integer, nullable, required
    - `deaths` integer, nullable, required
    - `source` string, required: Source of the complaint: "nhtsa". Other values may be added.
  - `pagination` object, required
    - `page` integer, required
    - `limit` integer, required
  - `links` object: Related resources, keyed by relation name, each a server-relative path. Example: {"recalls": "/v2/recalls/entity/model-year:toyota/rav4/2021"}

## Other responses

- `400`: Invalid request — grammar failure or unknown-but-well-formed refs, NAMED in `refs`/`details`, with nearest-ref `suggestions` where computable. Never a fuzzy fallback.
- `401`: No valid credential (API key, session, or internal token)
- `404`: Resource not found
- `429`: Per-minute rate limit exceeded
- `500`: Internal error

---

[API](https://skmtc.dev/cardog/apis/cardog-api-v2.md) · [All operations](https://skmtc.dev/cardog/apis/cardog-api-v2/llms.txt) · [OpenAPI document](https://skmtc.dev/cardog/apis/cardog-api-v2/revisions/b9d48193126f?raw)
