Introduction

The KryoGuard API provides a powerful set of tools to automate and streamline your compliance workflows. With our RESTful API, you can integrate key compliance tasks such as sanction screening, identity verification, KYC/KYB processes, transaction monitoring, and terms of service enforcement directly into your applications.

Our API is designed with simplicity and scalability in mind, offering predictable resource-oriented URLs, clear authentication methods, and easy-to-understand request and response formats. Whether you're managing large-scale operations or focusing on specific compliance tasks, the KryoGuard API is built to fit seamlessly into your existing systems.

In this documentation, you'll find everything you need to get started with the KryoGuard API—detailed guides, reference materials, and code examples to help you integrate, test, and implement our solutions with ease.

Authentication

KryoGuard uses OAuth 2.0's Client Credentials Grant to authenticate API requests. This method allows your application to obtain an access token using your client_id and client_secret.

You will need to include this token in the Authorization header for all subsequent API requests.

POST https://auth.kryoguard.com/realms/kryoguard-dev/protocol/openid-connect/token

Request Headers

HeaderValue
Content-Typeapplication/x-www-form-urlencoded

Request Parameter

ParameterTypeDescription
grant_typestringSet to client_credentials.
client_idstringYour client ID.
client_secretstringYour client secret
scopestringSet to openid.

Here's an example on how to obtain an access token:

import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class KryoGuardAuth {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(new URI("https://auth.kryoguard.com/realms/kryoguard-dev/protocol/openid-connect/token"))
            .header("Content-Type", "application/x-www-form-urlencoded")
            .POST(HttpRequest.BodyPublishers.ofString(
                "grant_type=client_credentials&client_id=kryoguard-client&client_secret=YOUR_CLIENT_SECRET&scope=openid"
            ))
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}

Sanction Screening

The Sanctions Search API allows developers to search for individuals, entities, and documents within the OFAC (Office of Foreign Assets Control), UN (United Nations), and UK (United Kingdom) sanction lists. This endpoint helps in automating compliance checks by providing detailed results based on the search criteria provided.

Endpoint

POST /api/search

Base URL:https://api-dev.kryoguard.com

Full Endpoint URL

https://api-dev.kryoguard.com/api/search

Method

POST

Request

Headers

KeyValueRequiredDescription
Content-Typeapplication/jsonSpecifies the payload type.
Content-TypeBearer <Your_JWT_Token>JWT token for authentication and authorization.

JSON Request Field Descriptions

The request body should be a JSON object containing the following fields:

FieldTypeRequiredDescription
individualsArrayOptionalList of individuals to search for. Each entry is an object.
entitiesArrayOptionalList of entities to search for. Each entry is an object.
documentsArrayOptionalList of documents to search for. Each entry is an object.

Individual Object Fields

FieldTypeRequiredDescription
firstNameStringFirst name of the individual.
middleNameStringOptionalMiddle name of the individual.
lastNameStringOptionalLast name of the individual.
dateOfBirthStringOptionalDate of birth of the individual in YYYY-MM-DD format.
genderStringOptionalGender of the individual (e.g., "Male" or "Female").
titleStringOptionalTitle or honorific of the individual (e.g., "Dr.", "Mr.", "Ms.").
addressObjectOptionalAddress details of the individual. This is a nested object.

Address Object Fields (for Individuals)

FieldTypeRequiredDescription
addressLine1StringOptionalThe first line of the street address.
addressLine2StringOptionalThe second line of the street address (e.g., apartment or suite number).
addressLine3StringOptionalThe third line of the street address, if applicable.
cityStringOptionalThe city of the address.
stateStringOptionalThe state or province of the address.
postalCodeStringOptionalThe postal code of the address.
zipCodeStringOptionalThe ZIP code of the address (used primarily in the U.S.).
regionStringOptionalThe region or territory of the address.
countryStringOptionalThe country of the address.

Entities Object

FieldTypeRequiredDescription
nameStringThe name of the entity (e.g., organization, group, or company).
addressObjectOptionalThe address details of the entity.

Address Object for Entities

The address field in the Entities Object contains the following subfields:

FieldTypeRequiredDescription
addressLine1StringOptionalThe first line of the entity's address.
addressLine2StringOptionalThe second line of the entity's address (e.g., suite number).
addressLine3StringOptionalThe third line of the entity's address, if applicable.
cityStringOptionalThe city of the entity's address.
stateStringOptionalThe state or province of the entity's address.
postalCodeStringOptionalThe postal code of the entity's address.
zipCodeStringOptionalThe ZIP code of the entity's address (primarily for the United States).
regionStringOptionalThe region or territory of the entity's address.
countryStringOptionalThe country of the entity's address.

Documents Object Fields

FieldTypeRequiredDescription
documentNumberStringRequiredThe unique number associated with the document (e.g., passport number).
documentCountryStringRequiredThe issuing country of the document.
documentIssuingAuthorityStringOptionalThe authority or organization that issued the document.
documentTypeStringRequiredThe type of document (e.g., Passport, ID Card).
documentNationalityStringRequiredThe nationality associated with the document holder.

Sample Code

import java.net.HttpURLConnection;
import java.net.URL;
import java.io.OutputStream;

public class SearchSanction {
    public static void main(String[] args) throws Exception {
        String url = "http://localhost:8080/api/search";
        String token = "Bearer <YOUR_JWT_TOKEN>";

        // JSON request body
        String jsonInputString = "{ "individuals": [ { ...} ], "entities": [ { ... } ], "documents": [ {...} ] }";

        // Open connection to the URL
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod("POST");
        con.setRequestProperty("Content-Type", "application/json");
        con.setRequestProperty("Authorization", token);
        con.setDoOutput(true);

        // Send the JSON request body
        try (OutputStream os = con.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        // Get response code and output
        int responseCode = con.getResponseCode();
        System.out.println("Response Code: " + responseCode);
    }
}