Documentation
Here you will find documentation for the ScreeningHub API.
This includes information on how to use the API, as well as examples of how to make requests and receive responses.
API Access
To access the ScreeningHub API, you will need to obtain an API key. You can do this by registering for an account on the ScreeningHub website.
Please log in to view your API credentials.
API Examples
Authentication
Get Access Token
Back to topDescription
This will return an access token that can be used to authenticate subsequent requests. Include it as 'bearer' in your Authorization header
Example Request
curl -X POST https://screeninghub.io/oauth/token \
-H "Content-Type: application/json"
-d \'{"client_id": "<your_client_id>", "client_secret": "<your_client_secret>"}\'
Example Response
{
"access_token": "<YOUR_ACCESS_TOKEN>",
"expires_in": 86400,
"token_type": "Bearer"
}
Screenings
One time Screening
Back to topDescription
This will return the result of the screening but won't save the screening nor the result
Example Request
curl -X GET "https://screeninghub.io/api/screen?name=Frederiksen&match_threshold=70" \
-H "Accept: application/json"
Example Response
{
"matches": [
{
"id": 783,
"name_first": "Sine",
"name_middle": null,
"name_last": "Frederiksen",
"name_full": "Sine Frederiksen",
"birth_date": "1979-09-14",
"position_title": "Arbejdstilsynet, direktør",
"position_organization": null,
"newly_added": false,
"record_date_added": "2022-08-30",
"record_date_removed": null,
"entity_type": "person",
"active": true,
"nationality": null,
"import_source_id": 1,
"scores": {
"name_coeff_score": 86.96,
"name_levenshtein_score": 68.75
}
},
...
],
"match_count": 5,
"screened_at": "2025-08-15T13:59:56.847+00:00"
}
Paginate Screenings
Back to topExample Request
curl -X GET "https://screeninghub.io/api/screenings" \
-H "Accept: application/json" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"
Example Response
{
"screenings": [
{
"id": 1,
"screening_query": {
"model_type": "person",
"fields": {
"name": "Lars Larsen"
},
"match_type": "fuzzy",
"match_threshold": 57.0,
},
"created_at": "2025-08-19T13:35:17.888+02:00",
"updated_at": "2025-08-19T13:41:06.914+02:00",
"matches": [
{
"id": 486,
"name_first": "Lars Bay",
"name_middle": null,
"name_last": "Larsen",
"name_full": "Lars Bay Larsen",
"birth_date": "1953-06-08",
"position_title": "Dommer ved EU-Domstolen",
"position_organization": null,
"newly_added": false,
"record_date_added": "2017-12-29",
"record_date_removed": null,
"entity_type": "person",
"active": true,
"nationality": null,
"import_source_id": 1,
"scores": {
"name_coeff_score": 88.89,
"name_levenshtein_score": 73.33
}
},
...
],
"match_count": 10,
"screened_at": "2025-08-19T13:35:17.885+02:00"
}
],
"links": {
"first": "/api/screenings?page=1&limit=20",
"last": "/api/screenings?page=1&limit=20",
"prev": null,
"next": null
}
}
Get specific Screening
Back to topExample Request
curl -X GET "https://screeninghub.io/api/screenings/1" \
-H "Accept: application/json" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"
Example Response
{
"id": 1,
"screening_query": {
"model_type": "person",
"fields": {
"name": "Mette Frederiksen"
},
"match_type": "fuzzy",
"match_threshold": 80.0
},
"created_at": "2025-09-12T11:11:50.748+02:00",
"updated_at": "2025-09-12T11:11:50.748+02:00",
"matches": [],
"match_count": 0,
"screened_at": "2025-09-12T12:05:07.733+02:00"
}
Create Screening
Back to topExample Request
curl -X POST "https://screeninghub.io/api/screenings" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
-d '{
"person": {
"name": "Frederiksen"
},
"match": {
"type": "fuzzy",
"threshold": 70
}
}'
Example Response
{
"matches": [
{
"id": 783,
"name_first": "Sine",
"name_middle": null,
"name_last": "Frederiksen",
"name_full": "Sine Frederiksen",
"birth_date": "1979-09-14",
"position_title": "Arbejdstilsynet, direktør",
"position_organization": null,
"newly_added": false,
"record_date_added": "2022-08-30",
"record_date_removed": null,
"entity_type": "person",
"active": true,
"nationality": null,
"import_source_id": 1,
"scores": {
"name_coeff_score": 86.96,
"name_levenshtein_score": 68.75
}
},
...
],
"match_count": 5,
"screened_at": "2025-08-15T13:57:11.973+00:00",
"screening_query": {
"model_type": "person",
"fields": {
"name": "Frederiksen"
},
"match_type": "fuzzy",
"match_threshold": 70.0,
},
}
Delete Screening
Back to topExample Request
curl -X DELETE "https://screeninghub.io/api/screenings/1" \
-H "Accept: application/json" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"
Example Response
200 OK
Schedules
Get all schedules
Back to topExample Request
curl -X GET https://screeninghub.io/api/schedules \
-H "Accept: application/json" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"
Example Response
{
"schedules": [
{
"id": 4,
"trigger_type": "Interval",
"interval": "Every day at midnight",
"event": null,
"start_date": "2025-09-10T11:00:00.000+02:00",
"valid_until": "2026-09-10T00:00:00.000+02:00",
"webhook": "",
"user_id": "1ac65fc4-28f6-45ea-8acf-899b14c9186c",
"created_at": "2025-09-05T15:32:26.134+02:00",
"screening_query": {
"model_type": "person",
"fields": {
"name": "Mette Frederiksen"
},
"match_type": "fuzzy",
"match_threshold": 80.0
},
"screenings_count": 2
},
...
],
"links": {
"first": "/api/schedules?page=1&limit=20",
"last": "/api/schedules?page=1&limit=20",
"prev": null,
"next": null
}
}
Get specific Schedule
Back to topExample Request
curl -X GET https://screeninghub.io/api/schedules/1 \
-H "Accept: application/json" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"
Example Response
{
"id": 8,
"trigger_type": "Event",
"interval": null,
"event": "pep_list",
"start_date": "2025-09-10T00:00:00.000+02:00",
"valid_until": "2026-09-10T00:00:00.000+02:00",
"webhook": "",
"user_id": "1ac65fc4-28f6-45ea-8acf-899b14c9186c",
"created_at": "2025-09-10T12:37:38.397+02:00",
"screening_query": {
"model_type": "person",
"fields": {
"name": "Mette Frederiksen"
},
"match_type": "fuzzy",
"match_threshold": 80.0
},
}
Trigger specific Schedule
Back to topDescription
Creates a Screening based on the Schedule
Example Request
curl -X GET https://screeninghub.io/api/screenings/< id >/trigger \
-H "Accept: application/json" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"
Example Response
{
"id": 8,
"trigger_type": "Event",
"interval": null,
"event": "pep_list",
"start_date": "2025-09-10T00:00:00.000+02:00",
"valid_until": "2026-09-10T00:00:00.000+02:00",
"webhook": "",
"user_id": "1ac65fc4-28f6-45ea-8acf-899b14c9186c",
"created_at": "2025-09-10T12:37:38.397+02:00",
"screening_query": {
"model_type": "person",
"fields": {
"name": "Mette Frederiksen"
},
"match_type": "fuzzy",
"match_threshold": 80.0
},
"screenings_count": 1
}
Create Schedule
Back to topExample Request
curl -X GET https://screeninghub.io/api/screenings \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
-d "{
"schedule": {
"screening": {
"person": {
"name": "Mette Frederiksen"
},
"match_threshold": 80
},
"trigger_type": "Event",
"event": "pep_list",
"start_date": "2025-09-10T00:00",
"valid_until": "2026-09-10"
}
}"
Example Response
{
"id": 8,
"trigger_type": "Event",
"interval": null,
"event": "pep_list",
"start_date": "2025-09-10T00:00:00.000+02:00",
"valid_until": "2026-09-10T00:00:00.000+02:00",
"user_id": "1ac65fc4-28f6-45ea-8acf-899b14c9186c",
"created_at": "2025-09-10T12:37:38.397+02:00",
"screening_query": {
"model_type": "person",
"fields": {
"name": "Mette Frederiksen"
},
"match_type": "fuzzy",
"match_threshold": 80.0
},
"screenings_count": 0
}
Delete Schedule
Back to topExample Request
curl -X DELETE https://screeninghub.io/api/schedules/1 \
-H "Accept: application/json" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"
Example Response
200 OK
Sources
ScreeningHub uses the following sources to check for PEPs and financial sanctions:
1. Danish PEP List - Maintained by the Danish Financial Supervisory Authority (Finanstilsynet), this list includes individuals who are Politically Exposed Persons (PEPs) in Denmark. It is based on reports from authorities and organizations required to report PEPs under the PEP Executive Order.
2. EU Financial Sanctions - The European Commission maintains a consolidated list of persons, groups, and entities subject to EU financial sanctions, including asset freezes. This list was initially compiled by EU banking federations and is now managed by the Commission to support compliance by public and private institutions, especially financial entities. While efforts are made to ensure accuracy, only the Official Journal of the EU holds legally binding information.