Skip to main content
This is a pre-release implementation reference. The official Biqli app is not yet installable from Make’s public app directory and must not be treated as supported until the documented end-to-end smoke tests pass.
The official Biqli Make integration uses an OAuth 2.0 authorization-code connection, dedicated attached webhooks, instant triggers, and workspace-scoped action modules. Each Make connection is bound to one Biqli workspace.
This page documents the Biqli-managed client and endpoints used by the official Make app. To connect your own product directly, create a self-service OAuth app and request only the granular scopes it needs.

Connection flow

When you create a Biqli connection in Make, Make redirects you to Biqli. Sign in, select one workspace, and approve the requested permissions. Biqli then returns you to Make through the exact registered callback URL. The authorization request includes: The user must own the selected workspace or have the workspace permissions required by the requested scopes. Workspace roles, product entitlements, quotas, and resource ownership continue to apply after OAuth approval.

Connect from Make

Authorized pre-release testers will connect the app from a Make scenario:
  1. Add any Biqli module and select Create a connection.
  2. Continue to Biqli, sign in, and select the intended workspace.
  3. Review and approve the requested permissions.
  4. Return to Make and confirm the connection label shows the selected workspace.
  5. Use a separate Make connection when a scenario needs another workspace.
Never paste a Biqli client secret, access token, or refresh token into a module field. The official connection stores and refreshes credentials server-side.

Permissions requested by Make

Token exchange and refresh

Make exchanges the single-use authorization code through a confidential, server-to-server request. The client secret never passes through the browser.
A successful response contains an access token, rotating refresh token, access token lifetime, refresh-family lifetime, and granted scopes. Authorization codes expire after five minutes. Access tokens expire after one hour by default. When the access token expires, Make exchanges the current refresh token:
Every successful refresh returns a new access token and refresh token. Make must replace both stored values. Reusing the previous refresh token revokes the connection and its attached webhook subscriptions.

Test or revoke the connection

Make validates and labels the connection with:
The response identifies the OAuth connection, user, and selected workspace. The official app displays the workspace name in Make’s connection list. Revocation accepts the current access token or refresh token:
Revocation invalidates the connection’s access token and deletes only webhook subscriptions owned by that OAuth connection.

Instant triggers

The planned app will provide these instant triggers: Each module uses a dedicated attached webhook. When you activate a trigger, Make creates a unique receiver URL and registers it with Biqli. When you remove the trigger, Make detaches that exact subscription.

Attach a webhook

Make stores the returned id with its webhook component and uses it when the trigger is detached. Biqli accepts only public HTTP or HTTPS destinations. It rejects private, loopback, link-local, reserved, credential-bearing, and unresolvable targets. A target URL can have only one subscription in a workspace.

Detach a webhook

Detachment is idempotent. Biqli removes the endpoint only when its public ID, workspace, Make receiver type, and creating OAuth connection all match.

Load representative trigger data

Unlike the Zapier REST Hook sample, the Make sample is one canonical event object:
See Webhook event types for every event payload and Delivery attempts and retries for delivery semantics. Treat delivery as at least once and deduplicate by event id.

Action modules

The planned app will expose these workspace-scoped actions: The OAuth connection selects the workspace. Requests never accept an internal workspace database ID. Link IDs outside the connected workspace return 404 without revealing whether the resource exists. Create a Link requires long_url. It returns the complete link under link. A synchronously accepted link returns 201; a link waiting for an asynchronous safety scan returns 202 with status: "pending". Update a Link is a partial update. Omitted fields remain unchanged. Send JSON null only for nullable fields supported by the canonical update contract. Upsert requires external_id and long_url. Biqli updates the workspace link with that external ID when it exists, or creates it when it does not. The response includes operation: "updated" or operation: "created".
Delete a Link uses the public biq_lnk_... ID and runs the same cleanup, activity logging, and link.deleted event behavior as a dashboard deletion.

Conversion actions

Track Lead and Track Sale use Biqli’s canonical attribution, validation, currency, and durable idempotency paths. Conversion tracking must be enabled in the connected workspace. Send a stable Idempotency-Key on every retry. Track Lead also requires a stable eventId. Track Sale requires a stable invoiceId and can also receive eventId. Reusing an idempotency identity with the identical validated payload returns the stored response and sets Idempotency-Replayed: true. Reusing it with different data returns 409 idempotency_conflict.
Amounts use the currency’s integer minor unit. For example, 1299 means $12.99 USD.

Make an API Call

The planned app includes one universal Make an API Call module. It accepts only paths relative to https://biq.li; it cannot send the OAuth token to another host. The pre-release module allowlists /api/v1/oauth/me and the /api/v1/integrations/make/* namespace, rejects parent-directory segments, and still enforces the connection’s OAuth scopes and workspace permissions.

Errors

OAuth errors contain error and error_description. Workspace API errors contain error.code, error.message, and request_id. Validation details are included when available.

Troubleshooting

When contacting support, include the request ID and UTC time. Never send an access token, refresh token, authorization code, client secret, or full Make webhook URL.