Dashboard Management
Webhooks are managed through the inference.net dashboard:- Navigate to Webhooks on the sidebar
- Create, test, archive, or restore webhooks through the UI
- Copy your webhook identifier for use in generation requests
Payload Structures
generation.completed
async-embedding.completed
slow-group.completed
Headers
| Header | Description | Example |
|---|---|---|
X-Inference-Event | Event type | generation.completed, async-embedding.completed, or slow-group.completed |
X-Inference-Webhook-ID | Webhook identifier | AhALzdz8S |
X-Inference-Generation-ID | Generation ID (if applicable) | XBKcs7F1s2oJ_AHiLMbF4 |
X-Inference-Group-ID | Group ID (for group events) | GRP_XYZ123 |
User-Agent | inference.net webhook agent | Kuzco-Webhook/1.0 |
Content-Type | Always application/json | application/json |
Using Webhooks in Generations
Include the webhook identifier in your generation request metadata:Chat Completions
Embeddings
Minimal Webhook Handler Examples
Node.js/Express
Python/FastAPI
Go
Timing & Limits
| Metric | Value | Notes |
|---|---|---|
| Response timeout | 30 seconds | Must respond within this time |
| Retry attempts | 3 | With exponential backoff |
| Max payload size | 10MB | Typical: 5-50KB |
| Delivery time | Under 60 seconds | From completion to webhook |
Response Codes
| Code | Meaning | Retry? |
|---|---|---|
| 200-299 | Success | No |
| 400-499 | Client error | No |
| 500-599 | Server error | Yes |
| Timeout | No response in 30s | Yes |
Best Practices Checklist
- Respond with 200 OK immediately
- Process webhook data asynchronously
- Implement idempotency with generation_id or group_id
- Validate webhook source via headers
- Handle errors gracefully
- Monitor webhook processing
- Use HTTPS endpoint
- Set up proper error logging
- Test webhook with dashboard test feature
- Implement timeout handling
- Handle both individual and group completions
Common Issues & Solutions
| Issue | Solution |
|---|---|
| Not receiving webhooks | Check webhook not disabled in dashboard, test connectivity, verify HTTPS URL |
| Duplicate webhooks | Implement idempotency, ensure 200 OK response |
| Webhooks timing out | Respond immediately, process asynchronously |
| Invalid payload | Validate against documented schema |
| Test webhook fails | Check endpoint is publicly accessible, returns 200 OK |
Support Resources
- Full Documentation
- API Reference
- Support
- Discord Community