Documentation / Set-up guides / For developers
API keys and webhooks
On this page
This guide is for
Other systems reach this workspace through its API: service keys that carry scopes, a REST API under /api/v1, and signed events. The page opens for the workspace's owner with an administrator role.
This is the hosted workspace API. Send service keys with Authorization: Bearer. Its two business events are crm.deal.stage_changed and quote.sent. Failed deliveries have no twelve-hour automatic retry loop. An admin can replay rejected, expired or settled-not-sent deliveries after checking the receiver; unknown outcomes require reconciliation before retrying.
- Open Admin → Integrations → Integrations. The page shows the Workspace URL every call goes to, with links to the quickstart, the agent guide and the changelog.
- Create a service key. Give it a name, tick the scopes, tick the box that authorises access to the workspace's records of those kinds, and press Create key. The secret is shown once: save it in your integration's secret store before you dismiss it.
- Check the first call. Paste a key that has customers:read and press Look up customers.
- Receive signed events. Choose the key, the event and the Receiver URL, and press Create subscription. Each subscription has a signing secret of its own.
- Press Send synthetic test. It sends a signed test event that carries no business record: the receiver should verify it and acknowledge it, and create nothing.
- The scopes offered: crm:read, crm:write, customers:read, orders:read, orders:write and documents:read. A scope whose module is off is refused.
- The events: a deal's stage changed, and a quotation sent.
- Delivery history shows the latest 100 deliveries, with Retry delivery. Rotate replaces a key's secret; Revoke stops the key.
- The contract your workspace runs is at /api/v1/openapi.json on the workspace's own address.
For every other system, and for n8n, Make or Power Automate, the desk has an API of its own: keys that carry scopes, a REST API under /api/v1, and signed webhooks.
This is the API for your own deployment. It accepts Authorization: Bearer or X-API-Key, offers the business webhook events listed below, and automatically retries failed deliveries up to six times, with a final retry interval of twelve hours. Hosted workspaces use a separate API contract.
Making a key
- Open Admin → Integrations → Connections → Desk open API.
- Under API keys, press New key. In What uses it, name the system that will hold the key, and tick the scopes it may use: a key carries its scopes and nothing else.
- Press Make the key and copy it at once. It is shown this once and kept only as a hash.
- Send it with every call, in the header Authorization: Bearer or X-API-Key.
- The reference — every address, its scope and its parameters — is at /api/erp/open-api/docs on your desk, for anyone signed in.
- Every call is logged with its key. Revoke stops a key at once.
Webhooks
- Under Webhooks, press New webhook. Enter Their address, which must start with https://, tick the events it receives, and press Add the webhook.
- Copy the signing secret at once. It is shown this once.
- Check every delivery on the receiving side. The header X-Desk-Signature carries t, the time, and v1, the HMAC-SHA256 of the time, a full stop and the raw body, made with the signing secret.
- The events: order.created, order.updated, quote.sent, proforma.sent, invoice.sent, purchase_order.updated and payment.received.
- A failed delivery has up to six automatic retries after the first attempt, with intervals of one minute, five minutes, thirty minutes, two hours, six hours and twelve hours. Deliveries shows each delivery’s latest result and attempt count, with Send again.
- Pause and Resume stop and restart a webhook without losing it.
