Connections Policy
Updated: 1 August 2026
What can be connected to and from b1z, and the rules. If you are building against the API, this is the page to read first.
Four kinds of connection
- API (api.b1z.ai) — read and write to the core: leads, appointments, customers, documents.
- Outbound webhooks — we call your address when something happens.
- Inbound webhooks (wh.b1z.ai) — external lead sources write to us.
- Import connectors — Airtable, HubSpot, Pipedrive, monday, Firebase, Google Sheets. Read-only on their side.
Keys
- A key is shown once. We store only a hash of it — if you lose it we issue a new one; there is no way to recover it.
- A key belongs to an account, not to a person. When an employee leaves, rotate the key.
- Every key has narrow scopes. A key that only reads leads should not carry write access to invoices.
- A key does not go in client-side code, in a URL, or in a public repository. A key that is exposed will be revoked and you will be told.
Rate
The limit is per key, not per IP address. Exceeding it returns a 429 with a Retry-After header — honour it. A retry loop with no wait counts as deliberate load and may get the key suspended.
Outbound webhooks
- Every delivery is signed —
X-B1z-Signature: t=…,v1=…. You must verify the signature and reject a request whose timestamp is more than 5 minutes old; otherwise your endpoint is open to anyone who knows it. - Our answer to a failed attempt is a retry with growing backoff. After consecutive failures the destination is disabled and an alert is sent.
- The destination must be a public address. Internal addresses and cloud metadata endpoints are blocked deliberately.
- A delivery may arrive twice. Your handler must be idempotent — keyed on the event id.
Import connectors
- We ask for a read-only token. Do not give us a key that can delete things on your side.
- The token is stored encrypted and is never returned by an API call — not even to you.
- A daily contract check spots changes at the provider: a new field is picked up on its own, a field that disappears drops the connector into a limited state with an alert, and a real break stops the sync rather than bombarding them with requests.
- A connector can be disconnected at any time. Data already imported stays with you.
What you may not do with a connection
- Pull the whole database in order to build a competing product from it.
- Pass customer data to a third party without a legal basis for doing so.
- Send messages through the API to anyone who has not consented — see the terms of use.
- Work around the rate limit by using several keys in parallel.
API changes
/v1 is stable. Additions (a new field, a new endpoint) may arrive at any time, so your code must ignore fields it does not recognise. A breaking change gets a new version, and the old one keeps working for at least six months, with advance notice to anyone using it.
Developer support
Documentation and Swagger: sdk.b1z.ai. A question it does not answer: dev@b1z.ai.