Peleza β€” Trust built on data
AML / PEP
On this page

AML / PEP Screen

Screen individuals and organisations against PEP, sanctions, and adverse media β€” same criteria as Merchant: search by National ID or by manual names (first_name + last_name), or by entity_name for organisations. Submit one or more scopes (pep, sanctions, adverse_media) and consent: true. POST returns screening_id with status processing; fetch results with GET /api/v1/check/screen/{screening_id}. Only selected scopes appear in the completed response. Live billing is aml-pep for name/entity screens, and aml-pep-id when id_number is provided.

Loading sandbox test IDs…

Screen subject

POST/api/v1/check/screen
{{baseUrl}}/api/v1/check/screen
HeaderTypeDescription
AuthorizationstringBearer YOUR_ACCESS_TOKEN from the OAuth client-credentials flow
Content-Typestringapplication/json

Body Parameters

ParameterTypeDescriptionRequired
subject_typestringindividual or organisation (entity / organization also accepted)required
scopesarrayOne or more of pep, sanctions, adverse_mediarequired
countrystringISO-2 country filter β€” e.g. KEoptional
id_numberstringNational ID search (Merchant ID path). Resolves identity from cache when present. Use this OR first_name + last_name.optional
first_namestringManual name search β€” required with last_name when id_number is omittedoptional
last_namestringManual name search β€” required with first_name when id_number is omittedoptional
other_namesstringMiddle / other names (manual search)optional
date_of_birthstringYYYY-MM-DD (manual search refinement)optional
genderstringM or F (manual search refinement)optional
entity_namestringRequired when subject_type is organisationoptional
consentbooleanMust be true β€” confirms data-subject consent to perform this verificationrequired
customer_numberstringYour internal reference (max 255)optional

Individual β€” National ID

Sample request body for Individual β€” National ID:

Sample dataSample request body
{
  "subject_type": "individual",
  "consent": true,
  "scopes": ["pep", "sanctions", "adverse_media"],
  "country": "KE",
  "id_number": "1028845317"
}

Sample response for Individual β€” National ID:

200 OKSample dataSample response
{
  "success": true,
  "response_code": 200,
  "message": "Screening accepted",
  "data": {
    "screening_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "status": "processing",
    "scopes": ["pep", "sanctions", "adverse_media"],
    "subject_type": "individual",
    "message": "Screening is in progress. Poll GET /api/v1/check/screen/{screening_id}."
  },
  "request_id": "550e8400-e29b-41d4-a716-446655440000"
}

Individual β€” manual names

Sample request body for Individual β€” manual names:

Sample dataSample request body
{
  "subject_type": "individual",
  "consent": true,
  "scopes": ["sanctions"],
  "country": "KE",
  "first_name": "Victor",
  "last_name": "Sanctioned"
}

Sample response for Individual β€” manual names:

200 OKSample dataSample response
{
  "success": true,
  "response_code": 200,
  "message": "Screening accepted",
  "data": {
    "screening_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "status": "processing",
    "scopes": ["sanctions"],
    "subject_type": "individual",
    "message": "Screening is in progress. Poll GET /api/v1/check/screen/{screening_id}."
  },
  "request_id": "550e8400-e29b-41d4-a716-446655440000"
}

Organisation β€” entity name

Sample request body for Organisation β€” entity name:

Sample dataSample request body
{
  "subject_type": "organisation",
  "consent": true,
  "scopes": ["sanctions", "adverse_media"],
  "entity_name": "Blocked Holdings Ltd",
  "country": "KE"
}

Sample response for Organisation β€” entity name:

200 OKSample dataSample response
{
  "success": true,
  "response_code": 200,
  "message": "Screening accepted",
  "data": {
    "screening_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "status": "processing",
    "scopes": ["sanctions", "adverse_media"],
    "subject_type": "organisation",
    "message": "Screening is in progress. Poll GET /api/v1/check/screen/{screening_id}."
  },
  "request_id": "550e8400-e29b-41d4-a716-446655440000"
}

Response Fields

