Webhook Management API



The Webhook Management API allows you to create, update, and delete webhook endpoints programmatically.

Note

All webhook management endpoints require authentication. See Authorization for details.

Endpoint Object

{
    "id" : String,
    "url" : String,
    "description" : String,
    "events" : Array,
    "status" : String,
    "enabled" : Boolean,
    "stats" : {
        "successful_deliveries" : Number,
        "failed_deliveries" : Number,
        "last_delivery_at" : Date
    },
    "secret_prefix" : String,
    "created_at" : Date,
    "updated_at" : Date,
    "is_legacy" : Boolean
}
FieldDescription
idUnique identifier for the endpoint
urlHTTPS URL where webhooks will be delivered
descriptionOptional description of the endpoint
eventsArray of event types to subscribe to
statusCurrent status: active or paused
enabledWhether the endpoint is enabled for delivery
statsDelivery statistics for the endpoint
secret_prefixPrefix of the shared secret (whsec_)
created_atWhen the endpoint was created
updated_atWhen the endpoint was last modified
is_legacytrue if this is a legacy webhook (read-only)

Note

The full secret is only returned when creating a new endpoint. Store it securely as it cannot be retrieved later.


List Webhook Endpoints

Returns all webhook endpoints for a company.

GET /v3/company/{company_id}/webhook_endpoints

Request

curl -X GET https://api.breezy.hr/v3/company/{company_id}/webhook_endpoints \
  -H "Authorization: {your_api_token}"

Response

{
    "data" : [
        {
            "id" : "abc123",
            "url" : "https://example.com/webhook",
            "description" : "Production webhook",
            "events" : ["candidateAdded", "candidateStatusUpdated"],
            "status" : "active",
            "enabled" : true,
            "stats" : {
                "successful_deliveries" : 42,
                "failed_deliveries" : 1,
                "last_delivery_at" : "2025-01-15T10:30:00Z"
            },
            "secret_prefix" : "whsec_",
            "created_at" : "2025-01-01T00:00:00Z",
            "updated_at" : "2025-01-15T10:30:00Z"
        }
    ]
}

Get Webhook Endpoint

Returns a single webhook endpoint by ID.

GET /v3/company/{company_id}/webhook_endpoint/{endpoint_id}

Request

curl -X GET https://api.breezy.hr/v3/company/{company_id}/webhook_endpoint/{endpoint_id} \
  -H "Authorization: {your_api_token}"

Response

{
    "id" : "abc123",
    "url" : "https://example.com/webhook",
    "description" : "Production webhook",
    "events" : ["candidateAdded", "candidateStatusUpdated"],
    "status" : "active",
    "enabled" : true,
    "stats" : {
        "successful_deliveries" : 42,
        "failed_deliveries" : 1,
        "last_delivery_at" : "2025-01-15T10:30:00Z"
    },
    "secret_prefix" : "whsec_",
    "created_at" : "2025-01-01T00:00:00Z",
    "updated_at" : "2025-01-15T10:30:00Z"
}

Create Webhook Endpoint

Creates a new webhook endpoint.

POST /v3/company/{company_id}/webhook_endpoints

Request Body

FieldTypeRequiredDescription
urlStringYesHTTPS URL for webhook delivery
descriptionStringNoDescription of the endpoint
eventsArrayYesEvent types to subscribe to

Available Events

  • candidateAdded
  • candidateDeleted
  • candidateStatusUpdated
  • companyPositionAdded
  • companyPositionUpdated
  • companyPositionDeleted
  • companyPositionStateUpdated
  • companyNotePosted
  • companyNoteUpdated
  • companyNoteDeleted

Request

curl -X POST https://api.breezy.hr/v3/company/{company_id}/webhook_endpoints \
  -H "Authorization: {your_api_token}" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/webhook",
    "description": "Production webhook",
    "events": ["candidateAdded", "candidateStatusUpdated"]
  }'

Response

