Confirm a match

POST /api/v1/vision/identify/{feedback_id}/confirm read:catalog

Report the card your user kept for an earlier identification — the `match`, another candidate, or a printing sibling from `variants`. This is the learning loop: every confirmation feeds the same training the cardOS scanner’s confirmations do (the photo is indexed against the confirmed card, and near-misses are recorded as confusion pairs), so accuracy improves for your capture conditions over time. Free.

Confirm once per identification, with the card the user finally kept. Sending the confirmation a few hundred milliseconds after the identify response is fine — the identification record is retried for briefly if it has not landed yet.

A confirmation is a training label, so only send what a person actually chose. Do not auto-confirm `match` without the user seeing it; if you want that signal, simply do nothing — an unconfirmed identification is neutral.

Try it POST /api/v1/vision/identify/%7Bfeedback_id%7D/confirm write

These inputs are shared across all docs pages, so an id entered here carries over.

request body
object · 1 keys
{
  "card_id": "swshp_ja-104vh"
}
response

Not run yet. Press Run to make a live call against https://service.rip.fun (through this demo's server-side proxy; the API key never reaches the browser).

curl (tracks the inputs above)
curl -X POST 'https://service.rip.fun/api/v1/vision/identify/%7Bfeedback_id%7D/confirm' \
  -H 'X-API-Key: rip_…' \
  -H 'Content-Type: application/json' \
  -d '{"card_id":"swshp_ja-104vh"}'

Request fields

FieldTypeRequiredDescription
feedback_idnumberyesPath parameter: the `feedback_id` from the identify response.
card_idstringyesThe catalog id of the card the user kept — a candidate’s `card.id`, or a `variants[].card_id`.

Response fields (data)

FieldDescription
feedback_idEcho of the identification confirmed.
card_idEcho of the confirmed card.
was_top_match`true` when the confirmed card was our `match`, `false` when the user picked something else, `null` when we had no match to compare against.

Errors

StatusCodeWhen
400invalid_feedback_id`feedback_id` is not a positive integer
400card_id_requiredno `card_id` string in the body
404feedback_not_foundno identification with that `feedback_id` — they are kept, so this means a typo or an id from another environment
429rate_limitedover 120 confirmations/minute for the key

See Errors for the response envelope and the full code list.