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_slug | author/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_vision | true/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 КБ |
415 | Content-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.