VectorMethods

Docs / API reference

Webhooks

Send VideoVector prompt-run, import, export, and media processing events to downstream workflow systems.

api/routes.pyapi/webhook_controllers.pyinfrastructure/webhook_delivery_worker.py

Search documentation

Search pages, API reference sections, and guide headings.

Summary

Webhooks deliver VideoVector events to your HTTPS endpoint for review operations, export handoff, import monitoring, and media processing automation.

Webhook endpoints

MethodPathPurpose
POST/api/v2/webhooksCreate a webhook
GET/api/v2/webhooksList webhooks
GET/api/v2/webhooks/eventsList supported event names
GET/api/v2/webhooks/{webhook_id}Retrieve one webhook
PATCH/api/v2/webhooks/{webhook_id}Update a webhook
DELETE/api/v2/webhooks/{webhook_id}Delete a webhook
POST/api/v2/webhooks/{webhook_id}/rotate-secretRotate the signing secret
POST/api/v2/webhooks/{webhook_id}/testSend a test event
GET/api/v2/webhooks/{webhook_id}/deliveriesList deliveries
GET/api/v2/webhooks/deliveries/{delivery_id}Retrieve one delivery
POST/api/v2/webhooks/deliveries/{delivery_id}/retryRetry a failed delivery

Event model

The public SDK lists these supported event names:

  • media.created
  • media.processing.started
  • media.processing.completed
  • media.processing.failed
  • prompt_run.started
  • prompt_run.completed
  • prompt_run.failed
  • prompt_run.cancelled
  • prompt_run.partial_completed
  • prompt_run.progress
  • export.ready
  • export.failed
  • import_job.started
  • import_job.completed
  • import_job.failed
  • import_job.partial_completed
  • import_job.progress

Example: create a webhook

curl -X POST /api/v2/webhooks \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: webhook-review-events" \
  -d '{
    "name": "Review operations",
    "url": "https://example.com/webhooks/videovector",
    "events": ["prompt_run.completed", "export.ready"],
    "index_ids": ["idx_archive"],
    "metadata": {"owner":"review-ops"}
  }'

Delivery headers and signature verification

Webhook deliveries include:

  • X-Webhook-Signature
  • X-Webhook-ID
  • X-Delivery-ID
  • X-Event-Type

The delivery worker signs the canonical JSON payload with HMAC-SHA256 and sends the header as sha256=<hex-digest>.

import hashlib
import hmac
import json

payload_json = json.dumps(payload, sort_keys=True)
expected = hmac.new(secret.encode("utf-8"), payload_json.encode("utf-8"), hashlib.sha256).hexdigest()
assert received_signature == f"sha256={expected}"

Delivery status and recovery

The delivery worker treats response classes differently:

  • 2xx: success
  • 4xx: permanent failure, no automatic retry
  • 5xx and network failures: retryable failure

Use POST /api/v2/webhooks/deliveries/{delivery_id}/retry when the downstream issue is resolved.

Secret rotation

POST /api/v2/webhooks/{webhook_id}/rotate-secret returns a new secret. Update the receiving system before you depend on the next production delivery.

SDK equivalents

  • client.webhooks.create
  • client.webhooks.update
  • client.webhooks.rotate_secret
  • client.webhooks.test
  • client.webhooks.list_deliveries
  • client.webhooks.retry_delivery

Related documentation

This guide shows how to scope webhook events, validate signed deliveries, monitor delivery history, control downstream delivery, and maintain signing trust.

VideoVector exposes a public workflow layer for storage integration and downstream delivery. This page explains connectors, jobs, automations, exports, and event delivery as one model.

This page groups the supported public endpoints that do not fit cleanly into a primary workflow resource page but are still part of the public non-billing API surface.