Finance OS / API

Отчёты и PDF

Каждая проверка сохраняется под своим id и доступна для повторного чтения - в JSON и в виде готового PDF. Прямая ссылка на PDF приходит в поле report_url каждого ответа.

Не тарифицируется повторно
Перечитывание отчёта (GET) и выгрузка PDF бесплатны и не создают новую проверку. Храните id из ответа создания и переиспользуйте его - не вызывайте POST повторно для одного и того же адреса, иначе создастся новая (тарифицируемая) проверка. Поле price в сохранённой записи показывает сумму, списанную при её создании, и со временем не меняется; у бесплатных вызовов оно равно null.

Список проверок

GET /api/v1/aml/checks
Bearer Token

Последние проверки текущего окружения

Возвращает до 100 последних проверок вашего контура в текущем окружении (sandbox или live, по префиксу ключа), новые - первыми. Каждый элемент имеет ту же форму, что и ответ создания.

Responses

{
  "data": [
    {
      "id": "b7e4c1a2-3f5d-4e8a-9c1b-2d6f7a8e0b3c",
      "address": "TXYZ1234567890abcdefGHIJKLmnop",
      "network": "tron",
      "risk_score": 64,
      "risk_level": "high",
      "report": { "...": "полный отчёт, как в ответе создания" },
      "price": "0.2000000000",
      "pricing": { "markup_pct": 0, "price": "0.2000000000", "currency": "USDT" },
      "report_url": "https://fin-os.io/api/v1/aml/checks/b7e4c1a2-3f5d-4e8a-9c1b-2d6f7a8e0b3c/report.pdf",
      "created_at": "2026-07-13T10:24:00+00:00"
    }
  ]
}

Пагинации нет - возвращаются 100 последних записей. Для собственной истории сохраняйте проверки на своей стороне по id.

Одна проверка

GET /api/v1/aml/checks/{id}
Bearer Token

Получить сохранённую проверку по id

id - это id из ответа создания. Проверка ищется в скоупе вашего контура и текущего окружения; чужие или не из этого окружения - 404. Возвращается сохранённый снимок, повторная оценка не выполняется.

Responses

{
  "data": {
    "id": "b7e4c1a2-3f5d-4e8a-9c1b-2d6f7a8e0b3c",
    "address": "TXYZ1234567890abcdefGHIJKLmnop",
    "network": "tron",
    "risk_score": 64,
    "risk_level": "high",
    "report": { "...": "полный отчёт, как в ответе создания" },
    "price": "0.2000000000",
    "pricing": { "markup_pct": 0, "price": "0.2000000000", "currency": "USDT" },
    "report_url": "https://fin-os.io/api/v1/aml/checks/b7e4c1a2-3f5d-4e8a-9c1b-2d6f7a8e0b3c/report.pdf",
    "created_at": "2026-07-13T10:24:00+00:00"
  }
}

PDF-отчёт

GET /api/v1/aml/checks/{id}/report.pdf
Bearer Token

Скачать обезличенный отчёт в PDF

Возвращает PDF-файл (Content-Disposition: attachment, имя aml-report-{id}.pdf) - тот же обезличенный отчёт в печатной форме, готовый для комплаенс-архива. Требует тот же Bearer-ключ, что и остальные вызовы (ссылка report_url не публичная). Прямая ссылка приходит в поле report_url каждой проверки.
Что внутри PDF
Печатный отчёт содержит те же обезличенные данные, что и JSON: итоговый risk_score / risk_level / рекомендацию, сигналы, факторы и агрегаты по сетям. Имена внутренних источников данных не раскрываются. Подходит для приложения к комплаенс-делу.

Примеры кода

# Список последних проверок текущего окружения
curl -X GET https://fin-os.io/api/v1/aml/checks \
  -H "Authorization: Bearer sk_test_..."

# Одна проверка по id
curl -X GET https://fin-os.io/api/v1/aml/checks/$CHECK_ID \
  -H "Authorization: Bearer sk_test_..."

# Скачать PDF-отчёт
curl -L -X GET https://fin-os.io/api/v1/aml/checks/$CHECK_ID/report.pdf \
  -H "Authorization: Bearer sk_test_..." \
  -o aml-report.pdf
const FINOS = 'https://fin-os.io/api/v1';
const KEY   = process.env.FINOS_SECRET_KEY;
const H     = { 'Authorization': `Bearer ${KEY}` };

// Список последних проверок
async function listChecks() {
  const res = await fetch(`${FINOS}/aml/checks`, { headers: H });
  return (await res.json()).data;
}

// Перечитать проверку по id (без повторной тарификации)
async function getCheck(id) {
  const res = await fetch(`${FINOS}/aml/checks/${id}`, { headers: H });
  return (await res.json()).data;
}

// Скачать PDF (в браузере)
async function downloadReport(id) {
  const res  = await fetch(`${FINOS}/aml/checks/${id}/report.pdf`, { headers: H });
  const blob = await res.blob();
  const url  = URL.createObjectURL(blob);
  Object.assign(document.createElement('a'), { href: url, download: `aml-report-${id}.pdf` }).click();
}
use Illuminate\Support\Facades\Http;

$base = 'https://fin-os.io/api/v1';
$key  = config('services.finos.secret_key');

// Список последних проверок
$list = Http::withToken($key)->get("{$base}/aml/checks")->json('data');

// Перечитать проверку по id (снимок, без повторной оплаты)
$check = Http::withToken($key)->get("{$base}/aml/checks/{$id}")->json('data');

// Скачать PDF в файл
$pdf = Http::withToken($key)->get("{$base}/aml/checks/{$id}/report.pdf")->body();
file_put_contents("aml-report-{$id}.pdf", $pdf);
import requests, os

FINOS = 'https://fin-os.io/api/v1'
KEY   = os.environ['FINOS_SECRET_KEY']
H     = {'Authorization': f'Bearer {KEY}'}

def list_checks():
    return requests.get(f'{FINOS}/aml/checks', headers=H).json()['data']

def get_check(check_id):
    # снимок, без повторной тарификации
    return requests.get(f'{FINOS}/aml/checks/{check_id}', headers=H).json()['data']

def download_report(check_id, path='aml-report.pdf'):
    r = requests.get(f'{FINOS}/aml/checks/{check_id}/report.pdf', headers=H)
    r.raise_for_status()
    with open(path, 'wb') as f:
        f.write(r.content)