JSON検証API

LLMが出力したJSONや外部APIのレスポンスを、1回の呼び出しで構文・型・必須項目・余剰項目まで検証。 結果は日本語のエラー説明と、LLMにそのまま再送できる修正指示テキストで返します。

5分で試す

1. APIキーを取得します(無料枠 月100件): 無料APIキーの申込フォーム (申込後、運営者が手動でキーを発行してお送りします)。
 自分のPCで試す場合は、リポジトリの README の手順で python -m jsonvalidator.cli issue --label me を実行するとキーが表示されます(BASE_URL=http://localhost:8080)。
2. 次の cURL を実行します(YOUR_API_KEY を置き換え、BASE_URL は公開URL)。

curl -X POST "$BASE_URL/validate" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "json": "{\"name\": \"太郎\", \"age\": \"20\"}",
    "schema": {
      "type": "object",
      "properties": {"name": {"type": "string"}, "age": {"type": "integer"}},
      "required": ["name", "age"],
      "additionalProperties": false
    }
  }'

レスポンス例:

{
  "valid": false,
  "error_count": 1,
  "errors_truncated": false,
  "errors": [
    {
      "code": "type",
      "path": "$.age",
      "message": "$.age の型が違います。整数である必要がありますが、文字列が渡されました。",
      "fix": "$.age を整数の値に直してください。",
      "position": null
    }
  ],
  "retry_prompt": "直前に出力されたJSONに問題がありました。次の点をすべて修正し、JSONだけを出力し直してください。\n1. [$.age] $.age を整数の値に直してください。",
  "usage": {"used": 1, "limit": 100, "month": "2026-11"}
}

Python の例

import requests

schema = {"type": "object",
          "properties": {"name": {"type": "string"}, "age": {"type": "integer"}},
          "required": ["name", "age"]}

llm_output = '{"name": "太郎", "age": "20"}'   # LLM が返した文字列

res = requests.post(
    f"{BASE_URL}/validate",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={"json": llm_output, "schema": schema},
    timeout=10,
)
data = res.json()
if not data["valid"]:
    # LLM にそのまま再送できる修正指示
    print(data["retry_prompt"])

API リファレンス

POST /validate

認証: X-API-Key: <キー> または Authorization: Bearer <キー>

項目型説明
json文字列(必須)検証したいJSON文字列(LLMの出力そのまま)
schemaオブジェクト(任意)JSON Schema。省略すると構文のみ検証。外部 $ref は非対応
lang"ja" | "en"(任意)エラー文の言語。既定 "ja"

レスポンスの主な項目: valid(合否)、errors[](code / path / message / fix / position)、 retry_prompt(不合格時のみ)、usage(今月の利用数)。エラーは最大50件まで返し、超過分は errors_truncated: true になります。

ステータスコード

コード意味
200検証を実施(合否は valid を参照。JSONが不正でも 200)
401APIキーが無効
413リクエストが大きすぎる(上限 100,000 バイト)
422リクエスト形式または schema が不正(入れ子が深すぎる schema を含む。利用回数は消費しません)。PATTERN_LIMIT_EXCEEDED: pattern が長すぎる/多すぎる(1つ256文字・1スキーマ20個まで)。VALIDATION_TIMEOUT: 検証が制限時間(2秒)を超えて中断(pattern を単純にし、入れ子の繰り返しを避けてください)
429月間上限超過(quota_exceeded)、またはレート制限(rate_limited、Retry-After 付き。1キーあたり毎分60回)

正規表現(pattern)の制限

スキーマの pattern / patternProperties の評価には時間制限(2秒)と長さ制限(1つ256文字、1スキーマ20個まで)があります。超えた場合は日本語のエラーを返します。

対応するエラー種別(code)

json_syntax(構文)、type(型違い)、required(必須欠落)、additional_properties(余剰項目)、 enum、const、minimum/maximum 系、min_length/max_length、pattern、format、 min_items/max_items、unique_items、one_of_*/any_of/not ほか。

料金

プラン内容
無料月100件

有料プランは準備中です。

プライバシーと制限