Skip to main content

Rekla External API

📘 Общая информация

Rekla Dashboard API предназначен для внешних партнёров, которым требуется интеграция с системой публикации контента в Telegram-каналах Rekla.
API позволяет создавать публикации, проверять права автопостинга, получать статус публикаций и отменять их.
Для подключения к API необходимо написать в Telegram
👉 @rekla_support
с запросом:
«Хочу подключиться как партнёр к Rekla External API»
После одобрения вам выдадут:
  • Partner ID — публичный идентификатор партнёра (используется в заголовках как X-Partner-Id);
  • Bot start command — команду для создания API-ключа (см. ниже).

🔐 Создание API-ключа

Каждый пользователь Rekla получает свой API-ключ через бота Rekla.
  1. Вам нужно получить от поддержки уникальную команду вида:
/start createapikey-partner_name
  1. Пользователь Rekla вводит эту команду в @rekla_bot.
  2. Бот создаёт персональный ключ и отправляет сообщение:
Ваш API ключ для доступа к rek.la создан! API ключ: rekla_api:xxxxxxxxxxxxxxxxxxxx
  1. Этот ключ (API Key) сохраняется один раз — повторно получить его невозможно.

🧭 Аутентификация

Все запросы к external-api требуют передачи двух заголовков:
ЗаголовокОбязательноПримерОписание
Authorizationrekla_api:xxxxxxxxxxxxxxxxxxxxAPI ключ пользователя Rekla
X-Partner-Id7dc231cd4ad74b1f8c20c21090218b87Идентификатор внешнего партнёра
Без этих заголовков запрос будет отклонён.

🚀 Основные эндпоинты

МетодПутьНазначение
GET/external-api/meПолучить данные пользователя Rekla
GET/external-api/channels/{channel_id}/can-postПроверить доступ на автопостинг в канал
POST/external-api/publicationsСоздать одну или несколько публикаций
POST/external-api/publications/cancelОтменить публикацию
POST/external-api/publications/statusПроверить статус публикации

🪝 Вебхуки

Событие api_key.created

Когда пользователь создаёт API-ключ через команду /start createapikey-<partner_name>,
система Rekla отправляет вебхук вашему сервису.
Метод: POST
URL: указывается при регистрации партнёра (external_partner.webhook_url)

Пример тела запроса:

{
"user_id": 5286606,
"raw_api_key": "rekla_api:fb27e09cd41f8a2e3dd93a..."
}

Заголовки вебхука

Заголовок	Пример	Описание
Content-Type	application/json	Формат тела
X-Webhook-Event	api_key.created	Тип события
X-Webhook-Id	ce2a2b19-2b14-4b90-a8b2-6bdfaa6a0f63	Уникальный ID события
X-Webhook-Timestamp	1735047802	UNIX timestamp отправки
X-Webhook-Signature	aab43f4e89c4c36c...	Подпись HMAC SHA256




✅ Проверка подписи вебхука

Для проверки подлинности запроса необходимо:
	1.	Из заголовков взять:
	•	X-Webhook-Signature
	•	X-Webhook-Timestamp
	2.	Сконкатенировать строку:

{timestamp}.{raw_body_json}


	3.	Посчитать HMAC SHA256 с вашим webhook_secret, выданным Rekla Support:

import hmac, hashlib

signature = hmac.new(
    key=WEBHOOK_SECRET.encode(),
    msg=f"{timestamp}.{body_json}".encode(),
    digestmod=hashlib.sha256
).hexdigest()


	4.	Сравнить полученную подпись с X-Webhook-Signature.
Если совпадает — запрос пришёл от Rekla.



🧾 Пример успешной обработки вебхука

from fastapi import FastAPI, Request, HTTPException
import hmac, hashlib, json

app = FastAPI()

WEBHOOK_SECRET = "ваш_webhook_secret_из_Rekla"

@app.post("/webhooks/rekla")
async def rekla_webhook(request: Request):
    body = await request.body()
    timestamp = request.headers.get("X-Webhook-Timestamp")
    signature = request.headers.get("X-Webhook-Signature")

    expected = hmac.new(
        key=WEBHOOK_SECRET.encode(),
        msg=f"{timestamp}.{body.decode()}".encode(),
        digestmod=hashlib.sha256
    ).hexdigest()

    if not hmac.compare_digest(signature, expected):
        raise HTTPException(status_code=401, detail="Invalid signature")

    payload = json.loads(body)
    print("Новый API-ключ создан:", payload)
    return {"status": "ok"}




⚙️ Пример последовательности интеграции
	1.	Обратитесь в @rekla_support
и получите Partner ID, webhook_secret, webhook_url, start command.
	2.	Настройте обработчик вебхуков на POST /webhooks/rekla.
	3.	Передайте команду /start createapikey-<partner> пользователям Rekla.
	4.	Получайте вебхуки api_key.created с данными ключей.
	5.	Делайте запросы к Rekla External API, передавая:
	•	Authorization: rekla_api:...
	•	X-Partner-Id: ...



📩 Контакты

Поддержка интеграций:
@rekla_support

Версия API: 1.0.0
Формат: application/json

I