Biklo for developersTESTsandbox-api.biklo.comchange

14 September 2026 webhooksnew-endpoint

Two additions aimed at the same thing: finding out an integration is misconfigured while you are building it, rather than when a real order arrives.

POST /v1/webhooks/{id}/test#

curl -X POST https://sandbox-api.biklo.com/v1/webhooks/1/test -H "Authorization: Bearer $KEY"

Queues a test.ping to that endpoint. Every other event needs something to happen first, which made "is my receiver wired up correctly?" a question you could only answer by creating a real order.

It travels the same path as a real event — same queue, same headers, same HMAC signature — so a delivery that arrives and verifies here proves the real ones will. It is sent regardless of what the endpoint subscribes to, because an integrator testing a receiver has not necessarily decided which events they want yet; test.ping is not itself subscribable, so you will never get one you did not ask for.

202 means queued, not delivered. The outcome appears on GET /v1/webhooks/{id}/deliveries a moment later. A switched-off endpoint is refused with 409 endpoint_disabled rather than silently accepting.

The webhooks guide now has a Testing before you go live section, including the three things worth deliberately breaking before you trust your receiver: a wrong secret, a 500, and a slow reply.

GET /v1/me now tells you whether you can ship#

{
  "shipping_address": {
    "ready": false,
    "reason": "no_address",
    "message": "This account has no shipping address, so orders have nowhere to ship from. Create one with POST /v1/addresses.",
    "default_address": null,
    "details_url": "/v1/addresses"
  }
}

/v1/me is the first call every integration makes, and this is the failure that is hardest to see coming: products publish perfectly well without an address, look correct in the dashboard, and then the first real order has nowhere to ship from.

Deliberately not scope-gated, unlike the payout summary next to it. The integration that most needs this is the catalog-only one — it publishes, sees nothing wrong, and has no orders endpoint to discover the problem through.

Check shipping_address.ready on startup. If it is false, POST /v1/addresses is one call away.