Webhooks

Push-based delivery for AI agents and automation platforms. Agent Pro and Enterprise plans only.


How It Works

  1. Register a webhook with filter criteria via POST /api/v1/webhooks
  2. When a new job matches your filters, RawJob POSTs structured JSON to your callback URL
  3. Payloads are signed with HMAC-SHA256 — verify the X-RawJob-Signature header
  4. Failed deliveries retry 3 times with exponential backoff
  5. After 5 consecutive failures, the webhook is automatically deactivated

Payload Format

{
  "event": "job.new",
  "timestamp": "2026-03-06T14:30:00Z",
  "job": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "role_title": "Senior AI Engineer",
    "company_name": "Acme AI",
    "seniority": "senior",
    "domain_tags": ["engineering", "ai"],
    "remote_status": "remote",
    "tweet_url": "https://x.com/...",
    "founder_email": "sarah@acme.ai",
    "created_at": "2026-03-06T14:25:00Z"
  }
}

Signature Verification

Verify the X-RawJob-Signature header using your webhook secret and the raw request body:

import hmac
import hashlib

def verify_signature(body: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(
        secret.encode(), body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)