catalog

API карточки модели для агентов

Запись текстов блока «О модели» на карточке модели по HTTPS. Тот же ключ, что у API блога: blog_… в заголовке Authorization: Bearer. Меняются только тексты.

Статья блога и карточка модели устроены одинаково: JSON-тело одним запросом, ошибки валидации приходят машиночитаемым списком, тело можно починить и отправить повторно без человека.

Что заполняется

Пять текстов «О модели» плюс необязательные поля:

ПолеЧто этоОграничение
about_overviewчто за модель, чья, что делает≤ 2 000 знаков
about_strengthsсильные стороны, проверяемые факты≤ 2 000 знаков
about_use_casesдля каких задач берут≤ 2 000 знаков
about_limitsгде модель слабее≤ 2 000 знаков
about_diffчем отличается от соседней версии≤ 2 000 знаков
sibling_slugauthor/slug соседней версии, модель должна быть в каталоге—
sibling_short_nameкороткое имя для текстов («Prime»), только вместе с sibling_slug≤ 40 знаков
specsхарактеристики вне каталога (image-модели): resolutions, aspect_ratios, max_references, images_per_request, prompt_contextзначения — строки
capabilitiesпереопределения возможностей: текст — tools, json_mode, reasoning, vision; картинки — text2image, reference_edit, multi_variant, text_and_visiontrue/false
faqответы FAQ по номерам "1".."6"≤ 1 000 знаков каждый

Формат текста: абзацы разделяются пустой строкой. Строка, начинающаяся с - или • , рендерится элементом маркированного списка. HTML и markdown-ссылки не поддерживаются.

Цены в текст не пишем. ₽, «руб», «рублей» — ошибка валидации: цены считаются из живого каталога в блоке «Сколько стоит» и разойдутся с текстом. Маркеры TODO, TBD, FIXME тоже отклоняются.

Запрос

PUT, не PATCH: контент заменяется целиком. Поле, которого нет в теле, стирается. Стереть все поля разом через API нельзя — это операция админки.

curl -X PUT https://llmmart.ru/api/v1/catalog/models/qwen/qwen3-8-max/content \
  -H "Authorization: Bearer $BLOG_API_KEY" \
  -H "Content-Type: application/json" \
  -d @qwen3-8-max.json
# → 200 {"id":"qwen/qwen3-8-max","updatedAt":"2026-11-10T09:12:44Z"}

Пример тела:

{
  "about_overview": "Qwen3.8 Max — флагманская модель команды Qwen (Alibaba) на разреженной архитектуре MoE: 2,4 трлн параметров, из которых на каждый токен работают около 95 млрд.",
  "about_strengths": "- 1 млн токенов контекста — книга или большой репозиторий целиком.\n- Настраиваемая глубина рассуждения.",
  "about_limits": "Ответ ограничен 32 тыс. токенов.",
  "sibling_slug": "qwen/qwen3.8-max-prime",
  "sibling_short_name": "Prime"
}

Ответы

КодКогда
200записано; тело — {"id","updatedAt"}
401нет заголовка, ключ неизвестен или отозван
404модели нет в каталоге
413тело больше 64 КБ
415Content-Type не application/json
422валидация: {"errors":[{"field","message"}]}
502каталог недоступен — повторить позже

Пример 422:

{"errors":[
  {"field":"about_overview","message":"about_overview содержит «₽»: цены и маркеры-заглушки в тексте не пишем"},
  {"field":"sibling_slug","message":"sibling_slug: модели qwen/nope нет в каталоге"}
]}

Агент правит перечисленные поля и отправляет тот же запрос снова.

Когда текст появляется на сайте

После успешной записи каталог пересобирает снапшот: страница обновляется за 1–2 минуты. Блок «О модели» виден в HTML до исполнения JavaScript.

Проверка после записи:

curl -s https://llmmart.ru/api/v1/models/qwen/qwen3-8-max | jq '.data.content'

Пусто — текст не дошёл до публичной проекции, это ошибка платформы, а не текста.

Чего этот API не делает

  • Не меняет короткое описание в шапке карточки — оно приходит из ночного обновления каталога и перезаписывается автоматически.
  • Не управляет видимостью, статусом и ценами модели.
  • Не ставит текст в черновик: запись сразу становится публичной.

Полный регламент написания текстов (откуда брать факты, что считается проверенным) — навык model-card-copy.