コンプラチェック by MANDA の REST API です。基幹システム・CRM・与信ワークフローからチェックを起票し、結果を受け取れます。
ご不明な点は ご利用ガイド または画面のお問い合わせからご連絡ください。
APIキーを Authorization ヘッダに付けてください。ヘッダを自由に足せないクライアント向けに X-API-Key でも受け付けます。
Authorization: Bearer ck_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
キーはアプリの 外部連携(API) タブから管理者が発行します。発行時に一度だけ表示され、あとから再表示はできません(当社側にもハッシュしか残していないためです)。漏えいが疑われる場合は同じ画面で失効させ、新しいキーを発行してください。
すべてのエンドポイントの基底URLは https://check.manda.bz です。
1件のチェックは、AIによるWeb調査を含むため 1〜2分 かかります。これをHTTPの応答時間で待つと連携先のタイムアウトに掛かりやすいため、起票と結果取得を分けています。
POST /api/v1/checks で起票する → 202 とジョブIDが返るGET /api/v1/checks/{id} を10〜15秒間隔でGET /api/v1/checks/{id}/report でレポート本体(HTML/PDF)を取得する| 項目 | 型 | 説明 |
|---|---|---|
companyName | string | 会社名。people と併せてどちらか必須。 |
companyUrl | string | 会社HP。あれば法人の特定精度が上がります(英語表記も拾えるため制裁リスト照合も効きます)。 |
people | array | [{ "name": "山田太郎", "role": "代表者" }]。最大10名。 |
corporateNumber | string | 13桁の法人番号。指定すると同名法人の取り違えが起きません。 |
prefecture / city | string | 法人番号が無いときの絞り込みに使います。 |
country | string | 所在国のISOコード(例 VN)。指定すると現地語+英語で調査し、日本の公的DB照会は行いません。省略時は日本。対応国は GET /api/v1/countries。 |
quickMode | boolean | 既定 true(短時間・要点重視)。false で詳細調査。 |
allowUnresolved | boolean | 法人を特定できなくても実行する。既定 false。 |
202 ではなく 200 が返ります)。発注番号やレコードIDをそのまま使えます。
curl -X POST https://check.manda.bz/api/v1/checks \
-H "Authorization: Bearer $CHECK_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: account-00123" \
-d '{
"companyName": "株式会社サンプル",
"companyUrl": "https://example.co.jp",
"people": [{ "name": "山田太郎", "role": "代表者" }]
}'
HTTP/1.1 202 Accepted
Location: /api/v1/checks/chk_1a2b3c4d5e6f7a8b9c0d1e2f
{
"id": "chk_1a2b3c4d5e6f7a8b9c0d1e2f",
"status": "queued",
"target": { "companyName": "株式会社サンプル", "companyUrl": "https://example.co.jp",
"people": [{ "name": "山田太郎", "role": "代表者" }], "country": null },
"createdAt": "2026-09-18 04:12:07"
}
status | 意味 |
|---|---|
queued / running | 実行待ち/実行中。 |
succeeded | 完了。結果が入っています。残回数を1回消費します。 |
need_refine | 同名法人が複数あり特定できなかった。実行していないので消費しません。corporateNumber か prefecture を足して再実行してください。候補は candidates に入ります。 |
failed | 実行に失敗。消費しません。 |
{
"id": "chk_1a2b3c4d5e6f7a8b9c0d1e2f",
"status": "succeeded",
"score": "caution",
"risk": "中",
"summary": {
"overallScore": "caution",
"overallRisk": "中",
"overallComment": "…",
"scoreReason": "…"
},
"checks": {
"antisocial": { "riskLevel": "低", "findings": [], "comment": "", "sources": [] },
"closeAssociate": { "riskLevel": "低", "findings": [], "comment": "", "sources": [] },
"criminal": { "riskLevel": "低", "findings": [], "comment": "", "sources": [] },
"administrative": { "riskLevel": "中", "findings": ["…"], "comment": "…", "sources": ["https://…"] },
"financial": { "riskLevel": "低", "findings": [], "comment": "", "sources": [] },
"legal": { "riskLevel": "低", "findings": [], "comment": "", "sources": [] },
"media": { "riskLevel": "中", "findings": ["…"], "comment": "…", "sources": ["https://…"] },
"news": { "riskLevel": "低", "findings": [], "comment": "", "sources": [] }
},
"peopleChecks": [{ "name": "山田太郎", "role": "代表者", "riskLevel": "低", "findings": [] }],
"sanctionsWatchlist": {
"checked": true, "found": false, "totalCount": 0, "hits": []
},
"historyId": 4821,
"reportUrl": "https://check.manda.bz/api/v1/checks/chk_1a2b…/report",
"createdAt": "2026-09-18 04:12:07",
"finishedAt": "2026-09-18 04:13:41"
}
sanctionsWatchlist.checked を必ず見てください。false は「照合できなかった」で、「該当が無かった」ではありません。この2つを取り違えると、確認していないものを確認済みとして記録してしまいます。
既定はHTML。?format=pdf でPDFを返します。完了前に呼ぶと 409 not_ready です。
curl -H "Authorization: Bearer $CHECK_API_KEY" \
"https://check.manda.bz/api/v1/checks/chk_1a2b…/report?format=pdf" -o report.pdf
起票したジョブを新しい順に返します(本文の結果は含みません)。
OFAC(米財務省)・EU統合リスト・財務省(外為法の資産凍結対象)への名称照合だけを行います。取り込み済みのリストへのローカル照合なので、AIも外部通信も使いません。応答は数十ms、残回数は消費しません。
取引先マスタの一括スクリーニングや、レコード作成時の即時チェックのように、頻度の高い用途に向いています。
curl -X POST https://check.manda.bz/api/v1/sanctions/screen \
-H "Authorization: Bearer $CHECK_API_KEY" -H "Content-Type: application/json" \
-d '{ "companyName": "株式会社サンプル", "englishName": "Sample Co., Ltd.",
"people": [{ "name": "山田太郎", "role": "代表者" }] }'
{
"checked": true, "found": false, "totalCount": 0, "exactCount": 0,
"targets": ["株式会社サンプル", "Sample Co., Ltd.", "山田太郎"],
"hits": [],
"sources": [
{ "code": "ofac", "label": "OFAC(米財務省)", "count": 0, "publishedAt": "2026-09-16" },
{ "code": "eu", "label": "EU 制裁リスト", "count": 0, "publishedAt": "2026-08-05" },
{ "code": "mof", "label": "財務省 資産凍結等", "count": 0, "publishedAt": "2026-09-01" }
],
"lastSync": "2026-09-18 01:02:03", "entryCount": 28964, "elapsedMs": 118
}
漢字の商号が当たるのは和文表記を持つ財務省リストだけです。OFAC・EUはラテン文字表記のため、englishName を渡すと精度が上がります。照合できないとき(同期未完了など)は 503 watchlist_unavailable を返します。黙って「該当なし」にはしません。
{
"organization": { "id": 12, "name": "株式会社サンプル" },
"plan": "business", "planQuota": 100, "planRenewsAt": "2026-10-01 00:00:00",
"balance": 63,
"apiKey": { "id": 3, "name": "基幹システム連携" },
"queue": { "running": 1, "queued": 0 }
}
country に指定できる国コードの一覧を返します。
アプリの 外部連携(API) タブで送信先URLを登録すると、完了時にこちらから POST します。送信先は https:// のみで、社内・プライベートアドレスは登録できません。
| イベント | タイミング |
|---|---|
check.completed | チェックが完了したとき |
check.failed | 失敗したとき/法人を特定できなかったとき |
本文は { "event": "...", "createdAt": "...", "data": { …GET /api/v1/checks/{id} と同じ形… } } です。
次のヘッダが付きます。
X-Check-Event | イベント名 |
X-Check-Delivery | 配信ID(再送でも同じ値。重複処理の判定に使えます) |
X-Check-Timestamp | 送信時刻(UNIX秒) |
X-Check-Signature | v1=<16進のHMAC> |
署名は HMAC-SHA256(署名鍵, "<X-Check-Timestamp>.<リクエストボディ>") です。署名鍵は送信先ごとに発行され、同じ画面で確認できます。
// Node.js での検証例
const crypto = require('crypto');
function verify(req, rawBody, secret) {
const ts = req.headers['x-check-timestamp'];
const sig = req.headers['x-check-signature'];
// 古い本文の送り直しを弾く(5分より古いものは受け取らない)
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
const expected = 'v1=' + crypto.createHmac('sha256', secret)
.update(`${ts}.${rawBody}`).digest('hex');
return crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
}
2xx 以外、または10秒以内に応答が無い場合は失敗として、1分・5分・15分・1時間・3時間・6時間の間隔で最大7回まで再送します。受信側は X-Check-Delivery で重複を弾ける作りにしてください。配信状況はアプリの配信ログで確認できます。
エラーは常に次の形です。
{ "error": { "code": "no_balance", "message": "残回数がありません。…" } }
| HTTP | code | 対処 |
|---|---|---|
| 400 | invalid_request | 必須項目が足りません。 |
| 400 | invalid_country | 未対応の国コードです。GET /api/v1/countries を参照してください。 |
| 401 | unauthorized / invalid_api_key | キーが無い/無効・失効しています。 |
| 402 | no_balance | 残回数がありません。プラン変更または追加購入を。 |
| 404 | not_found | IDが違うか、保存期間を過ぎています。 |
| 409 | not_ready | まだレポートがありません。完了を待ってください。 |
| 429 | rate_limited | Retry-After 秒後に再試行してください。 |
| 503 | watchlist_unavailable | 制裁リストを照合できません。「該当なし」として扱わないでください。 |
X-RateLimit-Limit / X-RateLimit-Remaining を返します。queued の時間が延びます(GET /api/v1/account の queue で確認できます)。succeeded になったチェック1件につき残回数を1回消費します。failed と need_refine は消費しません。/v1/sanctions/screen は消費しません。404 になります。