FurniOpsDocs
API referenceWebhooks

Create a webhook endpoint

Starts pushing the chosen public events to the URL, signed with Standard Webhooks v1 (webhook-id, webhook-timestamp, webhook-signature). The answer carries the signing secret once. Live-mode endpoints need HTTPS; URLs that resolve to private addresses are refused (422). An organisation has at most 20 endpoints.

POST/v1/webhook-endpoints

Starts pushing the chosen public events to the URL, signed with Standard Webhooks v1 (webhook-id, webhook-timestamp, webhook-signature). The answer carries the signing secret once. Live-mode endpoints need HTTPS; URLs that resolve to private addresses are refused (422). An organisation has at most 20 endpoints.

Authorization

apiKey
AuthorizationBearer <token>

An API key (fo_live_… / fo_test_…) as a bearer token

In: header

Header Parameters

FurniOps-Version?string

Dated API version; pinned per organisation on first use and overridable per request

Value in

  • "2026-10-01"
  • "2026-10-04"
FurniOps-Mode?string

The data the request acts on: test is the organisation's sandbox. An OAuth token picks it (live by default); an API key's mode is fixed, and naming the other one is refused

Value in

  • "live"
  • "test"
Idempotency-Key*string

Unique key for this operation, reused on retries (24 h)

Length1 <= length <= 257
FurniOps-Dry-Run?string

Preview the write and change nothing: true answers the would-be response, explain a Preview (application/vnd.furniops.preview+json)

Value in

  • "true"
  • "explain"

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

A new webhook endpoint

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://example.com/v1/webhook-endpoints" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{    "url": "http://example.com",    "event_types": [      "string"    ]  }'
{  "object": "webhook_endpoint",  "id": "string",  "url": "string",  "description": "string",  "event_types": [    "string"  ],  "filters": {    "catalogues": [      "string"    ],    "sources": [      "string"    ],    "categories": [      "string"    ]  },  "coalesce_seconds": 0,  "payload": "thin",  "api_version": "2026-10-01",  "status": "enabled",  "status_reason": {    "code": "failing",    "message": "string",    "at": "2019-08-24T14:15:22Z"  },  "secrets": [    {      "hint": "string",      "created_at": "2019-08-24T14:15:22Z",      "expires_at": "2019-08-24T14:15:22Z"    }  ],  "livemode": true,  "version": 1,  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z",  "secret": "string"}