Перейти к основному содержанию

Documentation Index

Fetch the complete documentation index at: https://docs.runblob.io/llms.txt

Use this file to discover all available pages before exploring further.

Настройка Webhooks

Передайте callback_url при создании генерации, чтобы получать уведомления:
curl -X POST https://platform.runblob.io/v1/gemini/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A cute orange cat",
    "callback_url": "https://your-server.com/webhook"
  }'

Payload Webhook

По завершении генерации (успех или ошибка) мы отправляем POST-запрос на ваш callback_url:

Success payload

{
  "task_uuid": "ffd473d5-5bef-4e14-bf22-8d559be3c19f",
  "status": "completed",
  "result_image_url": "https://storage.runblob.io/nanobanana/outputs/2025/12/ffd473d5.png",
  "message": null
}

Failure payload

{
  "task_uuid": "ffd473d5-5bef-4e14-bf22-8d559be3c19f",
  "status": "failed",
  "result_image_url": null,
  "message": "MODERATION_FAILED"
}

Поля webhook

task_uuid
string
UUID завершённой генерации
status
string
Финальный статус: "completed" или "failed"
result_image_url
string
URL сгенерированного изображения (только для completed)
message
string
Код ошибки при сбое, иначе null

Обработка webhooks

from flask import Flask, request

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def handle_webhook():
    data = request.json
    
    if data['status'] == 'completed':
        print(f"Image ready: {data['result_image_url']}")
        # Download and process the image
    else:
        print(f"Generation failed: {data['message']}")
        # Handle error
    
    return 'OK', 200

Лучшие практики

Проверяйте, что webhook-запросы приходят от RunBlob, по источнику или подписи.
Возвращайте 2xx-ответ в пределах 5 секунд. При необходимости обрабатывайте webhook асинхронно.
Реализуйте идемпотентность — мы можем повторять неудачные доставки. Используйте task_uuid для дедупликации.
Всегда используйте HTTPS-эндпоинты для безопасной передачи данных.
Если ваш webhook-эндпоинт возвращает ошибку (4xx/5xx) или таймаутится, мы повторим до 3 раз с экспоненциальной задержкой.