Документация API для проверки санкционных списков
Введение
Наш сервис предоставляет мощный инструмент для скрининга контрагентов по обширной базе публичных санкционных списков и реестров в режиме реального времени. Интегрируйте проверку в ваши бизнес-процессы, CRM или учетные системы для автоматизации compliance-процедур, минимизации рисков и обеспечения безопасности сделок.
Источники данных
Поиск осуществляется по открытым источникам, СМИ, публичным реестрам и официальным спискам, включая:
- Санкционные списки Президента и Правительства РФ (№ 592, №252, №1300, №851)
- Списки ООН, США (OFAC), Великобритании, Канады, Европейского союза (ЕС)
- Реестры Интерпола (Red Notice, открытые данные) и ФБР США
- Список иностранных агентов Минюста РФ
- Реестр Росфинмониторинга
- И другие (более 13 реестров).
Что можно проверить
Поиск возможен по следующим параметрам: * ФИО (как на латинице, так и на кириллице) * Название организации (юридическое лицо) * ИНН организации * ОГРН организации * SWIFT/BIC код банка
Аутентификация в API
Для доступа к API используйте GET запрос на следующий эндпоинт:
/api/sanc
Для прохождения аутентификации необходимо указать ваш уникальный API-ключ. Это можно сделать одним из двух способов:
Через заголовок HTTP (рекомендуется для большей безопасности):
X-API-Key: ваш_api_ключ_из_личного_кабинета
Через параметр URL:
/api/sanc?api_key=ваш_api_ключ_из_личного_кабинета&name=Иванов Иван Иванович
Практические примеры
Пример 1: Python 3
Использование библиотеки requests
.
import requests
url = "https://ваш.домен.ru/api/sanc"
api_key = "ваш_секретный_api_ключ"
headers = {"X-API-Key": api_key}
params = {"name": "Иванов"} # Можно заменить на ИНН компании, ОГРН компании или SWIFT.
try:
response = requests.get(url, headers=headers, params=params)
response.raise_for_status() # Выбросит исключение при ошибке HTTP (4xx/5xx)
data = response.json()
# Обработка ответа
if data['Info'] and data['Info'][0]['Fullname'] != "Not result in base":
print("Найдены совпадения:")
for record in data['Info']:
print(f" - {record['Fullname']} ({record['Reestr']})")
else:
print("Совпадений не найдено.")
except requests.exceptions.RequestException as e:
print(f"Ошибка при выполнении запроса: {e}")
Пример 2: JavaScript (Node.js)
Использование библиотеки axios
. Установите: npm install axios
.
const axios = require('axios');
const url = 'https://ваш.домен.ru/api/sanc';
const apiKey = 'ваш_секретный_api_ключ';
const params = { name: 'Иванов' };
axios.get(url, {
headers: { 'X-API-Key': apiKey },
params: params
})
.then(response => {
const data = response.data;
if (data.Info && data.Info[0].Fullname !== "Not result in base") {
console.log("Найдены совпадения:");
data.Info.forEach(record => {
console.log(` - ${record.Fullname} (${record.Reestr})`);
});
} else {
console.log("Совпадений не найдено.");
}
})
.catch(error => {
console.error('Ошибка при выполнении запроса:', error.message);
});
Пример 3: Go
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
"net/url"
)
func main() {
baseURL := "https://ваш.домен.ru/api/sanc"
apiKey := "ваш_секретный_api_ключ"
// Формируем параметры запроса
params := url.Values{}
params.Add("name", "Иванов Иван Иванович")
// Создаем запрос
req, err := http.NewRequest("GET", baseURL, nil)
if err != nil {
log.Fatal(err)
}
// Добавляем заголовок и параметры
req.Header.Add("X-API-Key", apiKey)
req.URL.RawQuery = params.Encode()
// Выполняем запрос
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
// Читаем ответ
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
// Парсим JSON
var result map[string]interface{}
json.Unmarshal(body, &result)
info := result["Info"].([]interface{})
if len(info) > 0 {
firstRecord := info[0].(map[string]interface{})
if firstRecord["Fullname"] != "Not result in base" {
fmt.Println("Найдены совпадения:")
for _, record := range info {
r := record.(map[string]interface{})
fmt.Printf(" - %s (%s)\n", r["Fullname"], r["Reestr"])
}
} else {
fmt.Println("Совпадений не найдено.")
}
}
}
Пример 4: C# (.NET)
Рекомендуется использовать пакет Newtonsoft.Json
.
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static readonly HttpClient client = new HttpClient();
static async Task Main()
{
string baseUrl = "https://ваш.домен.ru/api/sanc";
string apiKey = "ваш_секретный_api_ключ";
// Добавляем API-ключ в заголовки
client.DefaultRequestHeaders.Add("X-API-Key", apiKey);
// Формируем параметры запроса
string query = $"{baseUrl}?name=Янукович"; // Можно заменить на &inn=... и т.д.
try
{
HttpResponseMessage response = await client.GetAsync(query);
response.EnsureSuccessStatusCode(); // Выбрасывает исключение при ошибке
string responseBody = await response.Content.ReadAsStringAsync();
// Динамический парсинг (для примера). Лучше использовать Newtonsoft.Json или System.Text.Json и создать классы.
dynamic data = Newtonsoft.Json.JsonConvert.DeserializeObject(responseBody);
if (data.Info[0].Fullname != "Not result in base")
{
Console.WriteLine("Найдены совпадения:");
foreach (var record in data.Info)
{
Console.WriteLine($" - {record.Fullname} ({record.Reestr})");
}
}
else
{
Console.WriteLine("Совпадений не найдено.");
}
}
catch (HttpRequestException e)
{
Console.WriteLine($"Ошибка при выполнении запроса: {e.Message}");
}
}
}
Обработка ответов и возможные ошибки
Успешный ответ с данными
Если совпадения найдены, API вернет JSON-объект с массивом Info
, содержащим все найденные записи.
{
"FULL_NAME": "Янукович",
"Info": [
{
"Fullname": "Янукович Виктор",
"Num": "143351",
"INN_Date": "1950-07-09",
"Dop": "Дополнительная информация…",
"Reestr": "Реестр ФЛ находящихся в санкционных списках ЕС"
}
// … другие записи
]
}
Успешный ответ без данных
Если совпадений не найдено ни в одном реестре, сервис вернет ответ с соответствующей меткой.
{
"FULL_NAME": "Бычков Айтекин Айтекинович",
"Info": [
{
"Fullname": "Not result in base",
"Num": "",
"INN_Date": "",
"Dop": "",
"Reestr": "All base sanction list"
}
]
}
Ошибки API
Код ошибки | Описание |
---|---|
401 Unauthorized |
Неверный или отсутствующий API-ключ. |
400 Bad Request |
Не передан обязательный параметр. |
429 Too Many Requests |
Превышена квота запросов по вашему тарифному плану. |
500 Internal Server Error |
Внутренняя ошибка сервера. Свяжитесь со службой поддержки. |