Skip to main content
POST
/
kyc
List Check
curl --request POST \
  --url https://api.example.com/kyc
Check entities against KYC watchlists (OFAC, UN, EU, UK, and many more) to identify sanctions, PEPs (Politically Exposed Persons), crypto-related risks, and other risk entities.

Endpoint

POST /kyc

Authentication

Requires kyc:create permission. Include your Bearer token in the Authorization header.

Request Body Parameters

Subject Parameter Details

Required Fields

At least one of the following must be provided:
FieldRequired IfDescription
full_nameNo identifiers providedFull name of the entity
document_idNo full_name providedGovernment-issued ID
wallet_addressNo full_name providedCryptocurrency wallet
identifiersNo full_name providedArray of identifier objects
imo_numberNo full_name providedIMO number for vessels

Entity Types

TypeDescription
individualNatural person
companyBusiness or corporation
organizationNon-profit, government agency, etc.
vesselShips, boats (use with imo_number)
aircraftAirplanes, helicopters (use with call_sign)

Identifiers Array Format

When using the identifiers field, provide an array of objects:
{
  "identifiers": [
    {
      "type": "Ethereum Wallet",
      "value": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
    },
    {
      "type": "Bitcoin Address",
      "value": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"
    },
    {
      "type": "Passport",
      "value": "AB1234567"
    }
  ]
}

Available Watchlists

Government Sanctions Lists

List NameDescriptionEntity Types Supported
ofacOFAC SDN List (US Treasury)Persons, Organizations, Vessels
unUN Security Council Consolidated ListPersons, Organizations
euEU Financial Sanctions ListPersons, Organizations
ukUK Sanctions List (OFSI)Persons, Organizations
canadaCanada Consolidated Autonomous SanctionsPersons, Organizations
australiaAustralia DFAT Consolidated ListPersons, Organizations
switzerlandSwitzerland SECO SanctionsPersons, Organizations

US Export Control Lists

List NameDescriptionEntity Types Supported
us_cslUS Consolidated Screening List (CSL)Persons, Organizations
bis_denied_personsBIS Denied Persons ListPersons
bis_entity_listBIS Entity ListOrganizations

Regional & Specialized Lists

List NameDescriptionEntity Types Supported
senaclaft_uySENACLAFT Uruguay PEP ListPersons
world_bankWorld Bank Debarred Firms & IndividualsPersons, Organizations

Cryptocurrency Lists

List NameDescriptionIdentifier Types
ransomwhereRansomwhe.re Ransomware AddressesBitcoin, Ethereum wallets
nbctfNBCTF Israel Sanctioned Crypto WalletsCrypto wallets

Search Types

TypeDescriptionUse Case
exactExact name matchingHigh precision, strict matching
fuzzyApproximate string matchingHandle typos and variations
tokenWord-based matchingFind partial name matches
compositeCombined strategy (default)Balanced precision and recall
llm_enhancedAI-powered matchingMaximum precision with semantic filtering

Request Examples

Check Person Against Single List

curl -X POST https://kyc.legaltalent.ai/kyc \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": {
      "full_name": "John Doe",
      "nationality": "US",
      "birth_date": "1985-03-15"
    },
    "list_name": "ofac",
    "search_type": "composite"
  }'

Check Person with Document ID

curl -X POST https://kyc.legaltalent.ai/kyc \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": {
      "full_name": "Juan Pérez",
      "document_id": "12345678",
      "document_type": "CI",
      "nationality": "UY"
    },
    "list_name": "senaclaft_uy"
  }'

Check Cryptocurrency Wallet

curl -X POST https://kyc.legaltalent.ai/kyc \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": {
      "wallet_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
    },
    "lists": ["ofac", "ransomwhere", "nbctf"]
  }'

Check Company

curl -X POST https://kyc.legaltalent.ai/kyc \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": {
      "full_name": "Acme Corporation",
      "entity_type": "company",
      "tax_id": "12-3456789",
      "incorporation_country": "US"
    },
    "lists": ["ofac", "bis_entity_list", "world_bank"]
  }'

Check Vessel by IMO Number

curl -X POST https://kyc.legaltalent.ai/kyc \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": {
      "full_name": "MV Oceanstar",
      "entity_type": "vessel",
      "imo_number": "9123456",
      "call_sign": "V7AB3"
    },
    "list_name": "ofac"
  }'

Check Multiple Lists

curl -X POST https://kyc.legaltalent.ai/kyc \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": {
      "full_name": "John Doe",
      "nationality": "US"
    },
    "lists": ["ofac", "un", "eu", "uk", "canada"],
    "search_type": "composite"
  }'

Check with Multiple Identifiers