{
    "id" : "abc123",
    "url" : "https://example.com/webhook",
    "description" : "Production webhook",
    "events" : ["candidateAdded", "candidateStatusUpdated"],
    "status" : "active",
    "enabled" : true,
    "stats" : {
        "successful_deliveries" : 0,
        "failed_deliveries" : 0,
        "last_delivery_at" : null
    },
    "secret" : "whsec_abc123def456...",
    "created_at" : "2025-01-01T00:00:00Z",
    "updated_at" : "2025-01-01T00:00:00Z"
}

Important

Save the secret value immediately. It is only returned on creation and cannot be retrieved later. You will need it to verify webhook signatures.

Errors

StatusErrorDescription
400Invalid URL formatThe URL is not valid
400URL must use HTTPS protocolOnly HTTPS URLs are allowed
400Events must be an arrayThe events field must be an array
400At least one event must be specifiedEvents array cannot be empty
400Invalid eventsOne or more event types are not valid
429Quota exceededMaximum of 10 endpoints per owner

Update Webhook Endpoint

Updates an existing webhook endpoint.

PUT /v3/company/{company_id}/webhook_endpoint/{endpoint_id}

Request Body

FieldTypeRequiredDescription
urlStringNoHTTPS URL for webhook delivery
descriptionStringNoDescription of the endpoint
eventsArrayNoEvent types to subscribe to
enabledBooleanNoWhether the endpoint is enabled

Request

curl -X PUT https://api.breezy.hr/v3/company/{company_id}/webhook_endpoint/{endpoint_id} \
  -H "Authorization: {your_api_token}" \
  -H "Content-Type: application/json" \
  -d '{
    "events": ["candidateAdded", "candidateDeleted", "candidateStatusUpdated"],
    "enabled": true
  }'

Response

Returns the updated endpoint object.

{
    "id" : "abc123",
    "url" : "https://example.com/webhook",
    "description" : "Production webhook",
    "events" : ["candidateAdded", "candidateDeleted", "candidateStatusUpdated"],
    "status" : "active",
    "enabled" : true,
    "stats" : {
        "successful_deliveries" : 42,
        "failed_deliveries" : 1,
        "last_delivery_at" : "2025-01-15T10:30:00Z"
    },
    "secret_prefix" : "whsec_",
    "created_at" : "2025-01-01T00:00:00Z",
    "updated_at" : "2025-01-20T14:00:00Z"
}

Delete Webhook Endpoint

Deletes a webhook endpoint.

DELETE /v3/company/{company_id}/webhook_endpoint/{endpoint_id}

Request

curl -X DELETE https://api.breezy.hr/v3/company/{company_id}/webhook_endpoint/{endpoint_id} \
  -H "Authorization: {your_api_token}"

Response

{
    "success" : true
}

Pause Webhook Endpoint

Pauses webhook delivery to an endpoint. The endpoint will not receive webhooks while paused.

POST /v3/company/{company_id}/webhook_endpoint/{endpoint_id}/pause

Request

curl -X POST https://api.breezy.hr/v3/company/{company_id}/webhook_endpoint/{endpoint_id}/pause \
  -H "Authorization: {your_api_token}"

Response

Returns the updated endpoint object with status: "paused".

{
    "id" : "abc123",
    "url" : "https://example.com/webhook",
    "status" : "paused",
    "enabled" : true,
    ...
}

Resume Webhook Endpoint

Resumes webhook delivery to a paused endpoint.

POST /v3/company/{company_id}/webhook_endpoint/{endpoint_id}/resume

Request

curl -X POST https://api.breezy.hr/v3/company/{company_id}/webhook_endpoint/{endpoint_id}/resume \
  -H "Authorization: {your_api_token}"

Response

Returns the updated endpoint object with status: "active".

{
    "id" : "abc123",
    "url" : "https://example.com/webhook",
    "status" : "active",
    "enabled" : true,
    ...
}

Quotas and Limits

LimitValue
Endpoints per customer10
Endpoints per partner10 (separate quota)
URL protocolHTTPS only
Delivery timeout30 seconds
Retry attempts10 (with exponential backoff)