---
title: "Checked fields, capture metrics, thresholds, upload limits"
method: GET
path: "/v1/ai/documents/ktp-detection/info"
tags: ["documents:ktp-detection"]
---

# Checked fields, capture metrics, thresholds, upload limits

`GET /v1/ai/documents/ktp-detection/info`

## Request

- Base URL: `https://api.intura.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.intura.co/v1/ai/documents/ktp-detection/info`
- Auth: none declared

## Response `200`

Successful Response

- ModulesV1AiDocumentsKtpDetectionSchemasInfoResponse
  - `status` string: Always `success` on a 2xx
  - `code` integer: Mirrors the HTTP status code
  - `data` ModulesV1AiDocumentsKtpDetectionSchemasInfoData, required: What `GET .../info` publishes: what a caller can send and read. Everything describing how the gate is built — which artifacts are loaded, whether a reader is installed, how each capture metric is weighted — was here and is not any more. It told a caller nothing they could act on and told anyone else how the catalogue is assembled. Operators still get all of it from `Service.diagnostics()`, which `/readyz` reports and no key can reach.
    - `module` string, required
    - `version` string, required
    - `offline` boolean, required: True — no request leaves the machine.
    - `labels` string[], required: Every value `label` may take.
    - `fields_checked` string[], required: The printed field labels this gate looks for. Names only — these are the words on the blank card.
    - `other_documents` string[], required: The other Indonesian documents this gate can name when it sees one instead.
    - `quality_metrics` string[], required: The capture metrics measured on every upload, and the keys of `result.quality.metrics`. How each is weighted into the quality score is ours to tune.
    - `score` string, required: What `score` measures on this endpoint.
    - `thresholds` ThresholdInfo[], required: Every cut you can move — two on the document evidence, two on the capture — with Intura's default and the range each may be set inside. Send the ones you want in `thresholds` on the request; the rest keep the default.
      - `key` string, required: What to send in `thresholds` on a request, e.g. `block`.
      - `label` string, required: What crossing this cut does, in two or three words.
      - `description` string, required: When to move it, and which way.
      - `default` number, required: Intura's shipped value — the one in effect unless you change it.
      - `minimum` number, required: Lowest value accepted. Below this is a misconfiguration, not a policy.
      - `maximum` number, required: Highest value accepted.
    - `accepted_media_types` string[], required
    - `max_upload_mb` integer, required
    - `returns_card_values` boolean: True. When the frame is this card, `result.extraction` carries what is printed on it, plus a masked copy.

---

[API](https://skmtc.dev/intura/apis/intura-ai-api.md) - [All operations](https://skmtc.dev/intura/apis/intura-ai-api/llms.txt) - [OpenAPI document](https://skmtc.dev/intura/apis/intura-ai-api/revisions/7cb6af4c6390?raw)