FieldTypeDescription
successbooleanWhether the request succeeded
response_codenumberApplication response code (typically mirrors HTTP)
messagestringHuman-readable status message
dataobjectPayload for the verified resource
request_idstringUUID for support and audit trails
data.screening_idstringUUID β€” fetch results with GET /api/v1/check/screen/{screening_id}
data.statusstringprocessing on accept
data.scopesarrayRequested scopes
data.subject_typestringindividual or organisation
data.messagestringPoll GET /api/v1/check/screen/{screening_id}

Fetch results

Use the screening_id from POST. The completed payload includes only the scopes you selected (pep, sanctions, and/or adverse_media). Search mode is id, manual, or organisation β€” matching Merchant.

GET/api/v1/check/screen/{token}
{{baseUrl}}/api/v1/check/screen/{token}
200 OKSample dataExample response
{
  "success": true,
  "response_code": 200,
  "message": "Screening completed",
  "data": {
    "screening_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "status": "completed",
    "subject": {
      "type": "individual",
      "name": "Victor Sanctioned",
      "search_mode": "manual",
      "first_name": "Victor",
      "last_name": "Sanctioned",
      "country": "KE"
    },
    "scopes": ["sanctions"],
    "summary": {
      "has_sanctions_hit": true,
      "risk_level": "high",
      "overall_risk_score": 80,
      "disposition": "pending_review"
    },
    "sanctions": {
      "status": "match",
      "match_count": 1,
      "matches": [
        {
          "name": "Victor Sanctioned",
          "list": "OFAC SDN (sandbox)",
          "score": 88.0,
          "country": "KE"
        }
      ],
      "sources": ["sandbox_sanctions"],
      "details": "Sandbox sanctions match (demo data)."
    },
    "completed_at": "2026-09-03T10:00:01Z"
  },
  "request_id": "550e8400-e29b-41d4-a716-446655440000"
}
FieldTypeDescription
data.screening_idstringUUID from POST /check/screen
data.statusstringcompleted | failed
data.subjectobjecttype, name, search_mode (id | manual | organisation), optional id_number / name fields / country
data.scopesarrayScopes requested on POST
data.summaryobjectrisk_level, overall_risk_score, disposition, plus flags for selected scopes only
data.pepobjectPresent only when pep was in scopes
data.sanctionsobjectPresent only when sanctions was in scopes
data.adverse_mediaobjectPresent only when adverse_media was in scopes
data.completed_atstringISO-8601 completion time

Sample β€” National ID clear (all scopes)

ID search (id_number 1028845317). All three scopes requested; all return no_match. Disposition auto_clear.

GET/api/v1/check/screen/{token}
{{baseUrl}}/api/v1/check/screen/{token}
200 OKSample dataExample response
{
  "success": true,
  "response_code": 200,
  "message": "Screening completed",
  "data": {
    "screening_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "status": "completed",
    "subject": {
      "type": "individual",
      "name": "James Otieno Kamau",
      "search_mode": "id",
      "id_number": "1028845317",
      "first_name": "James",
      "other_names": "Otieno",
      "last_name": "Kamau",
      "country": "KE"
    },
    "scopes": ["pep", "sanctions", "adverse_media"],
    "summary": {
      "is_pep": false,
      "has_sanctions_hit": false,
      "has_adverse_media": false,
      "pep_level": 0,
      "risk_level": "low",
      "overall_risk_score": 0,
      "disposition": "auto_clear"
    },
    "pep": {
      "status": "no_match",
      "match_count": 0,
      "primary_match": null,
      "matches": [],
      "sources": [],
      "details": "No PEP matches found (sandbox)."
    },
    "sanctions": {
      "status": "no_match",
      "match_count": 0,
      "matches": [],
      "sources": [],
      "details": "No sanctions matches found (sandbox)."
    },
    "adverse_media": {
      "status": "no_match",
      "match_count": 0,
      "matches": [],
      "sources": [],
      "details": "No adverse media matches found (sandbox)."
    },
    "completed_at": "2026-09-03T10:00:01Z"
  },
  "request_id": "550e8400-e29b-41d4-a716-446655440000"
}

Sample β€” PEP match (manual names)

