Skip to main content
This guide walks you end-to-end through a working integration: provisioning a key, building a minimal webhook handler with signature verification, subscribing to events, and triggering a test delivery.

Prerequisites

  • A VantageClaw partner organization with a Partner API key issued to you. Keys are admin-provisioned in v1 — contact your VantageClaw representative if you don’t have one yet.
  • A publicly reachable HTTPS URL for your handler. For local development, ngrok or Cloudflare Tunnel work well.
  • Python 3.10+ or Node.js 18+ for the example handler.

Step 1 — Verify your key

Confirm your key is valid and check what scopes it carries:
You should see your org slug, key ID, and scope list. If you get 401, double-check the full token includes both halves separated by a dot.

Step 2 — Build a minimal webhook handler

This handler reads the raw body, verifies the signature, and returns 200. Save as handler.py:
Don’t start it yet — we need the subscription’s secret first.

Step 3 — Subscribe to the test event

Expose your handler to the public internet. With ngrok:
Then create the subscription. The response will include a secret field — copy it now, it is shown only once:
Response:
Save the id (wh_...) and the secret (whsec_...) — you’ll need both.
The secret is unrecoverable. If you lose it before saving, delete this subscription and create a new one.

Step 4 — Start your handler with the secret

You should see Serving HTTP on 0.0.0.0 port 8080.

Step 5 — Trigger the test event

The test endpoint requires you to echo back your stored secret in the request body. This is deliberate: VantageClaw does not cache your secret server-side after creation, so the only way to authorize a test is for you to prove you still hold it.
Response (200):
The event is now in the dispatch queue. Within a few seconds your handler should log:
The evt_ ID in your handler’s log matches the event_id in the test endpoint’s response — use this for trace correlation. Fire the same test twice and watch your handler. Both deliveries will have different id values (each test invocation generates a fresh envelope ID), so a naive “dedupe on id” handler will process both. In production, dedupe is most useful when the dispatcher retries after a network blip — the same envelope ID arrives twice. To test that scenario, deliberately reject the first delivery (return 500 from your handler for one request) and watch the retry arrive 60 seconds later with the same id. Your handler should recognize the duplicate and short-circuit.

What’s next

Integration test

The full production-readiness checklist.

Webhook security

Verification deep-dive, including Node.js reference code.