Webhooks
Webhooks notify your application in real-time when events happen in cStar. Subscribe to ticket, customer, article, and gamification events.
The Webhook object
Unique webhook identifier
Friendly name for the webhook
Delivery URL (HTTPS)
Array of subscribed event types
HMAC signing secret (shown once at creation)
Whether the webhook is currently active
When the webhook was created
Last modification timestamp
Endpoints
/api/v1/teams/{teamId}/webhooksList Webhooks
Retrieve all configured webhooks for your team.
Code Examples
curl -X GET "https://app.cstar.help/api/v1/teams/{teamId}/webhooks" \
-H "Authorization: Bearer sk_live_your_key"
Responses
{
"data": [
{
"id": "wh_001",
"name": "Slack Notifications",
"url": "https://hooks.slack.com/services/...",
"events": [
"ticket.created",
"ticket.closed"
],
"is_active": true,
"created_at": "2025-11-01T10:00:00Z"
}
]
}
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API key"
}
}
{
"error": {
"code": "FORBIDDEN",
"message": "Secret key required for this endpoint"
}
}
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Try again in 60 seconds",
"retryAfter": 60
}
}
/api/v1/teams/{teamId}/webhooks/{webhookId}Get Webhook
Retrieve a single webhook by ID.
Path Parameters
webhookId uuid requiredThe webhook ID
Code Examples
curl -X GET "https://app.cstar.help/api/v1/teams/{teamId}/webhooks/{webhookId}" \
-H "Authorization: Bearer sk_live_your_key"
Responses
{
"data": {
"id": "wh_001",
"name": "Slack Notifications",
"url": "https://hooks.slack.com/services/...",
"events": [
"ticket.created",
"ticket.closed"
],
"is_active": true,
"created_at": "2025-11-01T10:00:00Z",
"updated_at": "2025-11-15T12:00:00Z"
}
}
{
"error": {
"code": "resource_missing",
"message": "Webhook not found"
}
}
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API key"
}
}
{
"error": {
"code": "FORBIDDEN",
"message": "Secret key required for this endpoint"
}
}
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Try again in 60 seconds",
"retryAfter": 60
}
}
/api/v1/teams/{teamId}/webhooksCreate Webhook
Create a new webhook subscription. The signing secret is returned once — save it immediately.
Request Body
name string requiredFriendly name
url string requiredDelivery URL (must be HTTPS)
events string requiredComma-separated event types to subscribe to
Code Examples
curl -X POST "https://app.cstar.help/api/v1/teams/{teamId}/webhooks" \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"name": "My Webhook",
"url": "https://example.com/webhook",
"events": "ticket.created,ticket.closed"
}'
Responses
{
"data": {
"id": "wh_002",
"name": "My Webhook",
"url": "https://example.com/webhook",
"events": [
"ticket.created",
"ticket.closed"
],
"secret": "whsec_AbCdEf1234567890...",
"is_active": true,
"created_at": "2025-12-10T14:30:00Z"
}
}
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API key"
}
}
{
"error": {
"code": "FORBIDDEN",
"message": "Secret key required for this endpoint"
}
}
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Try again in 60 seconds",
"retryAfter": 60
}
}
/api/v1/teams/{teamId}/webhooks/{webhookId}Update Webhook
Update an existing webhook. Use this to change the URL, events, or toggle active status.
Path Parameters
webhookId uuid requiredThe webhook ID
Request Body
name string Friendly name
url string Delivery URL (must be HTTPS)
events string Comma-separated event types
isActive boolean Enable or disable the webhook
Code Examples
curl -X PATCH "https://app.cstar.help/api/v1/teams/{teamId}/webhooks/{webhookId}" \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{ "events": "ticket.created,ticket.updated,ticket.closed" }'
Responses
{
"data": {
"id": "wh_002",
"name": "My Webhook",
"url": "https://example.com/webhook",
"events": [
"ticket.created",
"ticket.updated",
"ticket.closed"
],
"is_active": true,
"updated_at": "2025-12-10T16:00:00Z"
}
}
{
"error": {
"code": "resource_missing",
"message": "Webhook not found"
}
}
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API key"
}
}
{
"error": {
"code": "FORBIDDEN",
"message": "Secret key required for this endpoint"
}
}
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Try again in 60 seconds",
"retryAfter": 60
}
}
/api/v1/teams/{teamId}/webhooks/{webhookId}Delete Webhook
Permanently delete a webhook subscription.
Path Parameters
webhookId uuid requiredThe webhook ID
Code Examples
curl -X DELETE "https://app.cstar.help/api/v1/teams/{teamId}/webhooks/{webhookId}" \
-H "Authorization: Bearer sk_live_your_key"
Responses
{
"data": {
"deleted": true
}
}
{
"error": {
"code": "resource_missing",
"message": "Webhook not found"
}
}
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API key"
}
}
{
"error": {
"code": "FORBIDDEN",
"message": "Secret key required for this endpoint"
}
}
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Try again in 60 seconds",
"retryAfter": 60
}
}
/api/v1/teams/{teamId}/webhooks/trigger-testTrigger Test Event
Fire a test webhook event to all active webhooks and CLI listeners. Useful for testing your integration.
Request Body
event string requiredEvent type to fire
Code Examples
curl -X POST "https://app.cstar.help/api/v1/teams/{teamId}/webhooks/trigger-test" \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{ "event": "ticket.created" }'
Responses
{
"data": {
"event": "ticket.created",
"eventId": "evt_abc123",
"deliveries": []
}
}
{
"error": {
"code": "parameter_invalid",
"message": "Unknown event type: invalid.event",
"param": "event"
}
}
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API key"
}
}
{
"error": {
"code": "FORBIDDEN",
"message": "Secret key required for this endpoint"
}
}
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Try again in 60 seconds",
"retryAfter": 60
}
}