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 top

Description

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 top

Description

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 top

Example 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 top

Example 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 top

Example 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 top

Example 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 top

Example 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 top

Example 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 top

Description

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 top

Example 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 top

Example 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.