Документация API

Три метода, без регистрации и без ключа. Ограничение — 60 запросов в минуту с одного IP (кратковременный всплеск до 10 запросов допустим).


1. Поиск по ISBN

GET /api/v1/search/isbn/{isbn}

Если книги нет в базе — сервис автоматически подтянет данные из Open Library, Google Books, FantLab и других источников и сохранит на будущее. Первый запрос по новому ISBN может занять несколько секунд, повторный — мгновенный.

curl "https://ваш-домен/api/v1/search/isbn/9785171234567"
[
  {
    "guid": "c1eac6ea-ecac-4206-9121-d030cfbc9ff2",
    "Title": "Дорога",
    "AuthorName": "Кормак Маккарти",
    "Publisher": "Азбука",
    "PublishedYear": 2018,
    "ISBN": "9785389143852",
    "CoverUrl": "https://covers.openlibrary.org/b/id/12196387-L.jpg"
  }
]

Если книгу не удалось найти нигде — вернётся пустой массив [], а не ошибка.


2. Поиск по названию

GET /api/v1/search/title?q=...

Возвращает массив — по названию может найтись несколько изданий одной книги или несколько разных книг со сходным названием. Выбор нужного издания — на стороне вашего приложения.

curl "https://ваш-домен/api/v1/search/title?q=Мастер+и+Маргарита"

3. Универсальный поиск

GET /api/v1/search?q=...

Сам определяет по контрольной сумме, похож ли запрос на ISBN, и вызывает нужный метод. Удобен, если в вашем приложении одно поле ввода на всё.

curl "https://ваш-домен/api/v1/search?q=9785171234567"
curl "https://ваш-домен/api/v1/search?q=Мастер+и+Маргарита"

Выбор полей — ?fields=

По умолчанию возвращается полный набор публичных полей. Можно запросить только нужные — например, для автокомплита в UI достаточно названия и автора:

curl "https://ваш-домен/api/v1/search/title?q=дорога&fields=Title,AuthorName"

Доступные поля: Title, Subtitle, AuthorName, Publisher, PublishedYear, ISBN, ISBN13, CoverUrl, Genre, Description, Pages, Language, Series, SeriesNumber, Rating, Format, AgeRestriction. Неизвестные имена в fields просто игнорируются — опечатка не приведёт к ошибке, вернётся набор по умолчанию.


Публичные счётчики

GET /api/v1/public/stats

curl "https://ваш-домен/api/v1/public/stats"
{
  "totalBooks": 1284,
  "booksAddedToday": 12,
  "authorsVerified": 640,
  "requestsToday": 355,
  "updatedAt": "2026-08-30T14:00:00Z"
}

Обновляются раз в час — это снапшот, не live-счёт.


Коды ошибок

КодКогда
400Невалидный ISBN (не прошёл проверку контрольной суммы) или не передан ни isbn, ни q
429Превышен лимит запросов (60/мин, burst 10) — подождите и повторите
500Внутренняя ошибка — если повторяется стабильно, напишите нам

Полная машиночитаемая спецификация (OpenAPI) — в Swagger UI или напрямую в /api-docs для автогенерации клиентов.