Liveness Detection API English

なりすまし判定 API リファレンス

なりすまし判定 API(Liveness Check API)の全エンドポイント仕様です。はじめてご利用の方は、先に クイックスタートガイド をご覧ください。

基本情報

項目
API ベース URL https://liveness.api.pas-ta.io
顧客ダッシュボード https://liveness.api.pas-ta.io/console/dashboard
コンテンツタイプ application/json
文字コード UTF-8
API バージョン(URL パス) v1

認証

本 API には2種類の認証方式があります。

対象 方式 用途
判定 API(/v1/* X-API-Key ヘッダー お客様のサーバー・アプリから判定リクエストを送る
顧客ダッシュボード(/console/* Cookie セッション(ブラウザ専用) ダッシュボード画面でアカウント・キー・プランを管理する(プログラムからの直接呼び出しは非対象)

判定リクエストには、ダッシュボードで取得した API キー(lc_ で始まる文字列)を X-API-Key ヘッダーに付与します。

X-API-Key: lc_abc12xxxxxxxxxxxxxxxxxxxxxxxx

/console/* は、ダッシュボードへのログインで発行される HttpOnly Cookie で認証される画面専用のバックエンドです。プログラムから直接呼び出す用途には設計されていません。ダッシュボードでできることは 顧客ダッシュボード をご覧ください。


共通レスポンス構造

/v1/health を除くすべてのエンドポイントは、metadatadata(または error)からなる共通構造を返します。

成功時:

{
  "metadata": {
    "date": "2026-05-04T12:34:56.789Z",
    "ver": "1.0.1",
    "customer_id": "550e8400-e29b-41d4-a716-446655440000",
    "remaining_calls": 3850,
    "over_limit_calls": 0,
    "status": "success"
  },
  "data": { }
}

エラー時:

{
  "metadata": { "...": "...", "status": "error" },
  "error": {
    "code": "invalid_image",
    "message": "顔が検出できませんでした"
  }
}

metadata フィールド

フィールド 説明
date string レスポンス生成日時(ISO 8601・UTC・ミリ秒精度)
ver string 適用された API バージョン(セマンティックバージョン・例 "1.0.1"
customer_id string | null 顧客 UUID(認証失敗時は null
remaining_calls integer | null 当月の残クレジット数(0 未満にはならず 0 でクリップ)
over_limit_calls integer | null 当月の超過コール数(free プラン・ハードキャップ ON の場合は常に 0)
status string "success" または "error"

月次境界は UTC 基準です。毎月 1 日 00:00:00 UTC に当月集計が始まり、月末 23:59:59 UTC でクレジットが消滅します(AWS Marketplace の課金月境界と一致)。


課金(コールカウント)について

月間クレジットを消費する(= コールとしてカウントされる)のは、POST /v1/check/liveness の成功応答(status: "success")のみです。それ以外はすべて無料です。

エンドポイント 課金
POST /v1/check/liveness — 成功応答 1コール消費(課金対象)
POST /v1/check/liveness — エラー応答(4xx / 5xx) 無料(カウントされません)
GET /v1/usage 無料
GET /v1/health 無料
/console/*(ダッシュボード関連すべて) 無料

画像不備(invalid_image)・上限超過(429)・サーバーエラー(5xx)などのエラー応答は月間コール数にカウントされません。判定結果をお返しできた成功応答だけが課金対象です。


判定 API(/v1/*

POST /v1/check/liveness — なりすまし判定

顔画像を Base64 エンコードして送信し、写真・なりすまし攻撃かどうかを判定します。

認証: X-API-Key ヘッダー必須 課金: 成功応答のみ1コール消費(エラー応答はカウントされません)

リクエスト

{
  "image": "<Base64エンコード画像>",
  "image_format": "jpeg"
}
フィールド 必須 説明
image string Base64 エンコードした画像データ(上限 10MB)
image_format string "jpeg" または "png"

レスポンス(200 OK)

{
  "metadata": {
    "date": "2026-05-04T12:34:56.789Z",
    "ver": "1.0.1",
    "customer_id": "550e8400-e29b-41d4-a716-446655440000",
    "remaining_calls": 3850,
    "over_limit_calls": 0,
    "status": "success"
  },
  "data": {
    "isFakeFace": false,
    "isFakeLikelihood": 0.987,
    "isValidFace": true,
    "faceBrightness": 142.3,
    "faceRectArea": {"x": 120, "y": 80, "width": 200, "height": 200},
    "vFaceRect": [
      {"x": 120, "y": 80, "width": 200, "height": 200}
    ],
    "msg": "",
    "latency_ms": 120
  }
}
data フィールド 説明
isFakeFace boolean true = 写真・なりすまし疑い、false = 実物。isFakeLikelihood が既定しきい値 0.15 を上回ると true になります
isFakeLikelihood float なりすまし尤度(0.0〜1.0 の判定スコア)
isValidFace boolean 顔が有効な判定対象として扱える状態か
faceBrightness float 顔領域の平均輝度
faceRectArea object 採用された顔矩形 {x, y, width, height}
vFaceRect array 検出された全顔矩形のリスト
msg string 補足メッセージ
latency_ms integer 推論レイテンシ(ミリ秒)

判定結果の読み方: isFakeFace は、isFakeLikelihood が既定のしきい値 0.15 を上回った場合に true となる参考判定です(しきい値は精度改善に伴い変更されることがあります。変更時は Changelog でお知らせします)。より厳密な運用では、isFakeLikelihood(0.0〜1.0)をお客様側のしきい値で評価してください。しきい値を用途に応じて調整することで、誤検知(False Positive)と見逃し(False Negative)のバランスを最適化できます。

エラー

HTTP error.code 発生条件
400 invalid_request リクエストボディのバリデーションエラー
400 invalid_image 画像デコード失敗・顔未検出
401 invalid_api_key キー不正・無効化済み・期限切れ
429 quota_exceeded 上限到達かつ API 停止モード(free プラン、またはハードキャップ ON の有料プラン)
500 internal_error サーバー内部エラー
503 service_unavailable 一時的なサービス利用不可

GET /v1/usage — 当月使用量の確認

認証: X-API-Key ヘッダー必須 課金: 無料(コールカウント対象外)

レスポンス(200 OK)

{
  "metadata": { "...": "...", "status": "success" },
  "data": {
    "year_month": "2026-05",
    "total_calls": 1150,
    "monthly_limit": 5000,
    "remaining_calls": 3850,
    "over_limit_calls": 0,
    "plan": "standard",
    "hard_cap_enabled": false
  }
}
data フィールド 説明
year_month 対象年月(YYYY-MM・UTC 基準)
total_calls 当月の累計コール数
monthly_limit 月間クレジット数(プラン上限)
remaining_calls 残クレジット数
over_limit_calls 超過コール数(ハードキャップ ON・free プランは常に 0)
plan 現在適用中のプラン
hard_cap_enabled ハードキャップ設定の ON/OFF

GET /v1/health — ヘルスチェック

認証: 不要(metadata は付与されません) 課金: 無料(コールカウント対象外)

{"status": "ok"}

DB 接続失敗などの場合は 503{"status": "error", "message": "database unavailable"} を返します。


顧客ダッシュボード

アカウント・API キー・プラン設定の管理は、顧客ダッシュボード(https://liveness.api.pas-ta.io/console/dashboard)の画面操作で行います。ダッシュボードの操作はすべて無料(コールカウント対象外)です。

ダッシュボードが内部的に使用する /console/* エンドポイントは画面専用のバックエンド(Cookie セッション認証)であり、プログラムから直接呼び出す用途には設計されていません。予告なく変更されることがあります。プログラム連携には X-API-Key 認証の判定 API(/v1/*)をご利用ください。

ログインとセキュリティ

API キー管理

各アカウントには Primary / Secondary の2キーが発行されます。両キーは同等に機能し、片方を予備として保持することで無停止ローテーションができます。

プラン・使用量・ハードキャップ

プラン変更・解約

プランの変更・解約は AWS Marketplace の購読管理から行います。アップグレード(上位プランへの変更)は即時反映されます。ダウングレード・解約は契約更新のタイミングでの反映となります(途中解約はできません)。ご不明な点はお問い合わせください。


エラーコード一覧

HTTP error.code 発生条件
400 invalid_image 顔検出失敗・壊れた画像
400 invalid_request リクエストのバリデーションエラー
401 invalid_api_key キー不正・無効化済み・期限切れ
403 forbidden 認証情報の検証失敗
404 not_found リソース未存在(予約・キー ID など)
429 quota_exceeded 月間コール数の上限超過(API 停止モード時)
500 internal_error サーバー内部エラー
503 service_unavailable DB 接続失敗・一時的な利用不可

レート制限について: プランごとの月間クレジット上限に加え、公正利用のための全体スロットリング(429)があります。これは瞬間レートの個別保証ではありません。安定した高スループットが必要な場合はお問い合わせください。


サンプルコード

POST /v1/check/liveness を各言語から呼び出す例です。

curl

# 標準入力からボディを渡す方式(推奨)。macOS は base64 -i / Linux は base64 -w0
{ printf '{"image": "'; base64 -i face.jpg | tr -d '\n'; printf '", "image_format": "jpeg"}'; } \
| curl -X POST https://liveness.api.pas-ta.io/v1/check/liveness \
  -H "X-API-Key: lc_abc12xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  --data-binary @-

なぜ標準入力方式か: -d "{\"image\": \"$(base64 -i face.jpg)\", ...}" のように Base64 文字列をコマンドライン引数へ直接展開すると、画像が数百 KB を超えたあたりでシェルの引数長上限(ARG_MAX)に達し、argument list too long エラーでコマンド自体が実行できません。標準入力方式なら API の上限(10MB)まで送信できます。tr -d '\n' は Base64 出力末尾の改行除去(JSON 破損防止)に必要です。

Python

import base64
import requests

with open("face.jpg", "rb") as f:
    image_b64 = base64.b64encode(f.read()).decode("ascii")

resp = requests.post(
    "https://liveness.api.pas-ta.io/v1/check/liveness",
    headers={"X-API-Key": "lc_abc12xxxxxxxxxxxxxxxxxxxxxxxx"},
    json={"image": image_b64, "image_format": "jpeg"},
    timeout=30,
)
resp.raise_for_status()
result = resp.json()["data"]
print("fake?", result["isFakeFace"], "likelihood:", result["isFakeLikelihood"])

Node.js

import { readFileSync } from "node:fs";

const imageB64 = readFileSync("face.jpg").toString("base64");

const resp = await fetch("https://liveness.api.pas-ta.io/v1/check/liveness", {
  method: "POST",
  headers: {
    "X-API-Key": "lc_abc12xxxxxxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ image: imageB64, image_format: "jpeg" }),
});

const { data } = await resp.json();
console.log("fake?", data.isFakeFace, "likelihood:", data.isFakeLikelihood);

プランと使用量上限

価格について: 下表は AWS Marketplace 公開価格(USD)です。日本のお客様向けには個別オファー(Private Offer)をご用意しています。 ご希望の際はお問い合わせください。

プラン 月間コール数 月額 超過単価/コール
Starter 1,000 $180 $0.18
Standard 5,000 $750 $0.15
Professional 10,000 $1,200 $0.12
Business 30,000 $2,400 $0.08
Enterprise 100,000〜(カスタム) $5,000〜 $0.05

バージョニング

API のバージョンは、レスポンスの metadata.ver(セマンティックバージョン・例 1.0.1)で確認できます。

変更レベル 対応
Major(破壊的変更) レスポンス構造変更・フィールド削除・型変更 URL パスを新設(/v1//v2/
Minor(後方互換あり) フィールド追加・新エンドポイント追加 URL パス据え置き・ver の minor を更新
Revision(内部変更) バグ修正・性能改善 URL パス据え置き・ver の revision を更新