Открытое API Timora
Подключите расписание вузов к своему боту, сайту или приложению. Личные данные студента — профиль, оценки, дедлайны и справки — только с его согласия, через «Войти через Timora». Доступ только на чтение.
Что можно получить
Данные, которые отдаёт API
Общедоступные
Достаточно токена проекта. Те же данные, что видны на сайте без входа.
institutionsвузы и колледжи: название, город, что доступноgroupsучебные группы вузаscheduleпары группы по дням — до 31 дня за запросteachersпреподаватели (СибГУТИ)examsэкзамены, зачёты и консультации
С согласия студента
Студент сам решает, к каким разделам открыть доступ, и может отозвать его в любой момент.
profileимя, группа и вузscheduleрасписание группы студентаgradesоценки из ЭИОСdeadlinesнесданные задания и тесты из курсов ЭИОСcertificatesзаявки на справки и их статусы
Как получить доступ
Четыре шага до первого запроса
Расскажите о проекте: что он делает, какие данные нужны, где будет код. Если на GitHub — пришлите ссылку.
Упоминание Timora, соавторство на GitHub, требования безопасности — ниже на этой странице.
Токен tmr_… выдаётся лично и показывается один раз. В Timora хранится только его отпечаток — потеряли, выдадим новый.
Адрес API — https://mytimora.ru/api/v1, заголовок Authorization: Bearer tmr_….
Войти через Timora
Личные данные — только с согласия
Студент подтверждает вход там, где уже вошёл в Timora любым способом: в приложении для iOS и Android, в боте Telegram или в мини-приложениях Telegram и ВКонтакте. Ваш проект не видит ни паролей, ни данных входа.
Правила
Требования к проектам
Получая токен, вы принимаете эти условия. При нарушении токен отзывается без предупреждения — вместе с доступом всех студентов к вашему проекту.
Упоминание Timora
- В интерфейсе проекта — «Работает на Timora» со ссылкой на mytimora.ru: на экране «О приложении», в подвале сайта или в описании бота.
- В README и описании — что проект использует открытое API Timora.
- Название, логотип и оформление Timora нельзя выдавать за свои. Проект не должен выглядеть как официальный клиент Timora.
GitHub
- Если код проекта на GitHub (публичный или приватный репозиторий) — добавьте @y0rence в соавторы: Settings → Collaborators → Add people.
- Укажите @y0rence в разделе участников (Contributors) в README.
Безопасность токена
- Токен проекта — секрет. Он живёт только на вашем сервере: в переменных окружения или хранилище секретов.
- Не в коде, не в git, не в мобильном приложении и не в JavaScript браузера или мини-приложения.
- Только HTTPS с проверкой сертификата. Утёк токен — сразу напишите в @timora_support: старый отзовём, выдадим новый.
Данные студентов
- Не спрашивайте у студентов пароли ЭИОС и коды входа Timora — только «Войти через Timora».
- Запрашивайте только нужные разделы: студент видит их на экране согласия.
- Токены студентов храните зашифрованными. Студент вышел — вызовите
POST /me/disconnectи удалите токен. - Используйте данные только для функции, ради которой дан доступ. Не передавайте и не продавайте, не используйте для рекламы и обучения моделей, удаляйте по просьбе студента. Соблюдайте 152-ФЗ.
- Покажите студенту, что он вошёл через Timora, и дайте кнопку выхода.
Лимиты и кэш
- Кэшируйте общедоступные данные: расписание группы — не чаще раза в 10–15 минут.
- Ответ 429 — подождите столько секунд, сколько указано в заголовке
Retry-After.
Запрещено
- Обходить лимиты: несколько токенов, смена адресов.
- Массово выгружать данные.
- Перепродавать доступ к API.
Справочник
Для тех, у кого уже есть токен
Адрес — https://mytimora.ru/api/v1. Ответы в JSON, даты в ответах — дд.мм.гггг, в параметрах — гггг-мм-дд или дд.мм.гггг. Ошибки — {"detail": "текст"}.
Заголовки
| Заголовок | Когда |
|---|---|
Authorization: Bearer tmr_… | всегда — токен проекта |
X-Timora-User: tmu_… | для /me/… — токен студента из «Войти через Timora» |
Общедоступные данные
| Метод | Что отдаёт |
|---|---|
GET /institutions | вузы: id, name, short, city, features |
GET /groups?institution=nstu | группы вуза |
GET /schedule?institution=nstu&group=ПМИ-31&from=2026-10-05&to=2026-10-11 | пары по дням, до 31 дня за запрос |
GET /teachers?institution=sibsutis | преподаватели (СибГУТИ) |
GET /exams?institution=sibsutis&group=ИП-514 | экзамены, зачёты, консультации |
«Войти через Timora»
POST /connect/start с телом {"scopes": ["profile", "schedule", "grades"]} → deviceCode, userCode (вида ABCD-EFGH), expiresIn (600 с), interval (3 с) и links: telegram, vk, app — ссылки, по которым студент подтвердит вход.
Покажите студенту код и кнопки «Подтвердить в Telegram», «в приложении Timora». Раз в interval секунд вызывайте POST /connect/poll с {"deviceCode": "tmc_…"}: ответ — pending, slow_down, denied, expired или approved с userToken (tmu_…), который выдаётся один раз.
Без scopes запрашиваются profile и schedule.
Данные студента
Нужны оба заголовка. Доступ — только к разделам, которые разрешил студент, иначе 403.
| Метод | Раздел | Что отдаёт |
|---|---|---|
GET /me | profile | id (свой для каждого проекта), имя, фамилия, группа, вуз, способы входа |
GET /me/schedule?from=…&to=… | schedule | расписание группы студента |
GET /me/grades | grades | оценки (СибГУТИ, если студент хранит пароль ЭИОС в Timora) |
GET /me/deadlines | deadlines | несданные задания и тесты из курсов ЭИОС |
GET /me/certificates | certificates | заявки на справки и их статусы |
POST /me/disconnect | — | выход: доступ проекта к аккаунту студента гаснет |
401 на /me/… — студент отозвал доступ (в профиле Timora или командой /apps в боте) или токен проекта отозван. 409 — у студента нет нужных данных: не выбрана группа или не подключён ЭИОС.
Лимиты
- 300 запросов в минуту на токен для общедоступных данных, на каждого студента — отдельно;
- оценки — 30, дедлайны — 40, справки — 20 запросов в час на студента: это запросы к сайту вуза;
connect/start— 600 в час на проект.
Пример запроса
curl -s https://mytimora.ru/api/v1/schedule \ -H "Authorization: Bearer $TIMORA_TOKEN" \ --get --data-urlencode "institution=nstu" --data-urlencode "group=ПМИ-31" \ --data-urlencode "from=2026-10-05" --data-urlencode "to=2026-10-11"