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 seven business webhook events, and retries failed deliveries for 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 delivery that fails is tried again for twelve hours. Deliveries lists each one, with Send again.
- Pause and Resume stop and restart a webhook without losing it.
