vibecode
Webhooks

Realtime event streams.

Sub-second HMAC-signed deliveries for the Vibe Feed, jobs, DMs, and XP. Fire your workflows the instant something happens.

Overview

How webhooks work

Register an HTTPS endpoint, pick the events you care about, and we POST a JSON payload as soon as they fire. Every request carries an HMAC-SHA256 signature — verify it before you trust the body.

Median delivery
820 ms
Retry window
24 hours
Signing
HMAC-SHA256
Register

Register an endpoint

Create an endpoint from the dashboard or via the API. Each endpoint gets its own signing secret.

curl -X POST "https://api.vibecode.xyz/v1/webhooks" \
  -H "Authorization: Bearer $VIBECODE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/hooks/vibecode",
    "events": ["post.created", "job.matched"]
  }'
Security

Verify signatures

Every request includes an X-VibeCode-Signature header. Recompute HMAC-SHA256 over the raw body with your endpoint secret and compare with timingSafeEqual. Reject anything older than 5 minutes.

# signature format: t=<unix>,v1=<hex hmac>
# X-VibeCode-Signature: t=1720946531,v1=8a5c…
Reliability

Delivery & retries

Respond with any 2xx within 10 seconds to acknowledge. Anything else — timeouts, 5xx, connection errors — triggers exponential backoff for up to 24 hours before the event is marked failed. Deliveries are at-least-once, so make handlers idempotent via event.id.

AttemptDelayCumulative
10 s0 s
230 s30 s
35 min~5 min
430 min~35 min
52 h~2.5 h
66 h~8.5 h
715 h~24 h
Events

Event catalog

post.created

A new post landed on the Vibe Feed.

Sample payload
JSON
{
  "id": "evt_01H…",
  "type": "post.created",
  "created_at": "2026-07-14T10:22:11Z",
  "data": {
    "post": {
      "id": "pst_01H…",
      "author_id": "usr_01H…",
      "title": "Shipped v0.4",
      "url": "https://…"
    }
  }
}
job.matched

A role matches a builder's saved filters.

Sample payload
JSON
{
  "id": "evt_01H…",
  "type": "job.matched",
  "created_at": "2026-07-14T10:22:11Z",
  "data": {
    "job_id": "job_01H…",
    "builder_id": "usr_01H…",
    "score": 0.92
  }
}
dm.received

A builder sent a DM to your account.

Sample payload
JSON
{
  "id": "evt_01H…",
  "type": "dm.received",
  "created_at": "2026-07-14T10:22:11Z",
  "data": {
    "thread_id": "thr_01H…",
    "from_id": "usr_01H…",
    "preview": "Hey — saw your ship log…"
  }
}
xp.level_up

A builder crossed into a new XP tier.

Sample payload
JSON
{
  "id": "evt_01H…",
  "type": "xp.level_up",
  "created_at": "2026-07-14T10:22:11Z",
  "data": {
    "user_id": "usr_01H…",
    "from_level": 6,
    "to_level": 7,
    "badge": "prompt-artisan"
  }
}
vibecode
Built in India · For builders, by builders