Quincer Docs Home Support Start free

Connect

API & webhooks

Quincer is API-first. Everything you can do in the dashboard — take over a live chat, update a lead, read the activity log — you can do via REST. This page is the map. For request/response previews against your real workspace, open Developer APIs inside the dashboard.

Authentication

All API requests use a workspace developer key. Generate one under Dashboard → Developers → API Keys, choose scopes, and pass it as a Bearer token:

Authorization: Bearer cw_dev_<your-key>

Two kinds of credentials exist: widget keys (cw_live_) are embedded in the page script and only identify a widget to the public chat endpoint. Developer keys (cw_dev_) are scoped to an organization, carry explicit scopes like leads:read or conversations:takeover, and must stay server-side.

Base URL

https://chat.quincer.com

External agent (takeover) endpoints

Use these to let an outside AI (OpenClaw, a custom agent, or your own backend) take over a live conversation, reply as a human, and hand back to the Quincer AI. These are how the OpenClaw integration works under the hood.

MethodPathScopePurpose
GET/api/v1/conversations/:idconversations:readFetch full transcript + metadata.
POST/api/v1/conversations/:id/takeoverconversations:takeoverClaim a conversation — AI stops responding.
POST/api/v1/conversations/:id/replyconversations:replyPost a human-agent message (auto-translated to visitor's language).
POST/api/v1/conversations/:id/handbackconversations:handbackRelease the takeover — AI resumes.

Leads & activities

MethodPathScopePurpose
GET/api/v1/leadsleads:readList leads. Filters: widgetId, stage, temperature, assignedTo, updatedSince.
GET/api/v1/leads/:idleads:readFull lead record (BANT, tags, assigned task history).
PATCH/api/v1/leads/:idleads:writeUpdate fields: stage, temperature, tags, score, assignment, contact info.
GET/api/v1/activitiestasks:readAgent task log. Filters: leadId, status, type, updatedSince.
GET/api/v1/activities/:idtasks:readFull activity record with execution + result data.

Rate limits

Developer keys are rate-limited per key: 100 reads/min and 30 writes/min. Over the limit returns 429 with an error message indicating remaining requests.

Webhooks

Subscribe to events under Dashboard → Settings → Webhooks. Quincer signs every payload with HMAC-SHA256 using the secret you set. Requests include X-Quincer-Signature (sha256=...), X-Quincer-Event, and X-Quincer-Timestamp.

Events

EventFires when
conversation.message_receivedVisitor sends any message. Payload includes status (active or human_active) so subscribers know whether an external agent is driving.
lead.createdA new lead record is captured.
lead.updatedAny lead field changes.
lead.stage_changedLead moves between pipeline stages (includes previousStage).
task.createdAn agent task (follow-up, qualification, CRM sync, etc.) is scheduled.
task.completedA task finishes successfully.
email.sentA lead email goes out.
email.draft_createdAn AI-drafted email is ready for review.

Verifying signatures

const signature = req.headers["x-quincer-signature"];
const expected = "sha256=" + crypto
  .createHmac("sha256", process.env.QUINCER_WEBHOOK_SECRET)
  .update(req.rawBody)
  .digest("hex");
if (signature !== expected) {
  return res.status(401).send("invalid signature");
}

OpenClaw integration

Quincer ships a first-class OpenClaw skill so any OpenClaw agent can take over Quincer conversations, query leads, and log activity. Setup takes about a minute:

  1. In Quincer, open Dashboard → Integrations → OpenClaw and click Connect OpenClaw. This creates a dedicated "OpenClaw" team member in your workspace and issues an API token bound to it.
  2. Download SKILL.md and drop it in ~/.openclaw/workspace/skills/quincer/.
  3. Add the token to ~/.openclaw/openclaw.json under skills.entries.quincer.env.QUINCER_API_KEY.
  4. Restart the OpenClaw gateway. The quincer tool is now available.

OpenClaw actions (takeovers, replies) appear in your Quincer inbox under the OpenClaw team member, with their own avatar and audit trail — not as a generic "external agent."