Нейросети Spectra — прямо из вашего кода
Один API-ключ к 50+ моделям для картинок, видео, звука, 3D и текста. Подключите его к Claude Code, Cursor или Codex по MCP — агент сам выберет модель, запустит генерацию и принесёт результат. Или вызывайте модели по HTTP из своего продукта.
Зачем это нужно
Генерация картинок и видео, апскейл, удаление фона, звук, 3D, текстовые модели — на одном балансе кредитов.
Каждая модель — это POST /api/models/{slug} с полями inputs и params. От модели к модели меняется только набор полей.
Список моделей и их поля берутся из живой схемы сервера — документация показывает ровно то, что сервер принимает сейчас.
Стоимость генерации фиксированная, её можно узнать до запуска: ручка estimate бесплатна.
Как это устроено
Четыре принципа, из которых складывается любая интеграция.
GET /api/models отдаёт список моделей, GET /api/models/{slug} — параметры конкретной. Эти ручки справочные.
POST /api/models/{slug} возвращает task_id, а не результат: генерация занимает от секунд до минут. Соединение держать не нужно.
Опрашивайте GET /api/tasks/{task_id}, пока статус не станет done. В ответе придут ссылки на готовые файлы.
Всё, что тратит кредиты, требует вашего ключа Spectra. Ключ — как пароль: храните его только в конфиге на своей машине.
Путь в три шага
От покупки до первой картинки в чате вашего агента.
1. Ключ
Откройте @spectraapi_bot, выберите тариф и оплатите удобным способом: картой в рублях, через CryptoBot, криптой или звёздами Telegram. Купили код на маркетплейсе — нажмите «🎟 У меня есть код». После оплаты бот спросит email для аккаунта и пришлёт API-ключ и адрес MCP-сервера. Их же всегда можно найти в «🔑 Мой ключ».
https://dev.phygital.plus/api/mcp. Он же приходит в боте вместе с ключом. Во всех примерах подставьте вместо <ваш ключ> свой ключ.2. Подключение
Для Claude Code — одна команда в терминале:
claude mcp add --transport http spectra https://dev.phygital.plus/api/mcp \
--header "Authorization: Bearer <ваш ключ>"Cursor, Codex и другие клиенты — в разделе MCP-сервер.
3. Генерация
Просто напишите агенту обычными словами:
сделай обложку 16:9 для статьи про космос, GPT Image, качество high
Агент сам найдёт модель, прочитает её параметры, запустит генерацию и пришлёт ссылку на файл. Чтобы агент лучше выбирал модели и писал промпты, поставьте ему навыки.
То же самое по HTTP
Без MCP — из своего скрипта или продукта:
SPECTRA_API=https://dev.phygital.plus SPECTRA_KEY=<ваш ключ> # 1. посмотреть, какие модели есть curl "$SPECTRA_API/api/models" # 2. узнать параметры конкретной модели curl "$SPECTRA_API/api/models/kling" # 3. запустить задачу — вернётся task_id, а не результат curl -X POST "$SPECTRA_API/api/models/kling" \ -H 'Content-Type: application/json' \ -H "X-Api-Key: $SPECTRA_KEY" \ -d '{"inputs":{"text_prompt":"create cat"},"params":{"duration":"sec_5"}}' # 4. дождаться готовности и забрать ссылки curl "$SPECTRA_API/api/tasks/184293" -H "X-Api-Key: $SPECTRA_KEY"
MCP-сервер
Подключите Spectra к агенту: он сам выбирает модель, читает её схему, ставит генерацию и забирает результат — без единого HTTP-запроса с вашей стороны.
Сервер
| Параметр | Значение |
|---|---|
| Адрес | https://dev.phygital.plus/api/mcp |
| Транспорт | Streamable HTTP |
| Авторизация | Authorization: Bearer <ваш ключ> |
Подключение клиента
Сервер работает по Streamable HTTP: клиенту нужен только адрес и ключ — ничего ставить и держать запущенным локально не надо.
claude mcp add --transport http spectra https://dev.phygital.plus/api/mcp \
--header "Authorization: Bearer <ваш ключ>"Проверьте подключение командой /mcp внутри Claude Code — сервер spectra должен быть в статусе connected.
{
"mcpServers": {
"spectra": {
"url": "https://dev.phygital.plus/api/mcp",
"headers": { "Authorization": "Bearer <ваш ключ>" }
}
}
}После сохранения откройте Settings → MCP: сервер spectra должен загореться зелёным.
Transport: Streamable HTTP
URL: https://dev.phygital.plus/api/mcp
Header: Authorization: Bearer <ваш ключ>Подойдёт любой клиент, который умеет подключать удалённый MCP-сервер по Streamable HTTP с заголовком авторизации: Windsurf, Cline и другие. Укажите адрес https://dev.phygital.plus/api/mcp и заголовок Authorization: Bearer <ваш ключ>.
Коннекторы claude.ai и Claude Desktop пока не поддерживаются: им нужен вход через браузер, а Spectra работает по ключу.
Ключ
Ключ даёт агенту всё, что даёт ваш аккаунт: задачи тратят ваши кредиты, а загруженные файлы ложатся в ваше хранилище. Поэтому ключ — это пароль: он живёт в конфиге клиента на вашей машине и больше нигде. Срок у ключа не ограничен, работает он, пока активна подписка. Если ключ утёк — напишите в поддержку.
Инструменты
Двенадцать инструментов закрывают весь цикл — тот же, что даёт REST API, только без обвязки.
| Инструмент | Аргументы | Что делает |
|---|---|---|
list_models | category? | Модели, доступные по ключу, со slug и категорией |
get_model_schema | model | JSON Schema входов и параметров, собранная из живой схемы модели |
generate | model, input | Ставит задачу и возвращает jobId. Здесь тратятся кредиты |
get_job | jobId | Статус задачи и, когда она закончилась, ссылки на результаты |
cancel_job | jobId | Отменяет задачу и возвращает списанные кредиты |
get_upload_url | — | Одноразовый адрес, чтобы загрузить локальный файл и подставить его во вход |
upload_file | filename, mime_type, data_base64 | Загрузить файл, который агент держит на руках: байты едут прямо в аргументе |
start_upload | filename, mime_type, total_bytes? | Открыть сборку файла, который не влезает в один вызов |
upload_chunk | session_id, index, data_base64 | Прислать кусок файла: нумерация с нуля, порядок любой, но до finish_upload пропусков остаться не должно |
finish_upload | session_id | Склеить куски и положить файл в хранилище — здесь появляется id |
request_upload | — | Открыть в чате панель, где человек сам прикладывает файл со своей машины |
claim_upload | code | Превратить код из панели загрузки в id файла |
Порядок вызовов
Обычно агент идёт по инструментам так:
1. list_models(category="video") → модели и их slug 2. get_model_schema(model="kling") → JSON Schema входов и параметров 3. generate(model="kling", input={ → задача создана, вернулся jobId "text_prompt": "slow dolly in", "init_img": [501], "duration": "sec_5" }) 4. get_job(jobId) → queued → running → completed + ссылки
Локальные файлы
Файловый вход принимает публичную ссылку или id уже загруженного файла. Кто держит файл, тот его и грузит: агент со своими байтами — через upload_file, а если в один вызов они не влезают — по кускам: start_upload, upload_chunk на каждый кусок, finish_upload. Крупный файл, когда у агента есть свой HTTP, — обычным POST по адресу из get_upload_url, а вложение из чата человек прикладывает сам в панели request_upload. Переслать вложение агент не может: оно приходит модели картинкой в контексте, а не файлом.
// файл у агента upload_file("shot.jpg", "image/jpeg", "<base64>") → { "storage_object_id": 501 } // файл у агента, но в один вызов не влезает start_upload("clip.mp4", "video/mp4") → { "session_id": "…", "chunk_max_bytes": 2097152 } upload_chunk(session_id, 0, "<base64>") → { "next_index": 1 } upload_chunk(session_id, 1, "<base64>") → { "next_index": 2 } finish_upload(session_id) → { "storage_object_id": 502 } // файл у агента, но крупный, и свой HTTP есть get_upload_url() → { "upload_url": "…/api/uploads", "file_field": "file" } curl -X POST "$upload_url" -H "Authorization: Bearer $KEY" -F file=@shot.jpg → { "storage_object_id": 501 } // файл у человека — панель загрузки прямо в чате request_upload() → { "status": "waiting_for_the_person", "ticket": "…" } панель; человек кладёт файл → код claim_upload(code) → { "storage_object_id": 501 }
Статусы задачи
| MCP | Что значит |
|---|---|
queued | Задача в очереди или готовится к запуску |
running | Идёт генерация |
completed | Готово, в ответе ссылки на результаты |
failed | Не получилось — причина в error.message |
canceled | Задача отменена |
Кредиты списываются при постановке задачи и возвращаются при отмене, поэтому cancel_job по задаче в очереди ничего не стоит.
Если что-то не так
| Код | Что это значит |
|---|---|
401 | Ключа нет, он неверный или в конфиге клиента опечатка. Также так выглядит закончившаяся подписка — продлите её в боте |
402 | Не хватает кредитов на эту задачу — докупите пакет в боте |
422 | Вход не сходится со схемой модели — перечитайте get_model_schema |
429 | Слишком часто: подождите и повторите вызов |
Вместо того чтобы объяснять агенту процесс вручную, поставьте готовый навык — он учит агента всем инструментам и полному циклу генерации: Навыки для агентов.
Навыки для агентов
Готовые файлы навыков, которые учат ИИ-агента работать с MCP-сервером и API Spectra. Установите навык агенту — и он знает весь процесс.
Как выбрать модель, собрать вход по JSON Schema, загрузить файл, запустить генерацию, дождаться результата и что делать, если задача упала.
Подбирает модель под творческую задачу, пишет промпт-описание или промпт-инструкцию и решает, нужен ли референс.
Как установить
Навык — это один markdown-файл. Для Claude Code положите его в каталог навыков: ~/.claude/skills/<имя>/SKILL.md.
mkdir -p ~/.claude/skills/spectra-mcp ~/.claude/skills/spectra-which-ai curl -o ~/.claude/skills/spectra-mcp/SKILL.md https://spectraapi.one/doc/skills/spectra-mcp.md curl -o ~/.claude/skills/spectra-which-ai/SKILL.md https://spectraapi.one/doc/skills/spectra-which-ai.md
Навыки работают через MCP-сервер Spectra — сначала подключите его к агенту.
Каталог моделей
Все модели и их параметры взяты из живой схемы сервера. Нажмите на модель, чтобы увидеть входы, параметры и пример запроса.
REST API
Те же модели по HTTP — из своего продукта, скрипта или CI.
| Параметр | Значение |
|---|---|
| Адрес | https://dev.phygital.plus |
| Авторизация | заголовок X-Api-Key: <ваш ключ> |
| Формат | JSON, загрузка файлов — multipart/form-data |
Во всех примерах адрес и ключ взяты из переменных окружения:
export SPECTRA_API=https://dev.phygital.plus
export SPECTRA_KEY=<ваш ключ>Ручки
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/models | Каталог моделей — без ключа |
| GET | /api/models/{slug} | Описание модели и схема параметров — без ключа |
| POST | /api/models/{slug} | Запуск задачи — тратит кредиты |
| POST | /api/models/{slug}/estimate | Оценка стоимости — бесплатно |
| POST | /api/models/{slug}/preview | Собрать тело задачи без запуска |
| POST | /api/uploads | Загрузка файла для входа модели |
| GET | /api/tasks/{task_id} | Статус и результат задачи |
| GET | /api/tasks/{task_id}/running | Выполняется ли задача |
| POST | /api/tasks/{task_id}/cancel | Отмена задачи с возвратом кредитов |
| GET | /api/tasks/history | История запусков |
| GET | /api/health | Проверка доступности сервера |
Запуск задачи
Тело запроса — два объекта: inputs (промпт, файлы) и params (версия модели, формат, длительность и т. п.). Какие поля есть у модели, смотрите в каталоге или в GET /api/models/{slug}. Необязательные поля можно не передавать — подставятся значения по умолчанию.
curl -X POST "$SPECTRA_API/api/models/gemini-image" \
-H 'Content-Type: application/json' \
-H "X-Api-Key: $SPECTRA_KEY" \
-d '{"inputs":{"text_prompt":"a ripe banana"},"params":{}}'
# → { "task_id": 179195, ... }Цена до запуска
Тот же запрос на /estimate ничего не запускает и не тратит — возвращает цену в кредитах и текущий баланс.
curl -X POST "$SPECTRA_API/api/models/gemini-image/estimate" \
-H 'Content-Type: application/json' \
-H "X-Api-Key: $SPECTRA_KEY" \
-d '{"inputs":{"text_prompt":"a ripe banana"},"params":{"resolution":"k2"}}'Результат
Опрашивайте GET /api/tasks/{task_id} раз в несколько секунд, пока статус не станет done. Файлы приходят ссылками, текстовые результаты — значением. Ссылки подписаны и живут ограниченное время: если файл нужен надолго, скачайте его сразу.
curl "$SPECTRA_API/api/tasks/179195" -H "X-Api-Key: $SPECTRA_KEY"
Файлы на вход
Файловое поле принимает публичную http(s)-ссылку или id загруженного файла. Загрузить свой файл:
curl -X POST "$SPECTRA_API/api/uploads" -H "X-Api-Key: $SPECTRA_KEY" -F file=@shot.jpg
# → { "storage_object_id": 501 } — подставьте 501 в файловое полеКредиты и тарифы
Кредиты — единый баланс на все модели. Каждая генерация списывает фиксированное число кредитов, цена видна заранее.
| Тариф | Кредитов на 30 дней | Цена |
|---|---|---|
| Starter | 10 000 | $8 · ≈ 800 ₽ |
| Pro | 45 000 | $30 · ≈ 3 000 ₽ |
| Ultimate | 90 000 | $60 · ≈ 6 000 ₽ |
- Кредиты подписки действуют 30 дней и не переносятся. Продление — вручную, бот напомнит за 3 дня.
- Докупка: 10 000, 20 000, 40 000 или 90 000 кредитов — пакеты действуют 3 месяца и работают при активной подписке.
- Новая подписка до конца текущей заменяет её: остаток дней и кредитов сгорает. Если кончились кредиты — дешевле докупить пакет.
- Ориентиры: картинка — от 25 до 75 кредитов, видео — от 270, зависит от модели и параметров. Точная цена — ручка
estimate. - Отмена задачи возвращает её кредиты.
Оплата в @spectraapi_bot: картой в рублях, через CryptoBot, криптой или звёздами Telegram. Подробнее — тарифы на главной.
Частые проблемы
Если что-то не работает — сначала проверьте этот список.
Агент не видит инструменты Spectra
Проверьте, что сервер подключён: /mcp в Claude Code или Settings → MCP в Cursor. Частая причина — опечатка в адресе или лишний пробел в ключе. После правки конфига перезапустите клиент.
Ошибка 401
Ключ не принят: опечатка, или подписка закончилась. Срок подписки и ключ — в боте, «🔑 Мой ключ». Ключ после продления остаётся прежним.
Ошибка 402 — не хватает кредитов
Докупите пакет в боте (кнопка «➕ Докупить»). Баланс видно в «🔑 Мой ключ».
Ошибка 422
Агент передал поле, которого нет у модели, или недопустимое значение. Попросите агента заново прочитать схему модели (get_model_schema) — или поставьте навык spectra-mcp.
Генерация идёт долго
Видео может генерироваться несколько минут, особенно в высоком качестве. Задача не теряется: по jobId её можно проверить позже. Зависшую задачу можно отменить — кредиты вернутся.
Ссылка на результат перестала открываться
Ссылки временные. Скачивайте файлы сразу после генерации.
Работает ли в claude.ai или Claude Desktop?
Пока нет: их коннекторам нужен вход через браузер. Используйте Claude Code, Cursor, Codex или другой клиент с поддержкой заголовка авторизации.
jobId.