Webhooks

Receba notificações em tempo real quando tarefas forem concluídas ou falharem

Visão Geral

Webhooks allow you to receive HTTP callbacks when your image or video generation tasks complete. Instead of polling for results, you can set up a webhook endpoint to receive automatic notifications.

Eventos Disponíveis
  • job.completedTriggered when a task completes successfully
  • job.failedTriggered when a task fails
Endpoints da API
GET/api/v1/webhooks

List all your webhook configurations

Exemplo de Resposta:

{
  "success": true,
  "data": [
    {
      "id": 1,
      "url": "https://your-server.com/webhook",
      "events": ["job.completed", "job.failed"],
      "status": "active"
    }
  ]
}
POST/api/v1/webhooks

Create a new webhook endpoint

Exemplo de Solicitação:

{
  "url": "https://your-server.com/webhook",
  "events": ["job.completed", "job.failed"],
  "secret_key": "your-secret-key"
}

Parâmetros:

ParâmetroTipoObrigatórioDescrição
urlstringObrigatórioYour webhook endpoint URL
eventsstring[]ObrigatórioEvents to subscribe to
secret_keystringOpcionalSecret for signature verification

Exemplo de Resposta:

{
  "success": true,
  "data": {
    "id": 1,
    "url": "https://your-server.com/webhook",
    "events": ["job.completed", "job.failed"],
    "status": "active"
  }
}
DELETE/api/v1/webhooks/{id}

Delete a webhook endpoint

Exemplo de Resposta:

{
  "success": true,
  "data": { "id": 1 }
}
Carga do Webhook
Formato das notificações de webhook enviadas para seu endpoint
CabeçalhoDescrição
X-Nano-TimestampUnix timestamp of the request
X-Nano-SignatureHMAC-SHA256 signature for verification

Exemplo de Payload:

{
  "event": "job.completed",
  "task_id": "task_xxx",
  "task_type": "image",
  "status": "completed",
  "data": {
    "url": "https://cdn.example.com/image.png",
    "credits_charged": 6
  },
  "timestamp": "2024-12-23T10:00:00Z"
}
Verificação de Assinatura
const crypto = require('crypto');

function verifySignature(payload, signature, secret, timestamp) {
  const message = `${timestamp}.${JSON.stringify(payload)}`;
  const expectedSig = crypto
    .createHmac('sha256', secret)
    .update(message)
    .digest('hex');
  return `v1=${expectedSig}` === signature;
}
Nano Banana Pro API