Manual names (Amina / Ochieng) or id_number AMLPEP0001. scopes: ["pep"] β€” only the pep bucket is returned.

GET/api/v1/check/screen/{token}
{{baseUrl}}/api/v1/check/screen/{token}
200 OKSample dataExample response
{
  "success": true,
  "response_code": 200,
  "message": "Screening completed",
  "data": {
    "screening_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "status": "completed",
    "subject": {
      "type": "individual",
      "name": "Amina Njeri Ochieng",
      "search_mode": "manual",
      "first_name": "Amina",
      "other_names": "Njeri",
      "last_name": "Ochieng",
      "country": "KE"
    },
    "scopes": ["pep"],
    "summary": {
      "is_pep": true,
      "pep_level": 2,
      "risk_level": "high",
      "overall_risk_score": 75,
      "disposition": "pending_review"
    },
    "pep": {
      "status": "match",
      "match_count": 1,
      "primary_match": {
        "name": "Amina Njeri Ochieng",
        "pep_level": 2,
        "score": 92.5,
        "positions": ["Former Cabinet Secretary"],
        "country": "KE",
        "source": "sandbox_pep_list"
      },
      "matches": [
        {
          "name": "Amina Njeri Ochieng",
          "pep_level": 2,
          "score": 92.5,
          "positions": ["Former Cabinet Secretary"],
          "country": "KE",
          "source": "sandbox_pep_list"
        }
      ],
      "sources": ["sandbox_pep_list"],
      "details": "Sandbox PEP match (demo data)."
    },
    "completed_at": "2026-09-03T10:00:01Z"
  },
  "request_id": "550e8400-e29b-41d4-a716-446655440000"
}

Sample β€” sanctions match (manual names)

Manual names (Victor / Sanctioned). scopes: ["sanctions"] β€” only the sanctions bucket is returned.

GET/api/v1/check/screen/{token}
{{baseUrl}}/api/v1/check/screen/{token}
200 OKSample dataExample response
{
  "success": true,
  "response_code": 200,
  "message": "Screening completed",
  "data": {
    "screening_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "status": "completed",
    "subject": {
      "type": "individual",
      "name": "Victor Sanctioned",
      "search_mode": "manual",
      "first_name": "Victor",
      "last_name": "Sanctioned",
      "country": "KE"
    },
    "scopes": ["sanctions"],
    "summary": {
      "has_sanctions_hit": true,
      "risk_level": "high",
      "overall_risk_score": 80,
      "disposition": "pending_review"
    },
    "sanctions": {
      "status": "match",
      "match_count": 1,
      "matches": [
        {
          "name": "Victor Sanctioned",
          "list": "OFAC SDN (sandbox)",
          "score": 88.0,
          "country": "KE"
        }
      ],
      "sources": ["sandbox_sanctions"],
      "details": "Sandbox sanctions match (demo data)."
    },
    "completed_at": "2026-09-03T10:00:01Z"
  },
  "request_id": "550e8400-e29b-41d4-a716-446655440000"
}

Sample β€” adverse media match

Manual names (Grace / Headline). scopes: ["adverse_media"] β€” only the adverse_media bucket is returned.

GET/api/v1/check/screen/{token}
{{baseUrl}}/api/v1/check/screen/{token}
200 OKSample dataExample response
{
  "success": true,
  "response_code": 200,
  "message": "Screening completed",
  "data": {
    "screening_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "status": "completed",
    "subject": {
      "type": "individual",
      "name": "Grace Headline",
      "search_mode": "manual",
      "first_name": "Grace",
      "last_name": "Headline",
      "country": "KE"
    },
    "scopes": ["adverse_media"],
    "summary": {
      "has_adverse_media": true,
      "risk_level": "medium",
      "overall_risk_score": 55,
      "disposition": "pending_review"
    },
    "adverse_media": {
      "status": "match",
      "match_count": 1,
      "matches": [
        {
          "title": "Sandbox adverse media article",
          "snippet": "Demo adverse media hit for integrator testing.",
          "source": "sandbox_news",
          "published_at": "2024-06-01",
          "url": "https://example.com/sandbox-adverse-media"
        }
      ],
      "sources": ["sandbox_news"],
      "details": "Sandbox adverse media match (demo data)."
    },
    "completed_at": "2026-09-03T10:00:01Z"
  },
  "request_id": "550e8400-e29b-41d4-a716-446655440000"
}

