Нейросети в своём Telegram-боте
Бот принимает текст пользователя, вызывает createTask и присылает картинку, когда вебхук скажет, что задача готова. Баланс общий с сайтом.
- Один ключ
- Вебхук вместо опроса
- Цены в рублях
Схема
- Пользователь пишет боту запрос.
- Бот вызывает
POST /api/v1/jobs/createTaskи передаётcallBackUrlна свой сервер. - Сервер проверяет
X-Signatureи отправляет пользователю ссылку изresultUrls.
curl -X POST https://mixmedia.tech/api/v1/jobs/createTask \
-H "Authorization: Bearer $MIXMEDIA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"nano-banana-2","input":{"prompt":"Стикер кота в шарфе","aspect_ratio":"1:1"}}'
# статус (или передайте callBackUrl — пришлём результат сами)
curl "https://mixmedia.tech/api/v1/jobs/recordInfo?taskId=TASK_ID" \
-H "Authorization: Bearer $MIXMEDIA_API_KEY"import os, time, requests
API = "https://mixmedia.tech/api/v1"
H = {"Authorization": f"Bearer {os.environ['MIXMEDIA_API_KEY']}"}
task = requests.post(f"{API}/jobs/createTask", headers=H, json={
"model": "nano-banana-2",
"input": {
"prompt": "Стикер кота в шарфе",
"aspect_ratio": "1:1"
}
}).json()
task_id = task["data"]["taskId"]
while True:
info = requests.get(f"{API}/jobs/recordInfo", headers=H, params={"taskId": task_id}).json()["data"]
if info["state"] in ("success", "fail"):
break
time.sleep(5)
print(info["state"], info.get("resultJson"))const API = "https://mixmedia.tech/api/v1";
const H = { Authorization: `Bearer ${process.env.MIXMEDIA_API_KEY}`, "Content-Type": "application/json" };
const { data } = await (await fetch(`${API}/jobs/createTask`, {
method: "POST", headers: H,
body: JSON.stringify({
"model": "nano-banana-2",
"input": {
"prompt": "Стикер кота в шарфе",
"aspect_ratio": "1:1"
}
}),
})).json();
let info;
do {
await new Promise((r) => setTimeout(r, 5000));
info = (await (await fetch(`${API}/jobs/recordInfo?taskId=${data.taskId}`, { headers: H })).json()).data;
} while (!["success", "fail"].includes(info.state));
console.log(info.state, info.resultJson);Секрет вебхука и ключ не кладите в код бота открытым текстом — только в переменные окружения.
Вопросы и ответы
Куда писать с вопросами?
В Telegram @mixmedia_robot — ответим по API, оплате и интеграции. Для обращений с историей есть раздел «Поддержка» в кабинете.
Как оплатить API из России?
Пополните баланс в кабинете картой любого российского банка или через СБП. Баланс общий для сайта и API, списание — за каждый запуск, без подписки и минимального платежа.
Нужен ли VPN?
Нет. API и сайт работают из России напрямую: запросы идут на mixmedia.tech/api/v1, ссылки на результаты — на наш домен.
Что будет, если генерация не удалась?
Цена списывается при создании задачи и автоматически возвращается на баланс, если задача завершилась ошибкой (state = fail).
Какие лимиты?
Лимиты на число одновременных задач и запросов в минуту зависят от модели и указаны в документации. Если нужен больший поток — напишите в поддержку.
Как работают вебхуки?
Передайте callBackUrl в createTask — когда задача станет success или fail, мы отправим POST с тем же JSON, что у recordInfo. Подпись X-Signature = HMAC-SHA256 от сырого тела с вашим секретом whsec_…; до 4 попыток доставки. Подробнее.
Начать
Войдите, создайте ключ в кабинете, пополните баланс картой РФ или СБП — и отправьте первый запрос.
Вопросы? Напишите в Telegram @mixmedia_robot.