REST API reference
Every endpoint on the QuiQSol public API at api.quiqsol.com/public/v1, with fields, examples and responses.
On this page
Base URL: https://api.quiqsol.com/public/v1. Every request needs Authorization: Bearer <your-api-key> (how to get one). Bodies are JSON.
GET /contacts
Lists contacts in your workspace.
| Query | Default | Notes |
|---|---|---|
limit | 25 | Up to 100 |
curl "https://api.quiqsol.com/public/v1/contacts?limit=50" \
-H "Authorization: Bearer <your-api-key>"
GET /tickets
Lists Help Desk tickets. Same limit parameter, default 25, up to 100.
POST /leads
Creates a CRM lead, for example from your website's own form.
| Field | Required |
|---|---|
firstName | Yes |
lastName | Yes |
email | No |
phone | No |
companyName | No |
source | No |
customFields | No, an object of your custom field keys |
curl -X POST https://api.quiqsol.com/public/v1/leads \
-H "Authorization: Bearer <your-api-key>" \
-H "Content-Type: application/json" \
-d '{"firstName":"Ada","lastName":"Obi","email":"ada@example.com","source":"Website"}'
POST /contacts
Creates or updates a contact from another system. Send the same externalId again and the same contact is updated instead of duplicated. This endpoint never merges on email or phone alone, because a wrong match between two systems costs more than a duplicate.
| Field | Required |
|---|---|
externalId | Yes, your system's ID |
firstName | Yes |
lastName | Yes |
email | No |
phone | No |
strongIdentifier | No |
context | No, fields shown on the contact's Business Context Panel |
POST /companies
Creates or updates a company the same way, keyed on externalId, with a name.
POST /contacts/pending-action
Marks that a customer started something they have not finished, such as a cart or an application. An Automation journey with the pending action started trigger can wait, check the action is still open, and send a reminder.
POST /contacts/pending-action/complete
Marks that action finished, so a waiting reminder does not send.
What do errors look like?
A JSON body with an error message. 400 for a missing or invalid field, 401 for a bad key, 429 when you pass the rate limit.
Is there an OpenAPI file?
Yes, at quiqsol.com/openapi.json. It covers GET /contacts, GET /tickets and POST /leads; the sync endpoints above are documented on this page.