Техническая статья о подключении к API реестра проверок по санкционным спискам.

Опубликовано: 14.09.2025


API для проверки санкционных списков: техническое руководство по интеграции

Что под капотом?

Наш сервис предоставляет REST API для проверки физических и юридических лиц по 15+ санкционным спискам. Поиск осуществляется в режиме реального времени по открытым реестрам ООН, США (OFAC), ЕС, Великобритании, Канады, России и другим.

Базовый URL: https://ваш-домен.ru/api/sanc

Аутентификация: два пути

1. Через заголовок (рекомендуется)

X-API-Key: ваш_секретный_ключ

2. Через параметр URL

?api_key=ваш_секретный_ключ

Где взять ключ? После регистрации в личном кабинете генерируется уникальный API-ключ.

Параметры поиска

Достаточно одного из параметров:

  • name — ФИО или название организации, ИНН, ОГРН, SWIFT банка

    Примеры кода на разных языках

Python 3 (requests)

import requests

def check_sanctions(api_key, search_term, search_type='name'):
    url = f"https://ваш-домен.ru/api/sanc"
    headers = {"X-API-Key": api_key}
    params = {search_type: search_term}
    
    try:
        response = requests.get(url, headers=headers, params=params)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        return {"error": str(e)}

# Использование
result = check_sanctions("ваш_ключ", "Иванов Иван Иванович")
print(result)

JavaScript (Node.js)

const axios = require('axios');

async function checkSanctions(apiKey, searchValue, searchType = 'name') {
    try {
        const response = await axios.get('https://ваш-домен.ru/api/sanc', {
            headers: { 'X-API-Key': apiKey },
            params: { [searchType]: searchValue }
        });
        return response.data;
    } catch (error) {
        return { error: error.message };
    }
}

// Использование
checkSanctions('ваш_ключ', '7712345678', 'inn')
    .then(console.log);

Go

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
    "net/url"
)

func CheckSanctions(apiKey, searchValue, searchType string) (map[string]interface{}, error) {
    baseURL := "https://ваш-домен.ru/api/sanc"
    
    params := url.Values{}
    params.Add(searchType, searchValue)
    
    req, _ := http.NewRequest("GET", baseURL, nil)
    req.Header.Add("X-API-Key", apiKey)
    req.URL.RawQuery = params.Encode()
    
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()
    
    body, _ := ioutil.ReadAll(resp.Body)
    
    var result map[string]interface{}
    json.Unmarshal(body, &result)
    
    return result, nil
}

C# (.NET)

using System;
using System.Net.Http;
using System.Threading.Tasks;

public class SanctionChecker
{
    private static readonly HttpClient client = new HttpClient();
    
    public static async Task<string> CheckSanctionsAsync(string apiKey, string searchValue, string searchType = "name")
    {
        try
        {
            client.DefaultRequestHeaders.Add("X-API-Key", apiKey);
            string url = $"https://ваш-домен.ru/api/sanc?{searchType}={Uri.EscapeDataString(searchValue)}";
            
            HttpResponseMessage response = await client.GetAsync(url);
            response.EnsureSuccessStatusCode();
            
            return await response.Content.ReadAsStringAsync();
        }
        catch (Exception ex)
        {
            return $"{{\"error\": \"{ex.Message}\"}}";
        }
    }
}

1С (8.3+)

Функция ПроверитьСанкции(КлючAPI, ЗначениеПоиска, ТипПоиска = "name") Экспорт
    
    Запрос = Новый HTTPЗапрос();
    Запрос.Заголовки.Вставить("X-API-Key", КлючAPI);
    
    URL = "https://ваш-домен.ru/api/sanc?" + ТипПоиска + "=" + КодироватьСтроку(ЗначениеПоиска, СпособКодированияСтроки.КодировкаURL);
    
    Соединение = Новый HTTPСоединение("ваш-домен.ru", 443, "", "", Новый ЗащищенноеСоединениеOpenSSL());
    Ответ = Соединение.Получить(URL, Запрос);
    
    Если Ответ.КодСостояния = 200 Тогда
        Возврат ПрочитатьJSON(Ответ.ПолучитьТелоКакСтроку());
    Иначе
        Возврат Новый Структура("Ошибка", "Ошибка HTTP: " + Ответ.КодСостояния);
    КонецЕсли;
    
КонецФункции

// Использование
Результат = ПроверитьСанкции("ваш_ключ", "1234567890", "inn");
Сообщить(JSON(Результат));

PHP

<?php

function checkSanctions($apiKey, $searchValue, $searchType = 'name') {
    $url = "https://ваш-домен.ru/api/sanc?$searchType=" . urlencode($searchValue);
    
    $options = [
        'http' => [
            'header' => "X-API-Key: $apiKey\r\n",
            'method' => 'GET'
        ]
    ];
    
    $context = stream_context_create($options);
    $response = file_get_contents($url, false, $context);
    
    return $response ? json_decode($response, true) : ['error' => 'Request failed'];
}

// Использование
$result = checkSanctions('ваш_ключ', 'SABRRUMM', 'swift');
print_r($result);
?>

Обработка ответов

Успешный ответ с данными

{
  "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"
    }
  ]
}

Обработка ошибок

  • 401 Unauthorized — неверный API-ключ
  • 400 Bad Request — отсутствуют параметры поиска
  • 429 Too Many Requests — превышен лимит запросов
  • 500 Internal Server Error — внутренняя ошибка сервера

Интеграция в бизнес-процессы

1. CRM системы

Добавляйте проверку при создании нового контрагента

2. Финансовые операции

Проверяйте контрагентов перед проведением платежей

3. Onboarding клиентов

Включайте проверку в процесс верификации новых клиентов

Безопасность

  • Никогда не храните API-ключи в коде
  • Используйте environment variables
  • Ограничивайте доступ к ключам
  • Регулярно обновляйте ключи

Мониторинг и логирование

Реализуйте логирование всех запросов для аудита:

import logging

logging.basicConfig(filename='sanctions_checks.log', level=logging.INFO)

def log_check(search_type, search_value, result):
    has_match = result['Info'][0]['Fullname'] != 'Not result in base'
    logging.info(f"{datetime.now()}: {search_type}={search_value}, match={has_match}")

Заключение

Интеграция с API проверки санкционных списков — критически важная функция для compliance-процессов. Используйте приведенные примеры кода для быстрого старта и не забывайте об обработке ошибок и мониторинге.

Важно: Регулярно обновляйте зависимости и следите за изменениями в API через документацию.