Skip to main content
POST
/
v3
/
aml
/
curl
curl -X POST https://verification.didit.me/v3/aml/ \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "full_name": "Antonio Ejemplo Modelo",
    "entity_type": "person",
    "date_of_birth": "1972-02-29",
    "nationality": "ES",
    "include_adverse_media": false,
    "vendor_data": "user-1234"
  }'
{
  "request_id": "d27c5509-7a66-45a9-b05e-d69d9f4c336a",
  "aml": {
    "status": "Approved",
    "total_hits": 0,
    "entity_type": "person",
    "hits": [],
    "score": 0,
    "screened_data": {
      "full_name": "Maximilian Mustermann-Doe",
      "date_of_birth": "1992-03-14",
      "nationality": "DE",
      "document_number": null
    },
    "warnings": []
  },
  "vendor_data": "user-1234",
  "metadata": {
    "internal_ref": "abc-123"
  },
  "created_at": "2026-06-11T10:21:07.013938+00:00"
}

Authorizations

x-api-key
string
header
required

Body

application/json
full_name
string
required

Full name of the person or company to screen.

Example:

"Antonio Ejemplo Modelo"

entity_type
enum<string>
default:person

Type of entity to screen. Defaults to person.

Available options:
person,
company
date_of_birth
string<date>

Date of birth (persons) or incorporation date (companies), YYYY-MM-DD. Improves match precision via the DOB weight.

Example:

"1972-02-29"

nationality
string

ISO 3166-1 alpha-2 country code (e.g. ES). Invalid codes return 400. Improves match precision via the country weight.

Example:

"ES"

document_number
string

Identity document number. Not weighted — acts as a golden key: an exact match overrides the hit's match_score to 100, a hard mismatch penalizes it.

aml_score_approve_threshold
number
default:80

Risk-score threshold at or below which the result is Approved. Must be ≤ aml_score_review_threshold (else 400).

Required range: 0 <= x <= 100
aml_score_review_threshold
number
default:100

Risk-score threshold above which the result is Declined. Scores between the two thresholds produce In Review.

Required range: 0 <= x <= 100
aml_name_weight
integer
default:60

Weight of name similarity in the per-hit match score. The three weights must sum to exactly 100 (else 400).

Required range: 0 <= x <= 100
aml_dob_weight
integer
default:25

Weight of date of birth in the per-hit match score.

Required range: 0 <= x <= 100
aml_country_weight
integer
default:15

Weight of country/nationality in the per-hit match score.

Required range: 0 <= x <= 100
aml_match_score_threshold
integer
default:93

Per-hit cutoff: hits with match_score below this are False Positive (excluded from risk assessment); at or above are Unreviewed possible matches.

Required range: 0 <= x <= 100
include_adverse_media
boolean
default:false

Also search news media for negative coverage. Adds up to ~30 s of latency while results are gathered — use a ≥60 s client timeout.

include_ongoing_monitoring
boolean
default:false

Keep re-screening this profile and push changes via webhook. Requires save_api_request=true (else 400).

save_api_request
boolean
default:true

Persist the screening as a session (console visibility, decision endpoint, webhooks, hit review). Set to false for a stateless check.

vendor_data
string

Your identifier for the screened user; echoed back and stored with the session.

metadata
object

Free-form JSON stored with the request and echoed back.

Response

Screening completed. aml.status reflects your thresholds; every hit at or above the internal inclusion floor is listed in aml.hits with its identity match_score, entity risk_score, and a score_breakdown explaining the match.

request_id
string<uuid>

Persisted session id when save_api_request=true (usable with GET /v3/session/{sessionId}/decision/); otherwise a transient correlation UUID.

aml
object
vendor_data
string | null

Echo of the vendor_data you sent.

metadata
object

Echo of the metadata you sent.

created_at
string<date-time>