Couplr Couplr developers
API v1 · API reference · explained by Flip

Webhook subscriptions

Add, change and remove the destinations Couplr sends events to.

View Markdown

Base URL: https://couplrfsm.com/api/v1. Conventions shared by every endpoint (examples, ids, dates, money) are on the API reference page. Errors, pagination and idempotency are in Errors, limits and retries.

List webhook subscriptions#

GET /api/v1/webhook-subscriptions · requires the webhooks:manage ability

Every outbound webhook destination of the company, including ones added on the Integrations page. Not paginated.

Example request

curl "https://couplrfsm.com/api/v1/webhook-subscriptions" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example response (200)

{
    "data": [
        {
            "id": 14,
            "url": "https://example.com/couplr-events",
            "description": "Accounting sync",
            "events": [
                "invoice.paid",
                "job.completed"
            ],
            "active": true,
            "disabled_reason": null,
            "last_delivery_at": null,
            "created_at": "2026-11-14T15:10:00+00:00"
        }
    ]
}

Errors

Status When
401 No key (api_key_missing), the key is unknown or revoked (api_key_invalid), the key had an end date that has passed (api_key_expired), or the key belongs to a private trial sandbox whose access window has ended (sandbox_expired).
403 The key lacks the ability this endpoint needs (ability_missing), no admin user is left to act for the key (no_acting_admin), or the company's account is not yet verified.
429 Too many requests (rate_limited). Wait Retry-After seconds.

Create a webhook subscription#

POST /api/v1/webhook-subscriptions · requires the webhooks:manage ability · accepts Idempotency-Key

Couplr will POST each chosen event to the URL. The response includes the signing secret, which is shown only this once: store it and use it to verify X-Hvacpro-Signature on every delivery.

The subscription is tied to the API key that created it. Revoking that key turns the subscription off (active: false, disabled_reason: "Creating API key revoked"), and while the key is expired nothing is delivered.

Headers

Name Type Required Description
Idempotency-Key string No Makes a retry of this request safe. See "Retries and idempotency".

Request body (application/json)

Fields not listed are ignored.

Field Type Required Description
url string Yes Must start with https:// and use a public hostname.
description string or null No
events array of strings Yes Event names from the outbound webhook event list, or * for every event.
active boolean No

Example request

curl -X POST "https://couplrfsm.com/api/v1/webhook-subscriptions" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: YOUR_UNIQUE_KEY" \
  -d '{"url":"https://example.com/couplr-events","events":["invoice.paid","job.completed"],"description":"Accounting sync"}'

Example response (201)

{
    "data": {
        "id": 14,
        "url": "https://example.com/couplr-events",
        "description": "Accounting sync",
        "events": [
            "invoice.paid",
            "job.completed"
        ],
        "active": true,
        "disabled_reason": null,
        "last_delivery_at": null,
        "created_at": "2026-11-14T15:10:00+00:00",
        "secret": "YOUR_SIGNING_SECRET"
    }
}

Errors

Status When
401 No key (api_key_missing), the key is unknown or revoked (api_key_invalid), the key had an end date that has passed (api_key_expired), or the key belongs to a private trial sandbox whose access window has ended (sandbox_expired).
403 The key lacks the ability this endpoint needs (ability_missing), no admin user is left to act for the key (no_acting_admin), or the company's account is not yet verified.
422 A parameter or field is invalid (validation_failed). errors maps each field to its messages.
429 Too many requests (rate_limited). Wait Retry-After seconds.

Update a webhook subscription#

PATCH /api/v1/webhook-subscriptions/{id} · requires the webhooks:manage ability · accepts Idempotency-Key

Change the URL, the events or the description, or turn it off and on. Turning one back on clears its failure count.

Path parameters

Name Type Required Description
id integer Yes

Headers

Name Type Required Description
Idempotency-Key string No Makes a retry of this request safe. See "Retries and idempotency".

Request body (application/json)

Fields not listed are ignored.

Field Type Required Description
url string No Must start with https:// and use a public hostname.
description string or null No
events array of strings No Event names from the outbound webhook event list, or * for every event.
active boolean No

Example request

curl -X PATCH "https://couplrfsm.com/api/v1/webhook-subscriptions/1842" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: YOUR_UNIQUE_KEY" \
  -d '{"active":false}'

Example response (200)

{
    "data": {
        "id": 14,
        "url": "https://example.com/couplr-events",
        "description": "Accounting sync",
        "events": [
            "invoice.paid",
            "job.completed"
        ],
        "active": true,
        "disabled_reason": null,
        "last_delivery_at": null,
        "created_at": "2026-11-14T15:10:00+00:00"
    }
}

Errors

Status When
401 No key (api_key_missing), the key is unknown or revoked (api_key_invalid), the key had an end date that has passed (api_key_expired), or the key belongs to a private trial sandbox whose access window has ended (sandbox_expired).
403 The key lacks the ability this endpoint needs (ability_missing), no admin user is left to act for the key (no_acting_admin), or the company's account is not yet verified.
404 No such record in this company (not_found).
422 A parameter or field is invalid (validation_failed). errors maps each field to its messages.
429 Too many requests (rate_limited). Wait Retry-After seconds.

Delete a webhook subscription#

DELETE /api/v1/webhook-subscriptions/{id} · requires the webhooks:manage ability

Stops deliveries and removes the subscription and its delivery history.

Path parameters

Name Type Required Description
id integer Yes

Example request

curl -X DELETE "https://couplrfsm.com/api/v1/webhook-subscriptions/1842" \
  -H "Authorization: Bearer YOUR_API_KEY"

Errors

Status When
401 No key (api_key_missing), the key is unknown or revoked (api_key_invalid), the key had an end date that has passed (api_key_expired), or the key belongs to a private trial sandbox whose access window has ended (sandbox_expired).
403 The key lacks the ability this endpoint needs (ability_missing), no admin user is left to act for the key (no_acting_admin), or the company's account is not yet verified.
404 No such record in this company (not_found).
429 Too many requests (rate_limited). Wait Retry-After seconds.

WebhookSubscription object#

Field Type Description
id integer
url string
description string or null
events array of strings Event names, or * for every event.
active boolean false when turned off, or turned off automatically after repeated failed deliveries.
disabled_reason string or null
last_delivery_at string (date-time) or null
created_at string (date-time) or null

Copy this page as Markdown

Your browser blocked automatic copying. The complete page is selected below. Press Ctrl+C (Cmd+C on a Mac) to copy it.