curl -X POST https://kyc.legaltalent.ai/kyc \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": {
      "full_name": "John Doe",
      "identifiers": [
        {
          "type": "Ethereum Wallet",
          "value": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
        },
        {
          "type": "Bitcoin Address",
          "value": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"
        }
      ]
    },
    "lists": ["ofac", "ransomwhere"]
  }'

Save Validation for Dashboard

Use save_validation: true to store the validation result and view it later in the dashboard:
curl -X POST https://kyc.legaltalent.ai/kyc \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": {
      "full_name": "John Doe",
      "nationality": "US",
      "document_id": "AB1234567",
      "document_type": "Passport"
    },
    "lists": ["ofac", "un", "eu"],
    "search_type": "composite",
    "save_validation": true
  }'

Response Format

Success Response (Single List)

{
  "status": "success",
  "data": {
    "list_name": "ofac",
    "subject": {
      "full_name": "John Doe",
      "nationality": "US"
    },
    "is_match": true,
    "match_count": 1,
    "matches": [
      {
        "confidence_score": 0.95,
        "match_type": "composite",
        "matched_field": "name",
        "entity": {
          "id": "12345",
          "name": "JOHN DOE",
          "entity_type": "individual",
          "aliases": ["Johnny Doe"],
          "programs": ["SDGT"],
          "nationality": "US",
          "listing_date": "2020-01-15"
        }
      }
    ],
    "processing_time_ms": 1250
  },
  "meta": {
    "request_id": "abc-123-def",
    "timestamp": "2024-11-22T10:30:00Z",
    "processing_time_ms": 1250,
    "api_version": "2.0"
  }
}

Success Response (Multiple Lists)

{
  "status": "success",
  "data": {
    "subject": {
      "full_name": "John Doe",
      "nationality": "US"
    },
    "results": {
      "ofac": {
        "list_name": "ofac",
        "is_match": true,
        "match_count": 1,
        "matches": [...]
      },
      "un": {
        "list_name": "un",
        "is_match": false,
        "match_count": 0,
        "matches": []
      },
      "eu": {
        "list_name": "eu",
        "is_match": false,
        "match_count": 0,
        "matches": []
      }
    },
    "summary": {
      "total_lists_checked": 3,
      "total_matches": 1,
      "lists_with_matches": ["ofac"],
      "overall_risk_level": "HIGH",
      "recommended_action": "REVIEW - Manual review required before proceeding.",
      "requires_manual_review": true
    },
    "total_lists_checked": 3,
    "total_matches": 1,
    "has_matches": true,
    "overall_risk_level": "HIGH"
  },
  "meta": {
    "request_id": "abc-123-def",
    "timestamp": "2024-11-22T10:30:00Z",
    "processing_time_ms": 3200,
    "api_version": "2.0"
  }
}

No Match Response

{
  "status": "success",
  "data": {
    "list_name": "ofac",
    "subject": {
      "full_name": "Jane Smith",
      "nationality": "CA"
    },
    "is_match": false,
    "match_count": 0,
    "matches": [],
    "processing_time_ms": 850
  },
  "meta": {
    "request_id": "abc-123-def",
    "timestamp": "2024-11-22T10:30:00Z",
    "processing_time_ms": 850,
    "api_version": "2.0"
  }
}

Risk Levels

The API returns risk assessments based on match confidence:
Risk LevelRecommended Action
CRITICALBLOCK - Immediate escalation required. Do not proceed.
HIGHREVIEW - Manual review required before proceeding.
MEDIUMCAUTION - Enhanced monitoring recommended.
LOWPROCEED - Standard monitoring applies.

Error Responses

400 Bad Request - Missing Subject

{
  "status": "error",
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Subject must have at least one of: full_name, document_id, wallet_address, identifiers, or imo_number"
  },
  "meta": {
    "request_id": "abc-123-def",
    "timestamp": "2024-11-22T10:30:00Z",
    "api_version": "2.0"
  }
}

400 Bad Request - Invalid List

{
  "status": "error",
  "error": {
    "code": "LIST_NOT_FOUND",
    "message": "List 'invalid_list' not found"
  },
  "meta": {
    "request_id": "abc-123-def",
    "timestamp": "2024-11-22T10:30:00Z",
    "api_version": "2.0"
  }
}

400 Bad Request - Invalid Birth Date

{
  "status": "error",
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "birth_date must be in ISO format (YYYY-MM-DD)",
    "field": "subject.birth_date"
  },
  "meta": {
    "request_id": "abc-123-def",
    "timestamp": "2024-11-22T10:30:00Z",
    "api_version": "2.0"
  }
}

403 Forbidden - Missing Permission

{
  "message": "User is not authorized to perform this action"
}

Status Codes

CodeDescription
200Success - Check completed
400Bad Request - Invalid parameters
401Unauthorized - Missing or invalid token
403Forbidden - Insufficient permissions
500Internal Server Error