---
title: "Verify one or many T-numbers"
method: GET
path: "/v1/verify"
tags: ["Verification"]
---

# Verify one or many T-numbers

`GET /v1/verify`

## Request

- Base URL: `https://jp-verify.obolpay.xyz`
- URL: `https://jp-verify.obolpay.xyz/v1/verify`
- Auth: one of:
  - none
  - API key in header `X-API-Key`

## Query parameters

- `number` string: a single T-number
- `numbers` string: comma-separated T-numbers
- `corporate_number` string: reverse lookup: a 13-digit 法人番号 (Corporate Number). A qualified-invoice number is T + the 法人番号 for corporations, so this resolves deterministically to its T-number and verifies it.
- `sign` integer
- `include` string: comma-separated add-ons. `shareholders` embeds each corporate result's full `major_shareholders` block (holders[] and filings[]) instead of the free compact object, and costs +1 unit per result that actually carries rows (`status: available`); a status-only answer costs nothing extra. Ignored where the feature is off.

## Headers

- `X-API-Key` string

## Response `200`

One record per well-formed input number (a `not_registered` or `invalid` record carries every documented key, null where the register has nothing to say — never an absent key); malformed inputs are listed under `invalid[]`, unmetered. The example is the real response of this code on a sample register.

- unknown

## Other responses

- `400`: Malformed input — refused before metering; nothing was charged.
- `401`: Unknown, inactive, or expired API key.
- `422`: Validation Error
- `429`: Quota exceeded for the caller's tier.
- `503`: The register, or an optional feature, is unavailable or not configured on this deployment. A register 503 (since 1.4.1) also carries the mirror's `data_as_of` with the source fields — `source_latest_diff_date` (the newest 差分 the NTA 公表サイト listed when the sync last read it), `source_checked_at`, `source_gap_business_days` and `freshness.rule` (`stale` here) — so a caller can tell a mirror that is behind its source (`data_date` older than `source_latest_diff_date`) from a source that has not published (equal, but `source_checked_at` older than `freshness.source_check_max_hours`); `data_as_of` is null when the mirror is absent. Nothing was charged.

---

[API](https://skmtc.dev/obolpay/apis/jp-verify.md) · [All operations](https://skmtc.dev/obolpay/apis/jp-verify/llms.txt) · [OpenAPI document](https://skmtc.dev/obolpay/apis/jp-verify/revisions/bf8851690df0?raw)
