Get a customer by ID
To fetch the status of a customer by ID, you must send a GET request to the following endpoint:
https://platform.arva.ai/api/v0/customer/getById?id=<CUSTOMER_ID>
You must provide the customer ID as an id
parameter in the query string.
curl -X GET "https://platform.arva.ai/api/v0/customer/getById?id=<CUSTOMER_ID>" -H "Authorization: Bearer <API_KEY>"
npm i @arva-ai/sdk
const arva = require('arva-ai')
const client = new arva.Client({
apiKey: '<API_KEY>',
})
const customer = await client.customer.getById('<CUSTOMER_ID>')
import requests
response = requests.get('https://platform.arva.ai/api/v0/customer/getById?id=<CUSTOMER_ID>', headers={'Authorization': 'Bearer <API_KEY>'})
customer = response.json()
pip install arva-sdk
from arva import Client
client = Client(api_key='<API_KEY>')
customer = client.customer.get_by_id('<CUSTOMER_ID>')
The response will be a JSON object with the following fields:
{
id: string // customer ID
name: string
state: string | undefined
createdAt: Date
verdict: 'ACCEPT' | 'REJECT' | 'REQUEST_INFORMATION' | 'PENDING'
riskLevel: 'HIGH' | 'MEDIUM' | 'LOW' | undefined
periodicReviewYears: number | undefined // undefined unless the verdict is ACCEPT
rfi: string | undefined // undefined unless the verdict is REQUEST_INFORMATION
requiresManualReview: boolean
checks: {
type: string
verdict: 'ACCEPT' | 'REJECT' | 'REQUEST_INFORMATION' | 'PENDING'
riskLevel: 'HIGH' | 'MEDIUM' | 'LOW' | undefined // undefined unless the verdict is ACCEPT
reason: string
periodicReviewYears: number | undefined // undefined unless the verdict is ACCEPT
requiresManualReview: boolean
proofs: Proof[]
// Some checks return additional details e.g. registry results
details: Record<string, unknown> | undefined
}[]
entities: EntityWithScreeningResults[]
}
Where:
type Proof = {
id: string
type: 'DOCUMENT' | 'WEBSITE'
inferredType: string
name: string
url: string
}
type IndividualEntity = {
type: 'individual'
metadata: {
firstName: string
middleNames: string | undefined
lastName: string
dateOfBirth: {
day: number | undefined
month: number | undefined
year: number
} | undefined
address: string | undefined
country: string | undefined
}
}
type CorporateOrTrustEntity = {
type: 'corporate' | 'trust'
metadata: {
name: string
registrationJurisdiction: string | undefined
registrationNumber: string | undefined
address: string | undefined
}
relationships: Relationship[]
}
type Entity = IndividualEntity | CorporateOrTrustEntity
type Relationship = {
type: 'director' | 'officer' | 'psc'
positions: string[]
} | {
type: 'owner'
ownershipPercentage: number
entityId?: string // ID of the owned entity, if not the customer entity
} | {
type: 'additional'
reason: string
}
type EntityWithScreeningResults = Entity & {
screeningHits: ScreeningResult[]
}
type ScreeningResult = {
type: 'adverse_media' | 'sanctions_screening' | 'peps_screening' | 'other_screening'
verdict: 'LOW' | 'MEDIUM' | 'HIGH' | 'REJECT' | 'DISCOUNTED' | 'REVIEW'
reason: string
source: string // e.g. 'webSearch', 'complyAdvantage'
fromMonitoring: boolean
externalIds: {
// varies by provider
}
matchingName: string
// Additional fields vary by type and provider
names: string[] | undefined
url: string | undefined
date: string | undefined
lists: {
name: string
identifier: string
url: string
countryCodes: string[]
dateAdded: string
}[] | undefined
groupId: string | undefined // Adverse media hits that share the same groupId are likely to be the same event
}
Finally, learn about webhooks.