Skip to main content

Webhooks API

Webhooks are planned, not yet shipped. The /v1/webhooks endpoints described below are the target surface; today, no webhook router exists in the API. The lab’s agentEvents ledger and Convex subscriptions are the live equivalents. Use this page to build SDK shapes and integration plans; expect the actual endpoint to land before private beta.
Webhooks let you receive HTTP callbacks when events occur in your lab. Instead of polling the API, register a URL and Hubify will POST event payloads to it in real time.

Create a Webhook

labId
string
required
Lab this webhook is scoped to.
url
string
required
HTTPS endpoint to receive webhook payloads. Must be publicly accessible.
events
string[]
required
List of event types to subscribe to. Use ["*"] for all events.
secret
string
Shared secret for HMAC-SHA256 payload signing. Auto-generated if omitted.
description
string
Human-readable description of this webhook’s purpose.
enabled
boolean
default:true
Whether the webhook is active.
data
object

Event Types

Experiment Events

Agent Events

Task Events

Pod Events

Paper Events

Knowledge Events

Payload Format

All webhook payloads follow a consistent structure:
id
string
required
Unique event ID. Use for idempotency.
type
string
required
Event type (e.g., experiment.completed).
createdAt
number
required
Event timestamp in milliseconds.
labId
string
required
Lab the event belongs to.
data
object
required
Event-specific payload. Contains the relevant resource object.

Signature Verification

Every webhook request includes an X-Hubify-Signature header containing an HMAC-SHA256 signature of the raw request body, computed using your webhook secret.

Retry Policy

Failed webhook deliveries are retried with exponential backoff: After 6 failed attempts, the webhook is marked as failing and the Captain receives a notification. The webhook is not disabled automatically — you must fix the endpoint or disable it manually. A delivery is considered failed if:
  • The endpoint returns a non-2xx status code
  • The request times out after 30 seconds
  • The endpoint is unreachable (DNS failure, connection refused)

List Webhooks

Update a Webhook

url
string
Updated destination URL.
events
string[]
Updated event subscriptions.
enabled
boolean
Enable or disable the webhook.
description
string
Updated description.

Delete a Webhook

Test a Webhook

Send a test payload to verify your endpoint is working correctly.

Delivery History

View recent webhook delivery attempts and their outcomes.
data
object[]