API документация
Базовый URL: https://tovarkin.com/api
Авторизация: Authorization: Bearer <jwt_or_api_key>
Быстрый старт
Шаги интеграции
- Создайте API ключ в профиле (раздел API и Webhook).
- Получите tracking token партнёра.
- Отправляйте postback в
/api/eventsсexternal_id. - Проверяйте статусы в
/api/status-center.
Ключевые endpoints
Tracking
GET /t/:token — фиксирует клик и делает redirect на целевую страницу.
Postback events
POST /api/events — создаёт lead/sale событие (идемпотентно по token + external_id).
Status center
GET /api/status-center — единый статус, причина, nextStep и retryAllowed.
Realtime
GET /api/realtime/stream — SSE-уведомления в реальном времени.
API keys
POST /api/me/api-key, GET /api/me/api-keys, PATCH /api/me/api-keys/:id/revoke
Пример запроса
curl -X POST "https://tovarkin.com/api/events" \
-H "Content-Type: application/json" \
-d "{\"token\":\"tk-xxxx\",\"event_type\":\"lead\",\"external_id\":\"order-123\",\"amount\":1500}"
Полная спецификация
Аутентификация
JWT или API ключ в заголовке:
Authorization: Bearer <token>Postback: структура payload
{
"token": "tk-xxxx",
"event_type": "lead",
"amount": 1200,
"currency": "RUB",
"external_id": "order-100500",
"source": "facebook",
"subid1": "campaignA",
"utm_source": "google",
"utm_campaign": "spring_sale"
}
Событие идемпотентно по паре (trackingLinkId, external_id). Повторный postback не приводит к двойной оплате.
API v1 (versioned)
GET /api/v1/affiliate/events(scope:affiliate:events.read)GET /api/v1/supplier/events(scope:supplier:events.read)POST /api/v1/events(scope:events.write)
Affiliate endpoints
GET /api/affiliate/eventsGET /api/affiliate/analytics-sourcesPOST /api/affiliate/events/:id/dispute
Supplier endpoints
GET /api/supplier/analytics-sourcesGET /api/supplier/offers/:id/auditGET /api/supplier/affiliate-participations
Admin endpoints
GET /api/admin/payouts/registryGET /api/admin/payouts/export.csvPATCH /api/admin/payouts/bulk-statusGET /api/admin/moderation/sla-summaryPOST /api/admin/moderation/sla-ping
Коды ответов
200OK201Created400Validation error401Unauthorized403Forbidden404Not found409Conflict (idempotency/duplicate)500Server error
Рекомендации по безопасности
- Храните API ключи только в секретном хранилище.
- Ротируйте ключи каждые 60-90 дней.
- Сразу отзывайте ключ при подозрительной активности.
- Включите 2FA для admin-аккаунтов.