Для разработчиков
Запускайте генерацию программно тем же движком, что и на сайте
1
Получите ключ
Он показывается один раз, сохраните его в секретах вашего сервиса
2
Выберите модель
Каталог и схему параметров каждой модели отдаёт сам API. Возьмите нужный code из списка
curl https://api.spello.ru/v1/models \
-H "Authorization: Bearer spl_live_ВАШ_КЛЮЧ"3
Запустите генерацию
Отправьте задачу: tool это code модели, payload проверяется по её схеме. В ответе придёт id задачи
curl -X POST https://api.spello.ru/v1/tasks \
-H "Authorization: Bearer spl_live_ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{"tool": "nano_banana", "payload": {"prompt": "котик"}}'4
Дождитесь результата
Опрашивайте задачу по id, пока status не станет done, error или blocked. Ссылка на готовый файл придёт в result.artifacts
curl https://api.spello.ru/v1/tasks/ID_ЗАДАЧИ \
-H "Authorization: Bearer spl_live_ВАШ_КЛЮЧ"Полный пример: правка фото
Самодостаточный скрипт: загружает фото, правит его через Nano Banana Pro, ждёт результат и печатает ссылку на готовый файл. Ключ берётся из переменной окружения SPELLO_API_KEY, задайте её перед запуском. Положите photo.jpg рядом со скриптом. Для Python нужен пакет requests, для JavaScript подойдёт Node 18 или новее
import os
import time
import requests
API = "https://api.spello.ru/v1"
KEY = os.environ["SPELLO_API_KEY"]
AUTH = {"Authorization": f"Bearer {KEY}"}
# 1. Загружаем фото на вход
with open("photo.jpg", "rb") as f:
upload = requests.post(
f"{API}/uploads/image",
headers=AUTH,
files={"file": ("photo.jpg", f, "image/jpeg")},
)
upload.raise_for_status()
media = upload.json()["media"]
# 2. Запускаем правку через Nano Banana Pro
created = requests.post(
f"{API}/tasks",
headers={**AUTH, "Content-Type": "application/json"},
json={
"tool": "nano_banana_pro",
"payload": {
"prompt": "добавь на фон закатное небо, лицо не меняй",
"references": [media],
"resolution": "1K",
},
},
)
created.raise_for_status()
task_id = created.json()["id"]
# 3. Ждём результат
while True:
time.sleep(2)
task = requests.get(f"{API}/tasks/{task_id}", headers=AUTH).json()
print(task)
if task["status"] in ("done", "error", "blocked"):
break
# 4. Забираем ссылку на готовый файл
if task["status"] == "done":
print(task["result"]["artifacts"][0]["media"]["url"])
else:
print("не удалось:", task.get("message"))Все запросы идут на
https://api.spello.ru/v1. Список моделей, их параметры и схемы во вкладке «Документация»