OFAC API Response

POST /v1/screen returns one subject at the top level. POST /v1/screen/batch returns the same match objects inside a results array, one entry per subject. Both responses are synchronous.

Single response

metadata, subject_ref, subject_type, and matches sit on the root object. There is no results array. This example screened only the OFAC SDN list, so metadata.sources contains ofac_sdn.

{
  "metadata": {
    "screened_at": "2026-04-21T13:12:28Z",
    "min_score": 80,
    "max_results": 10,
    "sources": [
      {
        "id": "ofac_sdn",
        "file_generated_on": "2026-04-20",
        "file_downloaded_at": "2026-04-21T13:05:00Z",
        "file_sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
      }
    ]
  },
  "subject_ref": "client_123",
  "subject_type": "INDIVIDUAL",
  "matches": [
        {
          "score": 100,
          "matched_subject": {
            "type": "INDIVIDUAL",
            "primary_name": "Kim Jong Un",
            "personal_details": {
              "date_of_birth": ["1984-01-08"],
              "title": ["Chairman of the Workers' Party of Korea"]
            },
            "locations": [
              {
                "country": "Korea, North",
                "country_code": "KP"
              }
            ],
            "sanction_details": [
              {
                "type": "secondary_sanctions_risk",
                "value": "North Korea Sanctions Regulations, sections 510.201 and 510.210"
              },
              {
                "type": "transactions_prohibited_usfi_owned_controlled",
                "value": "North Korea Sanctions Regulations section 510.214"
              }
            ]
          },
          "match_reasons": [
            {
              "summary": "Exact primary name match.",
              "field": "name",
              "status": "exact",
              "query": "Kim Jong Un",
              "list": "Kim Jong Un",
              "list_type": "primary"
            }
          ],
          "sanctions": [
            {
              "source": "OFAC",
              "list": "SDN List",
              "programs": ["DPRK3"],
              "measures": ["Block"],
              "legal_basis": ["Executive Order 13722 (North Korea)"]
            }
          ]
        }
      ]
}

Top-level fields

metadata

FieldTypeDescription
screened_atstringServer time the screen ran (UTC)
min_scoreintegerScore threshold used. Omitted on POST /v1/screen/wallet.
max_resultsintegerMax matches returned for each subject. Omitted on POST /v1/screen/wallet, which returns every exact match.
sourcesarray<object>Lists that were screened. Always present.

sources is always the lists this call screened. Ids and their fixed order are in lists. Omit options.sources and every id is present. Send two ids and those two are present, in that order, not the order they were written in the request. On a batch, metadata is once at the root and sources is the same for every subject.

FieldTypeDescription
idstringList id. Always present.
file_generated_onstringDate on the list file. Omitted when that file has no generation date. Canada omits it.
file_downloaded_atstringWhen the live file was downloaded (UTC).
file_sha256stringSHA-256 of the live file.

These values come from the live import of that list. A list with no live import is returned as id only, and the screen still succeeds.

Single subject fields

On POST /v1/screen and POST /v1/screen/wallet these fields are on the root, next to metadata. On POST /v1/screen/batch each subject is one object in results.

FieldTypeDescription
subject_refstringEchoed from request (if provided)
subject_typestringEchoed when the request sent type. Omitted when it did not.
matchesarray<object>Ranked matches for the subject
subject_queryobjectEchoed request subject when options.include_subject_query=true

Fields without a value are omitted. matches is always present and is an empty array when there are no matches.

match object

Description: Each item in matches represents a potential match.

FieldTypeDescription
scoreintegerMatch confidence (0-100)
match_reasonsarray<object>Why this hit scored: one object per compared field
matched_subjectobjectMatched sanctions subject
sanctionsarray<object>Associated sanctions entries

match_reasons object

Each item describes one compared field. Unused fields are omitted.

FieldTypeDescription
summarystringShort explanation
fieldstringCompared field (name, identifier, date_of_birth, country, …)
statusstringexact, similar, match, or conflict
querystringValue from the request
liststringValue from the sanctions record
list_typestringRole of the list value (e.g. primary, alias, passport)

matched_subject

Description: Basic information about the matched subject.

FieldTypeDescription
typestringSubject type
primary_namestringMain name
aliasesarray<string>Alternate names (if available)
identifiersarray<object>Associated identifiers
personal_detailsobjectReturned for individuals (if available)
locationsarray<object>Associated locations (if available)
sanction_detailsarray<object>Additional sanctions context

*Fields vary depending on the subject type and available data.

Sanctions object

FieldTypeDescription
sourcestringSanctions source (e.g. OFAC)
liststringList name (e.g. SDN List)
programsarray<string>Sanctions programs
measuresarray<string>Applied measures
legal_basisarray<string>Legal references

Notes

  • Matches are sorted by score (highest first)
  • Each subject returns its own matches array
  • Fields vary depending on available sanctions data
  • Result count is limited by max_results. On a batch this cap applies to each subject.
  • POST /v1/screen/wallet uses the single-screen shape. subject_ref is echoed when the request sent it. subject_type is CRYPTO. metadata.sources is ofac_sdn. metadata omits min_score and max_results. Every exact match is returned.