---
title: "Submit map feedback into the learning loop"
method: POST
path: "/v1/feedback"
tags: ["Learning"]
---

# Submit map feedback into the learning loop

`POST /v1/feedback`

## Request

- Base URL: `https://geo.thinair.co`
- URL: `https://geo.thinair.co/v1/feedback`
- Auth: HTTP bearer

Learning surface — report a wrong/right/moved verdict on a geocoding answer. Seeds an evidence bundle and a pending entry in the validation-gated promotion queue; a human adjudicates before anything can change an answer. Authenticated; never metered (X-Quota-Cost: 0); limited to 20 submissions per day per key. `note` is retained for human review only and never reaches analytics.

## Request body

- FeedbackV1Request
  - `query` string: The original query text this feedback is about.
  - `place_id` string: Stable ThinAir place id the feedback is about.
  - `verdict` 'wrong' | 'right' | 'moved', required: 'wrong' — the answer is incorrect; 'right' — confirms the answer; 'moved' — the place exists but sits at different coordinates (pair with `suggested`).
  - `suggested` object: Suggested correct coordinates (WGS84).
    - `lat` number, required: Latitude in decimal degrees, WGS84.
    - `lon` number, required: Longitude in decimal degrees, WGS84.
  - `note` string: Free-text context for human review (≤280 chars). Stored in the evidence bundle only — never emitted to analytics.

## Response `202`

Feedback recorded into the promotion queue.

- FeedbackV1Response
  - `bundle_id` string, required
  - `queue_id` string: Promotion-queue reference. Absent when the queue write soft-failed (see warnings) — never a dangling id.
  - `class_key` 'feedback_contradiction' | 'feedback_confirmation', required
  - `status` 'recorded', required
  - `warnings` string[]: Soft-failure notices (e.g. evidence store unavailable). The feedback is still accepted.

## Other responses

- `400`: Invalid body (bad verdict, note > 280 chars, neither query nor place_id, …).
- `429`: Feedback daily limit (20/day per key) or plan quota exhausted.

---

[API](https://skmtc.dev/thinair/apis/thinair-geo-api.md) · [All operations](https://skmtc.dev/thinair/apis/thinair-geo-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thinair/apis/thinair-geo-api/revisions/8fac2d5e4b34?raw)
