MarketClair API
API Documentation
Integrate MarketClair into your AML infrastructure. Every investigation produces cryptographic proof — independently verifiable, without accessing your system.
Authentication
Every Investigation endpoint requires an API key, passed as a Bearer token in the Authorization header. Evidence Verification endpoints are deliberately public — anyone can verify a decision without an account, the same way anyone can verify a blockchain transaction.
Authorization: Bearer mk_live_your_api_key_hereNo API key? Try the sandbox →
BASE URLhttps://www.marketclair.com
Investigation API
Produces a new, deterministic decision for a customer, whether triggered directly, from an anonymized dataset, or automatically from your own alerting system.
POST/api/aml-investigationAPI KEY
Run an investigation for a customer your systems already recognize.
Request Body
{
"customer_id": "your-customer-id",
"alert_source": "automated"
}Response (shape)
{
"reconstruction_id": "MC-INV-...",
"customer_id": "...",
"investigation_decision": {
"outcome": "ALLOW | REVIEW | ESCALATE",
"reason": "...",
"contributing_factors": [ "..." ]
},
"findings": { "matched_patterns": [ "..." ] },
"regulatory_context": [ { "jurisdiction": "FR", "status": "RESOLVED", "coverage": "COVERED | NOT_COVERED | UNKNOWN" } ],
"cryptographic_proof": "opaque, independently verifiable via /api/aml-investigation/verify",
"sar_available": true,
"generated_at": "..."
}coverage indicates whether your organization has an established entitlement for this jurisdiction. UNKNOWN never indicates an API failure - it simply means capability coverage has not yet been established for your organization on this jurisdiction. In Sandbox, coverage always reads COVERED, for an immediately functional experience - this is not a real production entitlement.
POST/api/aml-investigation/importAPI KEY
Pilot Mode — an anonymized dataset, no connection to your production systems.
Request Body
{
"schema_version": "1.0",
"customer_id": "...",
"kyc": { "status": "APPROVED", "country_code": "FR" } ,
"transactions": [ { "..." : "..." } ],
"alerts_count": 0
}Response (shape)
Same shape as above.
POST/api/webhooks/aml-alertAPI KEY
Inbound webhook — triggers an investigation automatically from your alerting system.
Request Body
{
"customer_id": "...",
"level": "HIGH",
"reason": "..."
}Response (shape)
{
"success": true,
"triggered": 1,
"results": [ { "status": "INVESTIGATED", "reconstruction_id": "...", "..." : "..." } ]
}POST/api/aml-investigation/ai-summaryAPI KEY
AI-assisted explanation of an already-established investigation, in plain language — on request only.
Request Body
{
"investigation_snapshot": { "..." : "the response above" },
"requested_by": "a named analyst"
}Response (shape)
{
"success": true,
"text": "...",
"model": "...",
"generatedAt": "..."
}Evidence Verification API
Checks the integrity of a decision already sealed by MarketClair — is this proof authentic?
POST/api/aml-investigation/verifyPUBLIC
Publicly verify a decision, no authentication required.
Request Body
{ "reconstruction_id": "MC-INV-..." }Response (shape)
{
"valid": true,
"checks": { "score_match": true, "decision_match": true, "..." : "..." },
"statement": "..."
}POST/api/aml-investigation/replayAPI KEY
Replay a decision to verify determinism.
Request Body
{ "reconstruction_id": "MC-INV-..." }Response (shape)
{
"replay_status": "MATCH | MISMATCH",
"original": { "..." : "..." },
"replay": { "..." : "..." },
"diff": null
}POST/api/aml-investigation/shareAPI KEY
Generate signed, time-limited links for a regulator, lawyer, or auditor.
Request Body
{ "reconstruction_id": "MC-INV-..." }Response (shape)
{
"share_links": { "regulator": { "url": "..." }, "lawyer": { "url": "..." }, "auditor": { "url": "..." } }
}GET/api/aml-investigation/pdf?id={reconstruction_id}PUBLIC
Regulatory report, ready to print to PDF.
HTML page — printable to PDF by the browser.
Integration guides
Full request/response reference, payload schemas, and a Day-1 onboarding walkthrough live in the repository:
INTEGRATION.md · docs/INGESTION_API.md