API Riba.Click

Халяль REST API для сокращения ссылок. Два режима: v1 API через API ключ (для интеграций), и /api/ через сессионные куки (для веб-интерфейса).

Base URL
https://riba.click
Формат
application/json
Версия API
v1
API ключ
Профиль → API
Авторизация
X-API-Key — для v1 API

Добавь заголовок X-API-Key: твой_ключ к каждому запросу. Ключ можно найти в профиле на сайте. Или передавай как query параметр: ?api_key=твой_ключ

🍪 Cookie сессия — для /api/ эндпоинтов

Используется браузером автоматически. Для curl: -c cookies.txt -b cookies.txt

Rate limits

Лимиты применяются по API ключу. Превышение возвращает 429 Too Many Requests.

5
запросов/сек — обычный аккаунт
20
запросов/сек — донатер 🐟

Чтобы получить лимит 20 req/s — задонать проекту.

Ошибки

Все ошибки возвращают JSON с полем error.

error response
{"error": "Invalid or missing X-API-Key"}
400Невалидные данные
401Неверный или отсутствующий API ключ
403Нет доступа (чужой ресурс или лимит)
404Не найдено
409Конфликт (код уже занят)
429Rate limit превышен
500Ошибка сервера
v1 API — через API ключ

Используй для интеграций, ботов, скриптов. Требует X-API-Key заголовок.

POST /v1/shorten Сократить ссылку
Headers
ЗаголовокЗначение
X-API-Keyтвой API ключ
Content-Typeapplication/json
Body
ПолеТипОписание
urlstringrequiredДлинная ссылка
customstringoptionalСвой код (a-z, 0-9, -, _ макс 20)
curl
curl -X POST https://riba.click/v1/shorten \
  -H "X-API-Key: riba_твой_ключ" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/long", "custom": "ex"}'
response 201
{"short": "https://riba.click/ex", "code": "ex"}
Коды ответа
201Ссылка создана
400Невалидный URL или код
403Достигнут лимит ссылок
409Кастомный код занят
429Rate limit
DELETE /v1/links/<code> Удалить ссылку
curl
curl -X DELETE https://riba.click/v1/links/ex \
  -H "X-API-Key: riba_твой_ключ"
response 200
{"ok": true}
GET /v1/stats Статистика аккаунта
response 200
{
  "total_links": 5,
  "total_clicks": 123,
  "top_links": [
    {"code": "ex", "original": "https://...", "clicks": 99}
  ]
}
GET /v1/me Инфо об аккаунте
response 200
{
  "id": 1,
  "email": "вася@mail.ru",
  "is_donor": false,
  "link_limit": 50,
  "links_used": 12,
  "rate_limit": "5/s"
}
Аккаунты — через сессию

Для браузерного использования. Требует cookie сессию.

POST /api/register Регистрация

Gmail не принимается. Отправляет код подтверждения на email.

Body
ПолеТипОписание
emailstringrequiredEmail (не gmail)
passwordstringrequiredМин. 6 символов
refstringoptionalРеф код
response 200
{"ok": true, "message": "Код отправлен на почту"}
POST /api/verify Подтверждение email
Body
ПолеТипОписание
emailstringrequiredEmail
codestringrequired6-значный код из письма
response 200
{"ok": true, "email": "...", "is_admin": false}
POST /api/login Вход
curl
curl -X POST https://riba.click/api/login \
  -c cookies.txt -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"email": "вася@mail.ru", "password": "халяль123"}'
POST /api/logout Выход
response 200
{"ok": true}
GET /api/me Текущий пользователь
response 200
{
  "user": {
    "id": 1, "email": "вася@mail.ru",
    "is_admin": false, "is_donor": false,
    "api_key": "riba_...",
    "ref_code": "abc123",
    "link_limit": 50, "ref_count": 2
  }
}
Редирект
GET /<code> Редирект на оригинал

Код должен содержать только [a-zA-Z0-9_-], иначе 404. Клик инкрементирует счётчик.

302Редирект
404Не найдено или недопустимые символы