Webhooks API
Webhooks allow Aha! to receive real-time updates from integrated development tools and services. When configured properly, external systems can send webhook notifications to Aha! whenever relevant events occur (like issue updates, code commits, or task status changes).
Authentication: Webhooks use callback tokens instead of standard API authentication. Each integration has a unique callback token that must be included in webhook requests.
Supported Integrations: Aha! supports webhooks from many popular development tools including:
- Jira - Issue and project updates
- GitHub - Issue, pull request, and commit events
- Rally - Work item and project updates
- Asana - Task and project notifications
- Salesforce - Opportunity and case updates
- Smartsheet - Sheet and row changes
- Trello - Card and board updates
Setup Requirements:
- Integration must be properly configured and enabled
- Callback token must be valid and active
- Account must be in good standing (not disabled/suspended)
- Webhook payload must match the expected format for the integration type
Error Handling: Webhook endpoints return appropriate HTTP status codes:
200 OK
- Webhook processed successfully410 Gone
- Invalid token or disabled account500 Error
- Processing error (automatically retried by most systems)
Process GitHub commit hook payload
POST /api/v1/webhooks/:token
GitHub commit hooks send webhook data in a 'payload' parameter instead of the standard 'webhook' parameter. This format is handled specially to ensure compatibility with GitHub's webhook format.
Typical GitHub commit hook payload includes:
- ref: "refs/heads/main"
- commits: [{ id: "abc123def456", message: "Commit message", author: { name: "Developer", email: "dev@company.com" } }]
- repository: { id: 123456789, name: "repo-name", full_name: "company/repo-name" }
Name | Description |
---|---|
token * | Callback token for the integration |
Example request
POST /api/v1/webhooks/22b7893e7fa1c4c60847090f78fbf0ec
Example CURL command
curl "https://company.aha.io/api/v1/webhooks/22b7893e7fa1c4c60847090f78fbf0ec" -d '' -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-Hook-Secret: confirmation-secret-123" \
-H "Smartsheet-Hook-Challenge: smartsheet-challenge-456"
Request
contentType: application/json
accept: application/json
Response
Status: 200 OK
contentType: application/json