Общие сведения
- Base URL: https://test.cashbox.money
- Формат: JSON, UTF-8
- Авторизация: Authorization: Bearer <access_token>
На этой странице описан минимальный публичный API для внешних интеграторов. Полная интерактивная схема Swagger может содержать дополнительные endpoint-ы для Web UI, Admin и внутренних сценариев. Не все endpoint-ы Swagger являются публичным API.
Авторизация
Токен доступа выдаётся в личном кабинете Cashbox или по договорённости с Cashbox. Передавайте его в заголовке Authorization: Bearer <access_token>. Не используйте и не публикуйте реальные токены в примерах и логах.
Advertiser API — создание задания
Минимальный flow: категории → платформы → цены → создание задания.
/api/advertiser/offers/categories
Получить список категорий заданий для создания оффера.
Bearer token required · Role: Advertiser (рекламодатель)
—
[ { "id": 1, "name": "Social", "isActive": true, "sortOrder": 10 } ]
401 — не авторизован.
/api/advertiser/offers/platforms
Получить список платформ. Можно отфильтровать по категории.
Bearer token required · Role: Advertiser (рекламодатель)
offerCategoryId (optional, long)
[ { "id": 12, "name": "VK", "offerCategoryId": 1, "isActive": true } ]
401 — не авторизован.
/api/advertiser/offers/prices
Получить доступные цены/типы задания для выбранной категории и платформы.
Bearer token required · Role: Advertiser (рекламодатель)
offerCategoryId (optional, long), offerPlatformId (optional, long)
[ { "id": 456, "code": "vk_like", "rewardPerAction": 2.0, "isActive": true } ]
401 — не авторизован.
/api/advertiser/offers/draft
Создать задание как черновик (Draft).
Bearer token required · Role: Advertiser (рекламодатель)
OfferCreateDto: offerPriceId (required), title (required, max 500), totalLimit (required), sourceLanguage (optional), minAge, maxAge, gender, targetCountryIds, selectedAddOnIds, details (optional JSON по типу задания).
{
"offerPriceId": 456,
"title": "Example task",
"totalLimit": 100,
"sourceLanguage": "ru"
}
{ "id": 123, "title": "Example task", "status": "Draft", "offerPriceId": 456, "totalLimit": 100 }
400 — validation. 401 — не авторизован. 403 — недоступно.
/api/advertiser/offers/submit
Создать задание и сразу отправить на модерацию.
Bearer token required · Role: Advertiser (рекламодатель)
OfferCreateDto — те же поля, что для draft.
{
"offerPriceId": 456,
"title": "Example task",
"totalLimit": 100,
"sourceLanguage": "ru"
}
{ "id": 123, "title": "Example task", "status": "PendingModeration", "offerPriceId": 456, "totalLimit": 100 }
400 — validation. 401 — не авторизован. 403 — недоступно. 409 — конфликт бизнес-правил (например, недостаточно средств).
Executor API — выполнение задания
Минимальный flow: список доступных заданий → резерв → загрузка proof → отправка отчёта.
/api/executor/offers/available
Получить список доступных заданий для исполнителя.
Bearer token required · Role: Executor (исполнитель)
Search, OfferCategoryId, OfferPlatformId, MinReward, MaxReward, ActivatedFrom, ActivatedTo, Page (default 1), PageSize (default 20, max 100), Locale
{ "items": [ { "id": 123, "title": "Example task", "rewardPerAction": 2.0, "status": "Active" } ], "totalCount": 1, "page": 1, "pageSize": 20 }
401 — не авторизован. 404 — executor не найден.
/api/executor/offers/available/{offerId}
Получить детали доступного задания.
Bearer token required · Role: Executor (исполнитель)
offerId (long)
locale (optional, string)
{ "id": 123, "title": "Example task", "rewardPerAction": 2.0, "totalLimit": 100, "status": "Active" }
401 — не авторизован. 404 — задание недоступно или не найдено.
/api/executor/offers/{offerId}/reserve
Взять задание в работу / создать reservation.
Bearer token required · Role: Executor (исполнитель)
offerId (long)
{ "id": 789, "alreadyExists": false, "expiresAtUtc": "2026-08-25T12:00:00Z" }
401 — не авторизован. 404 — задание не найдено. 409 — конфликт (возраст, страна, активная резервация и т.п.).
/api/executor/offers/{offerId}/proof/uploads
Загрузить файлы доказательств (batch). Требуется активная reservation по этому offerId.
Bearer token required · Role: Executor (исполнитель)
offerId (long)
files — один или несколько файлов (form field name: files).
До 5 файлов за загрузку. Максимальный размер файла: 5 MB. Расширения: .jpg, .jpeg, .png, .webp, .pdf. MIME: image/png, image/jpeg, image/webp, application/pdf.
{ "items": [ { "url": "https://test.cashbox.money/uploads/executor/proofs/example.jpg", "fileName": "example.jpg", "size": 102400, "contentType": "image/jpeg" } ] }
400 — validation (нет файлов, неверный тип/размер). 401 — не авторизован. 404 — нет активной reservation.
/api/executor/offers/{offerId}/submit-execution
Отправить отчёт на проверку.
Bearer token required · Role: Executor (исполнитель)
offerId (long)
OfferSubmitDto: reservationId (required), proofUrls (array of URLs from uploads) or proofUrl (single URL), details (optional JSON по типу задания).
{
"reservationId": 789,
"proofUrls": [
"https://test.cashbox.money/uploads/executor/proofs/example.jpg"
]
}
{ "id": 1001, "alreadyExists": false }
400 — validation. 401 — не авторизован. 404 — reservation не найдена. 409 — reservation expired / not active / conflict.
/api/executor/offers/{offerId}/reservation/cancel
Отказаться от активной reservation по заданию.
Bearer token required · Role: Executor (исполнитель)
offerId (long)
{ "outcome": "Cancelled", "reservationId": 789 }
401 — не авторизован. 404 — задание или reservation не найдены. 409 — конфликт состояния.
Коды ошибок
400 Bad Request — ошибка валидации. 401 Unauthorized — отсутствует или недействителен токен. 403 Forbidden — недостаточно прав или операция недоступна для текущего пользователя. 404 Not Found — ресурс не найден. 409 Conflict — конфликт бизнес-правил (например, резервация истекла или уже есть pending execution). 5xx — внутренняя ошибка сервера.