Отчёты и 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)