Qubit API v1

Contacts, conversations & leads

Read and create the CRM side.

The CRM half of the API: the people the business talks to, the threads with them, and the deals in progress. Reads are paginated and filterable; writes are idempotent.

Contacts

A contact is a person, with one or more identities - a WhatsApp number, an email address, a Telegram id, an Instagram username. Send to any of them and the platform resolves the contact; create a contact with a phone and an email and both become identities.

Request
Try it - send it and see the response

Sends this request from your browser and shows what the API answered. Nothing is stored here.

search matches name, email and phone; lifecycle_stage is one of lead, prospect, customer, churned; tag filters by a tag name; channel by the identities a contact has; created_after by date.

Request
Try it - send it and see the response

This is a real request. A test key still acts on its workspace: a send goes out on the connection named in the body. Point it at your own number.

Creating a contact whose phone, email or identity already belongs to another contact is refused with 422 validation_failed and the owning contact's id in details.contact_id - use that id. A handle is never silently moved between contacts: that would move its conversation history, and it is a decision the business makes with a merge, not one an API call makes by accident.

GET /contacts/{id} returns the full record with identities, tags and the custom fields the business has defined.

Conversations

One conversation per contact per channel connection. Your integration reads them to show a customer's history in your own system, or to find the thread a message belongs to.

Request
Try it - send it and see the response

Sends this request from your browser and shows what the API answered. Nothing is stored here.

status is open, pending, resolved or closed; contact_id and connection_id narrow the list. Messages in a conversation, newest first, cursor paginated:

Request
Try it - send it and see the response

Sends this request from your browser and shows what the API answered. Nothing is stored here.

The API does not assign, resolve or tag conversations - those are agents' actions in the inbox. Sending a message into one is the API's part.

Leads

A lead is a deal in a pipeline, attached to a contact. A web form, a marketplace enquiry or a booking engine creates one and the sales team picks it up in the dashboard, with the automation engine free to assign it, notify someone, or send a first template.

Request
Try it - send it and see the response

This is a real request. A test key still acts on its workspace: a send goes out on the connection named in the body. Point it at your own number.

pipeline_id and stage_id are optional: leave them out and the lead lands in the default pipeline's first stage. value is whole currency units. The answer is 201 with the lead, and a lead.created webhook fires for every subscriber.

What is read-only

Pipelines, stages, tags and custom field definitions are managed in the dashboard and read through the resources they appear on. Reading GET /leads needs leads.read; the create needs leads.create, and the two are separate so a form that only submits leads cannot read the pipeline.

Base URL https://communication-api.artofluminaire.com Every response carries X-Request-ID; quote it when you write to support.