---
title: "Read back a report you filed"
method: GET
path: "/v2/feedback/{id}"
tags: ["feedback"]
---

# Read back a report you filed

`GET /v2/feedback/{id}`

## Request

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

Returns the report's `status` and, once triaged, its `resolution`. Only the key or session that filed a report can read it; any other id is a 404.

## Path parameters

- `id` string, required

## Response `200`

The report and what happened to it

- Feedback
  - `id` string, required: Report id, e.g. "fb_01J8Z3K5V6W7X8Y9Z0A1B2C3D4"
  - `kind` 'decode_miss' | 'decode_dispute' | 'recall_dispute' | 'spec_dispute' | 'listing_report' | 'resolve_miss' | 'other', required: What is being reported. "decode_miss": a VIN we could not decode. "decode_dispute": a VIN we decoded to the wrong vehicle. "recall_dispute", "spec_dispute", "listing_report", "resolve_miss" and "other" are accepted and stored; their resolution reads "queued" until they are routed.
  - `subject` object, required: The subject as submitted
    - `vin` string
    - `ref` string
    - `listing_id` string
  - `status` 'received' | 'triaged' | 'accepted' | 'rejected' | 'shipped', required: "received" on submit. "triaged" once an operator has looked at it. "accepted" or "rejected" is the verdict. "shipped" means the fix is live; `resolution.fixed_in` names the version.
  - `received_at` string, required: When the report was received (ISO 8601)
  - `resolution` object, nullable, required: Null until triaged, except for kinds no lane acts on yet, which read outcome "queued"
    - `outcome` 'queued' | 'accepted' | 'rejected' | 'shipped', required: "queued" while no lane acts on this kind yet; otherwise the triage verdict
    - `note` string, nullable, required: Operator note, when there is one
    - `fixed_in` string, nullable, required: Version that carries the fix, e.g. a decoder release. Null until shipped.
    - `resolved_at` string, nullable, required: When the verdict was reached (ISO 8601)
  - `links` object, required: Server-relative paths. Always includes "self"; includes "subject" when the subject has a v2 resource.

## 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)
- `403`: Credential lacks the scope for this route group (`forbidden`)
- `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)
