Overview
Webhooks allow you to receive HTTP notifications whenever significant events occur in your organization. Instead of polling the API, you register a URL and Jinba Toolbox pushes event payloads to it in real time. Webhooks are configured per organization and can subscribe to one or more event types.Event Types
| Event | Description |
|---|---|
tool.run.completed | A tool execution finished successfully |
tool.run.failed | A tool execution failed |
toolset.published | A new toolset version was published |
member.added | A new member was added to the organization |
member.removed | A member was removed from the organization |
Setting Up Webhooks
Create a webhook endpoint
Set up an HTTP endpoint on your server that can receive POST requests. The endpoint must return a
2xx status code to acknowledge receipt.Register the webhook
Use the API or the web console to register your endpoint URL and select the events you want to subscribe to.
Store the signing secret
When you create a webhook, a signing secret is generated. Store it securely — you will use it to verify incoming payloads.
Webhook Configuration
Each webhook has the following properties:Payload Format
Every webhook delivery sends a JSON payload with the following structure:Event-Specific Payloads
tool.run.completed
tool.run.failed
toolset.published
member.added
Signature Verification
Every webhook request includes anX-Webhook-Signature header containing an HMAC-SHA256 signature of the request body, computed with your webhook’s signing secret.
Webhook Management API
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/orgs/:orgId/webhooks | List webhooks |
| POST | /v1/orgs/:orgId/webhooks | Create webhook |
| PATCH | /v1/orgs/:orgId/webhooks/:id | Update webhook |
| DELETE | /v1/orgs/:orgId/webhooks/:id | Delete webhook |
| POST | /v1/orgs/:orgId/webhooks/:id/test | Send test event |
Retry Behavior
If your endpoint does not return a2xx status code, Jinba Toolbox retries the delivery:
| Attempt | Delay |
|---|---|
| 1st retry | 1 minute |
| 2nd retry | 5 minutes |
| 3rd retry | 30 minutes |
Best Practices
- Always verify the signature before processing a payload to prevent tampering.
- Return a
200status quickly — perform any heavy processing asynchronously after acknowledging the webhook. - Use idempotent processing — webhook deliveries may arrive more than once due to retries. Use the
runIdor event timestamp to deduplicate. - Monitor webhook health — re-enable disabled webhooks promptly and investigate delivery failures.
- Subscribe only to needed events — reduce noise by selecting only the events your integration requires.
Related
- REST API — Full endpoint reference
- Security & Access Control — Authentication and authorization details
Jinba Toolbox