🔌 API ai-bnk.ru
REST API для интеграции сервисов ai-bnk.ru с вашими приложениями, CRM-системами и автоматизациями.
Что можно делать через API?
- Получать лиды из чат-виджета «Олег, помоги» в реальном времени
- Получать статьи, сгенерированные сервисом «Галя, напиши»
- Настраивать webhooks для мгновенных уведомлений о новых лидах
- Управлять API ключами с автоматической ротацией
https://ai-bnk.ru/api/v1/
🚀 Быстрый старт
Начните работу с API за 3 простых шага:
Шаг 1: Получите API ключ
Войдите в личный кабинет → API и создайте новый ключ. Ключ показывается только один раз — сохраните его сразу.
Шаг 2: Сделайте первый запрос
curl -X GET "https://ai-bnk.ru/api/v1/oleg/leads" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ"
Шаг 3: Обработайте ответ
{
"items": [
{
"id": "abc123",
"name": "Иван Петров",
"email": "ivan@example.com",
"phone": "+79001234567",
"captured_at": "2026-03-14T10:30:00Z"
}
],
"page": 1,
"per_page": 20,
"total": 1
}
🔐 Аутентификация
Все запросы должны содержать заголовок Authorization с вашим API ключом.
Формат заголовка
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxx
Структура ключа
| Префикс | Тип | Описание |
|---|---|---|
sk_live_ | Production | Боевой ключ для реальных данных |
sk_test_ | Testing | Тестовый ключ (в разработке) |
- Никогда не храните ключи в клиентском JavaScript
- Не включайте ключи в репозитории (git)
- Используйте переменные окружения
- Ротируйте ключи каждые 90 дней
Примеры в разных языках
import requests
API_KEY = "sk_live_ваш_ключ"
BASE_URL = "https://ai-bnk.ru/api/v1"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
response = requests.get(
f"{BASE_URL}/oleg/leads",
headers=headers
)
data = response.json()
print(data)
const API_KEY = 'sk_live_ваш_ключ';
const BASE_URL = 'https://ai-bnk.ru/api/v1';
const response = await fetch(
`${BASE_URL}/oleg/leads`,
{
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
}
}
);
const data = await response.json();
console.log(data);
<?php
$apiKey = 'sk_live_ваш_ключ';
$baseUrl = 'https://ai-bnk.ru/api/v1';
$ch = curl_init("$baseUrl/oleg/leads");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $apiKey",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data);
# Установите ключ в переменную
export API_KEY="sk_live_ваш_ключ"
# Выполните запрос
curl -X GET \
"https://ai-bnk.ru/api/v1/oleg/leads" \
-H "Authorization: Bearer $API_KEY"
❌ Обработка ошибок
API возвращает стандартные HTTP коды и JSON с описанием ошибки.
Коды ответов
| Код | Статус | Описание |
|---|---|---|
| 200 | OK | Запрос выполнен успешно |
| 201 | Created | Ресурс создан |
| 400 | Bad Request | Некорректные параметры |
| 401 | Unauthorized | Неверный API ключ |
| 403 | Forbidden | Нет прав (scope) |
| 404 | Not Found | Ресурс не найден |
| 429 | Too Many | Превышен лимит |
| 500 | Server Error | Ошибка сервера |
Формат ошибки
{
"detail": "Invalid API key",
"error_code": "invalid_api_key",
"status_code": 401
}
⏱️ Лимиты запросов
| Параметр | Значение | Описание |
|---|---|---|
| Запросов в минуту | 120 | На один API ключ |
| Срок действия ключа | 90 дней | Автоистечение |
| Макс. на странице | 100 | per_page |
💬 Получить список лидов
Список лидов из чат-виджета «Олег, помоги» с пагинацией.
Query параметры
| Параметр | Тип | Описание |
|---|---|---|
page | int | Номер страницы (default: 1) |
per_page | int | На странице (default: 20, max: 100) |
since | datetime | Лиды после даты (ISO 8601) |
Пример ответа
{
"items": [
{
"id": "d7f3a2b1-5c8e-4f12-...",
"name": "Иван Петров",
"email": "ivan@example.com",
"phone": "+79001234567",
"captured_at": "2026-03-14T10:30:00Z",
"status": "new",
"dialog": {
"messages": [...],
"url": "https://client-site.ru/page"
}
}
],
"page": 1,
"per_page": 20,
"total": 47
}
💬 Получить один лид
Детальная информация об одном лиде.
✍️ Получить список статей
Статьи из сервиса «Галя, напиши».
Query параметры
| Параметр | Тип | Описание |
|---|---|---|
page | int | Страница |
per_page | int | На странице (max: 100) |
status | string | draft | published | scheduled |
since | datetime | После даты публикации |
Пример ответа
{
"items": [
{
"id": "a1b2c3d4-...",
"title": "10 способов увеличить продажи",
"content": "Полный текст статьи...",
"tags": ["бизнес", "продажи"],
"status": "published",
"published_at": "2026-03-14T09:00:00Z",
"word_count": 1250
}
],
"page": 1,
"per_page": 20,
"total": 23
}
✍️ Получить одну статью
Полный текст одной статьи по UUID.
🔑 Список API ключей
Ваши API ключи (без секретной части).
Пример ответа
[
{
"id": "key_abc123",
"key_prefix": "sk_live_abc1",
"name": "Production Key",
"scopes": ["oleg:leads:read"],
"expires_at": "2026-06-01T12:00:00Z",
"is_active": true
}
]
🔑 Создать API ключ
Создаёт новый ключ. Полный ключ показывается один раз!
Тело запроса
{
"name": "CRM Integration",
"scopes": ["oleg:leads:read", "galya:articles:read"]
}
Доступные scopes
| Scope | Описание |
|---|---|
oleg:leads:read | Чтение лидов |
galya:articles:read | Чтение статей |
keys:manage | Управление ключами |
webhooks:manage | Управление webhooks |
🔑 Ротация ключа
Создаёт новый ключ, старый деактивируется через 24ч.
🔑 Удалить ключ
Немедленно деактивирует API ключ.
🔔 Webhooks — Обзор
Получайте уведомления о событиях в реальном времени без опроса API.
Преимущества
- Мгновенность — данные сразу после события
- Экономия — не нужно опрашивать API
- Надёжность — автоповторы при ошибках
Как работает
- Регистрируете URL для событий
- Получаете секрет для проверки подписи
- При событии приходит POST на ваш URL
- Проверяете подпись и обрабатываете
🔔 Создать webhook
Регистрирует endpoint для событий.
Тело запроса
{
"url": "https://your-server.com/webhook",
"events": ["oleg.lead.new"]
}
Пример ответа
{
"id": "wh_abc123",
"url": "https://your-server.com/webhook",
"secret": "whsec_xxxxxxxx",
"events": ["oleg.lead.new"],
"is_active": true
}
🔔 Проверка подписи
Каждый webhook подписан HMAC-SHA256. Обязательно проверяйте!
Заголовки запроса
| Заголовок | Описание |
|---|---|
X-Webhook-Signature | sha256=xxxxx |
X-Webhook-Event | Тип события |
X-Webhook-Timestamp | Unix timestamp |
Примеры проверки
import hmac
import hashlib
def verify(payload, signature, timestamp, secret):
expected = hmac.new(
secret.encode(),
f"{timestamp}.".encode() + payload,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(
f"sha256={expected}",
signature
)
const crypto = require('crypto');
function verify(payload, signature, timestamp, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(`${timestamp}.${payload}`)
.digest('hex');
return `sha256=${expected}` === signature;
}
function verify($payload, $signature, $timestamp, $secret) {
$expected = 'sha256=' . hash_hmac(
'sha256',
"$timestamp.$payload",
$secret
);
return hash_equals($expected, $signature);
}
🔔 События
oleg.lead.new
Новый лид из чат-виджета.
{
"event": "oleg.lead.new",
"timestamp": "1710412200",
"payload": {
"id": "d7f3a2b1-...",
"name": "Иван Петров",
"email": "ivan@example.com",
"phone": "+79001234567"
}
}
galya.article.published
Новая статья опубликована.
{
"event": "galya.article.published",
"timestamp": "1710412200",
"payload": {
"id": "a1b2c3d4-...",
"title": "Название статьи",
"public_url": "https://ai-bnk.ru/galya/..."
}
}
🐍 Python — Полный пример
import requests
from datetime import datetime, timedelta
class AIBnkClient:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://ai-bnk.ru/api/v1"
self.session = requests.Session()
self.session.headers.update({
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
})
def get_leads(self, page=1, per_page=20, since=None):
params = {"page": page, "per_page": per_page}
if since:
params["since"] = since
r = self.session.get(
f"{self.base_url}/oleg/leads",
params=params
)
r.raise_for_status()
return r.json()
def get_new_leads(self, hours=24):
since = (datetime.utcnow() - timedelta(hours=hours))
since = since.isoformat() + "Z"
return self.get_leads(per_page=100, since=since)
# Использование
client = AIBnkClient("sk_live_ваш_ключ")
leads = client.get_new_leads(hours=24)
print(f"Новых лидов: {leads['total']}")
for lead in leads['items']:
print(f"- {lead['name']}: {lead['email']}")
💚 Node.js — Полный пример
class AIBnkClient {
constructor(apiKey) {
this.apiKey = apiKey;
this.baseUrl = 'https://ai-bnk.ru/api/v1';
}
async request(endpoint, options = {}) {
const r = await fetch(`${this.baseUrl}${endpoint}`, {
...options,
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json',
...options.headers
}
});
if (!r.ok) throw new Error(`HTTP ${r.status}`);
return r.json();
}
getLeads(params = {}) {
const q = new URLSearchParams(params);
return this.request(`/oleg/leads?${q}`);
}
createWebhook(url, events) {
return this.request('/webhooks', {
method: 'POST',
body: JSON.stringify({ url, events })
});
}
}
// Использование
const client = new AIBnkClient('sk_live_ваш_ключ');
const { items, total } = await client.getLeads({ per_page: 50 });
console.log(`Всего лидов: ${total}`);
leads.forEach(lead => {
console.log(`${lead.name}: ${lead.email}`);
});
🐘 PHP — Полный пример
<?php
class AIBnkClient {
private $apiKey;
private $baseUrl = 'https://ai-bnk.ru/api/v1';
public function __construct($apiKey) {
$this->apiKey = $apiKey;
}
private function request($endpoint, $method = 'GET', $data = null) {
$ch = curl_init($this->baseUrl . $endpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer {$this->apiKey}",
"Content-Type: application/json"
]);
if ($method === 'POST') {
curl_setopt($ch, CURLOPT_POST, true);
if ($data) {
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
}
}
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
public function getLeads($page = 1, $perPage = 20) {
return $this->request("/oleg/leads?page=$page&per_page=$perPage");
}
}
// Использование
$client = new AIBnkClient('sk_live_ваш_ключ');
$result = $client->getLeads(1, 50);
echo "Всего лидов: " . $result['total'] . "\n";
foreach ($result['items'] as $lead) {
echo "- {$lead['name']}: {$lead['email']}\n";
}
📟 cURL — Примеры команд
Получить лиды
curl "https://ai-bnk.ru/api/v1/oleg/leads" \
-H "Authorization: Bearer sk_live_ваш_ключ"
Получить статьи
curl "https://ai-bnk.ru/api/v1/galya/articles?status=published" \
-H "Authorization: Bearer sk_live_ваш_ключ"
Создать webhook
curl -X POST "https://ai-bnk.ru/api/v1/webhooks" \
-H "Authorization: Bearer sk_live_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{"url":"https://your-server.com/wh","events":["oleg.lead.new"]}'
❓ FAQ
Как получить API ключ?
Личный кабинет → API → Создать ключ
Сколько запросов можно делать?
120 в минуту на ключ. Для большего — используйте webhooks.
Что делать, если потерял ключ?
Создайте новый и удалите старый. Показать существующий ключ невозможно.
Webhooks не приходят?
Проверьте: HTTPS, ответ 200 за 10 сек, webhook активен.
🆘 Поддержка
- Email: support@ai-bnk.ru
- Telegram: @ai_bnk_support
- Кабинет: ai-bnk.ru/cabinet
© 2026 ai-bnk.ru — API Documentation v1.0