Sample β€” organisation sanctions

entity_name Blocked Holdings Ltd. scopes: ["sanctions", "adverse_media"] β€” both buckets returned; only sanctions matches.

GET/api/v1/check/screen/{token}
{{baseUrl}}/api/v1/check/screen/{token}
200 OKSample dataExample response
{
  "success": true,
  "response_code": 200,
  "message": "Screening completed",
  "data": {
    "screening_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "status": "completed",
    "subject": {
      "type": "organisation",
      "name": "Blocked Holdings Ltd",
      "search_mode": "organisation",
      "country": "KE"
    },
    "scopes": ["sanctions", "adverse_media"],
    "summary": {
      "has_sanctions_hit": true,
      "has_adverse_media": false,
      "risk_level": "high",
      "overall_risk_score": 80,
      "disposition": "pending_review"
    },
    "sanctions": {
      "status": "match",
      "match_count": 1,
      "matches": [
        {
          "name": "Blocked Holdings Ltd",
          "list": "UN Consolidated (sandbox)",
          "score": 88.0,
          "country": "KE"
        }
      ],
      "sources": ["sandbox_sanctions"],
      "details": "Sandbox sanctions match (demo data)."
    },
    "adverse_media": {
      "status": "no_match",
      "match_count": 0,
      "matches": [],
      "sources": [],
      "details": "No adverse media matches found (sandbox)."
    },
    "completed_at": "2026-09-03T10:00:01Z"
  },
  "request_id": "550e8400-e29b-41d4-a716-446655440000"
}

Sample β€” all scopes (PEP hit)

ID or names for Amina Ochieng with all scopes selected. Only requested buckets appear; sanctions and adverse_media are no_match.

GET/api/v1/check/screen/{token}
{{baseUrl}}/api/v1/check/screen/{token}
200 OKSample dataExample response
{
  "success": true,
  "response_code": 200,
  "message": "Screening completed",
  "data": {
    "screening_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "status": "completed",
    "subject": {
      "type": "individual",
      "name": "Amina Njeri Ochieng",
      "search_mode": "id",
      "id_number": "AMLPEP0001",
      "first_name": "Amina",
      "other_names": "Njeri",
      "last_name": "Ochieng",
      "country": "KE"
    },
    "scopes": ["pep", "sanctions", "adverse_media"],
    "summary": {
      "is_pep": true,
      "has_sanctions_hit": false,
      "has_adverse_media": false,
      "pep_level": 2,
      "risk_level": "high",
      "overall_risk_score": 75,
      "disposition": "pending_review"
    },
    "pep": {
      "status": "match",
      "match_count": 1,
      "primary_match": {
        "name": "Amina Njeri Ochieng",
        "pep_level": 2,
        "score": 92.5,
        "positions": ["Former Cabinet Secretary"],
        "country": "KE",
        "source": "sandbox_pep_list"
      },
      "matches": [
        {
          "name": "Amina Njeri Ochieng",
          "pep_level": 2,
          "score": 92.5,
          "positions": ["Former Cabinet Secretary"],
          "country": "KE",
          "source": "sandbox_pep_list"
        }
      ],
      "sources": ["sandbox_pep_list"],
      "details": "Sandbox PEP match (demo data)."
    },
    "sanctions": {
      "status": "no_match",
      "match_count": 0,
      "matches": [],
      "sources": [],
      "details": "No sanctions matches found (sandbox)."
    },
    "adverse_media": {
      "status": "no_match",
      "match_count": 0,
      "matches": [],
      "sources": [],
      "details": "No adverse media matches found (sandbox)."
    },
    "completed_at": "2026-09-03T10:00:01Z"
  },
  "request_id": "550e8400-e29b-41d4-a716-446655440000"
}

Set {{baseUrl}} to https://api.peleza.com (production) or https://sandbox.peleza.com (sandbox). Authenticated calls need a Bearer token from POST /api/v1/oauth/token.