iMathOs SDK — API Reference

REST API для интеграции интерактивной доски в ваш продукт.

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

Все запросы требуют API-ключ в заголовке Authorization:

Authorization: Bearer imk_a3f8x9K2mN4pQ7rS...

Ключ создаётся в Личном кабинете → SDK / API. Ключ показывается один раз — сохраните его.

Rate Limits

SDK-тариф: 1 000 запросов/мин. Все ответы содержат заголовки:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 847
X-RateLimit-Reset: 1711900800

При превышении: HTTP 429 + заголовок Retry-After.

Доски (Boards)

GET /api/boards/my

Список ваших досок. Параметры: page, per_page, search, date_from, date_to.

POST /api/boards/

Создать доску. Body: { "title": "...", "snapshot_json": {...} }

GET /api/boards/{board_id}

Получить доску с полным снапшотом.

PATCH /api/boards/{board_id}

Обновить доску (title, snapshot_json, tags).

DELETE /api/boards/{board_id}

Архивировать доску (soft delete).

Сессии (Sessions)

POST /api/sessions/

Создать комнату. Body: { "board_id": "...", "mode": "full" }

Ответ: { "room_code": "abc123", "session_id": "...", "invite_link": "..." }

Math OCR

POST /api/math-ocr/recognize

Распознать формулу из изображения. Body: { "image": "data:image/png;base64,..." }

Ответ: { "latex": "\\frac{1}{2}", "confidence": 0.95 }

API Keys

POST /api/sdk/keys

Создать новый ключ. Параметры: name, scopes, expires_days.

GET /api/sdk/keys

Список ключей (prefix, scopes, last_used).

POST /api/sdk/keys/{key_id}/rotate

Перевыпустить ключ. Старый отзывается, новый возвращается.

Webhooks

Регистрируйте endpoint для получения событий в реальном времени.

События

СобытиеКогда
board.createdСоздана новая доска
board.updatedДоска обновлена
board.snapshot_savedСохранена версия снапшота
board.archivedДоска архивирована
session.startedКомната создана
session.endedКомната завершена
ocr.completedOCR-запрос завершён

Подпись

Каждый запрос подписан HMAC-SHA256. Заголовки:

X-iMathOs-Event: board.created
X-iMathOs-Signature: sha256=abc123...
X-iMathOs-Delivery: uuid

Проверка подписи (Python)

import hmac, hashlib

def verify(body: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(f"sha256={expected}", signature)
POST /api/sdk/webhooks

Зарегистрировать endpoint. Параметры: url, events.

POST /api/sdk/webhooks/{id}/test

Отправить тестовое событие.

Embed (iframe)

Встраивайте доску в ваш сайт через iframe.

POST /api/sdk/embed-token

Сгенерировать embed-токен. Body: { "board_id": "...", "mode": "view", "expires_in": 3600 }

Ответ содержит готовый <iframe> код:

<iframe src="https://imathos.ru/iMathOs/embed?token=TOKEN"
        width="800" height="600" frameborder="0"
        allow="camera;microphone"></iframe>

Режимы

РежимОписание
viewТолько просмотр (тулбар скрыт)
editРедактирование (полный тулбар)
collabСовместная работа (WebRTC)

Ошибки

КодОписание
401Неверный или отсутствующий API-ключ
403Недостаточно прав (scope / tier)
404Ресурс не найден
429Rate limit превышен

iMathOs SDK v1.0 · Тарифы · Личный кабинет