---
title: "Confirm centering lines"
method: POST
path: "/v1/centering/confirm"
tags: ["centering"]
---

# Confirm centering lines

`POST /v1/centering/confirm`

## Request

- Base URL: `https://api.pokemontcgapi.com`
- URL: `https://api.pokemontcgapi.com/v1/centering/confirm`
- Auth: API key in header `X-Api-Key`

Send lines reviewed by a person for client-confirmed centering-only grade ceilings.

## Request body

- object
  - `face` 'front' | 'back', required
  - `card_size` 'standard' | 'small', required
  - `geometry` object, required: Image corners use EXIF-oriented pixels reduced to at most 2560 px. Lines use rectified pixels including padding: vertical x=intercept+slope*y, horizontal y=intercept+slope*x. Preserve rotations, corner_offset, warnings and positioning_sigma when editing.
    - `geometry_version` 1, required
    - `image` object, required
      - `width` integer, required
      - `height` integer, required
    - `corners` object[], required
      - `x` number, required
      - `y` number, required
    - `rectified` object, required
      - `width` integer, required
      - `height` integer, required
      - `rotations` integer
      - `corner_offset` integer
    - `lines` object, required
      - `cut` object, required
        - `left` object, required
          - `intercept` number, required
          - `slope` number, required
        - `right` object, required
          - `intercept` number, required
          - `slope` number, required
        - `top` object, required
          - `intercept` number, required
          - `slope` number, required
        - `bottom` object, required
          - `intercept` number, required
          - `slope` number, required
      - `print` object, required
        - `left` object, required
          - `intercept` number, required
          - `slope` number, required
        - `right` object, required
          - `intercept` number, required
          - `slope` number, required
        - `top` object, required
          - `intercept` number, required
          - `slope` number, required
        - `bottom` object, required
          - `intercept` number, required
          - `slope` number, required
    - `card_size` 'standard' | 'small', required
    - `warnings` string[]
    - `positioning_sigma` number
  - `confirmed_by` 'person', required

## Response `200`

Success

- object
  - `data` object, required
    - `status` 'ok', required
    - `code` 'OK', required
    - `face` 'front' | 'back', required
    - `card_size` 'standard' | 'small', required
    - `lr` object, nullable, required
      - `ratio` string, required
      - `major_percent` number, required
      - `minor_percent` number, required
      - `uncertainty_pp` number, required
      - `sigma_pp` number, required
      - `worst_station_px` number, required
      - `stations_major_percent` number[], required
    - `tb` object, nullable, required
      - `ratio` string, required
      - `major_percent` number, required
      - `minor_percent` number, required
      - `uncertainty_pp` number, required
      - `sigma_pp` number, required
      - `worst_station_px` number, required
      - `stations_major_percent` number[], required
    - `confidence` number, nullable, required
    - `warnings` string[], required
    - `ceilings` object, required
      - `PSA` object, required
        - `maximum_grade` number, nullable, required
        - `label` string, nullable, required
        - `rank` number, nullable, required
        - `limiting_face` 'front' | 'back', required
        - `limiting_axis` 'lr' | 'tb', required
        - `distance_to_next` number, nullable, required
        - `next_grade` number, nullable, required
        - `next_label` string, nullable, required
        - `borderline` boolean, required
        - `unconstrained` boolean, required
        - `source_status` 'official' | 'interpreted' | 'approximate', required
        - `standard_status` 'official' | 'interpreted' | 'approximate', required
        - `source` string, required
        - `sources` string[], required
        - `reviewed_at` string, required
        - `verification` string, required
      - `BGS` object, required
        - `maximum_grade` number, nullable, required
        - `label` string, nullable, required
        - `rank` number, nullable, required
        - `limiting_face` 'front' | 'back', required
        - `limiting_axis` 'lr' | 'tb', required
        - `distance_to_next` number, nullable, required
        - `next_grade` number, nullable, required
        - `next_label` string, nullable, required
        - `borderline` boolean, required
        - `unconstrained` boolean, required
        - `source_status` 'official' | 'interpreted' | 'approximate', required
        - `standard_status` 'official' | 'interpreted' | 'approximate', required
        - `source` string, required
        - `sources` string[], required
        - `reviewed_at` string, required
        - `verification` string, required
      - `CGC` object, required
        - `maximum_grade` number, nullable, required
        - `label` string, nullable, required
        - `rank` number, nullable, required
        - `limiting_face` 'front' | 'back', required
        - `limiting_axis` 'lr' | 'tb', required
        - `distance_to_next` number, nullable, required
        - `next_grade` number, nullable, required
        - `next_label` string, nullable, required
        - `borderline` boolean, required
        - `unconstrained` boolean, required
        - `source_status` 'official' | 'interpreted' | 'approximate', required
        - `standard_status` 'official' | 'interpreted' | 'approximate', required
        - `source` string, required
        - `sources` string[], required
        - `reviewed_at` string, required
        - `verification` string, required
      - `SGC` object, required
        - `maximum_grade` number, nullable, required
        - `label` string, nullable, required
        - `rank` number, nullable, required
        - `limiting_face` 'front' | 'back', required
        - `limiting_axis` 'lr' | 'tb', required
        - `distance_to_next` number, nullable, required
        - `next_grade` number, nullable, required
        - `next_label` string, nullable, required
        - `borderline` boolean, required
        - `unconstrained` boolean, required
        - `source_status` 'official' | 'interpreted' | 'approximate', required
        - `standard_status` 'official' | 'interpreted' | 'approximate', required
        - `source` string, required
        - `sources` string[], required
        - `reviewed_at` string, required
        - `verification` string, required
    - `advice` string, required
    - `elapsed_ms` number, required
    - `image_bytes` number, required
    - `normalizations` object[], required
      - `field` string, required
      - `input` union
        - number
        - string
      - `ratio` string
      - `note` string, required
    - `summary` string, required
    - `disclaimer` string, required
    - `basis` 'client-confirmed-lines', required
  - `meta` object, required
    - `elapsed_ms` number, required
    - `engine_version` string, required

## Other responses

- `400`: INVALID_PARAMETER
- `401`: MISSING_API_KEY
- `403`: PLAN_REQUIRED, TRIAL_EXPIRED
- `413`: PAYLOAD_TOO_LARGE
- `415`: UNSUPPORTED_MEDIA_TYPE
- `429`: QUOTA_EXCEEDED
- `503`: FEATURE_NOT_CONFIGURED

---

[API](https://skmtc.dev/pokemontcgapi/apis/pokemon-tcg-api.md) · [All operations](https://skmtc.dev/pokemontcgapi/apis/pokemon-tcg-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pokemontcgapi/apis/pokemon-tcg-api/revisions/9e4ee9a375da?raw)
