Docs · API reference1LCAPI · V1 · Preview
Quickstart

Plug the engine into your stack.

Liquidchat is headless. Your CRM stays in charge: it tells the engine which creators and fans to work, and the engine reports every sale back by webhook. Four calls get you live.

  1. Connect a creator with her voice, her rules and her prices.
  2. Point your inbox at the engine. New fan messages flow in; replies flow out through your tools.
  3. Listen for sale.completed to log revenue in your CRM in real time.
  4. Take over any conversation with one call. Your team gets the chat; the engine steps back.
Authentication. Send your secret key as a bearer token on every request. Test keys start lc_test_ and never touch a live page. Keys are scoped to one agency.
Preview. The API is in private access. Endpoint shapes can change before general availability; your integration contact will tell you before anything moves.
Base URL
https://api.liquidchat.ai/v1
AuthenticatecURL
curl https://api.liquidchat.ai/v1/creators \
  -H "Authorization: Bearer lc_test_51Kd8mQv2TzRw0aLx7Hn"
Creators

Create a creator

POST/v1/creators

Registers a creator page with the engine. The engine learns her voice from recent conversations, then follows the rules you set here exactly. Your AI starts off until you turn it on.

Body

external_idstringRequired

Your CRM’s id for this creator. Used in every event we send you.

platformenumRequired

onlyfans or fansly.

rulesobject

What she never says or does.

never_saystring[]

Words and phrases the engine will never use for her.

price_floor_centsinteger

No PPV is offered below this price.

escalate_onstring[]

Topics handed straight to your team, e.g. meetup, refund.

ai_enabledboolean

Defaults to false. Turn on per creator, per fan or by schedule.

POST/v1/creatorscURL
curl https://api.liquidchat.ai/v1/creators \
  -H "Authorization: Bearer lc_test_…" \
  -H "Content-Type: application/json" \
  -d '{
    "external_id": "crm_creator_07",
    "platform": "onlyfans",
    "rules": {
      "never_say": ["babe", "daddy"],
      "price_floor_cents": 1200,
      "escalate_on": ["meetup", "refund"]
    },
    "ai_enabled": false
  }'
Response 201
{
  "id": "cr_9Lq2xVb7",
  "object": "creator",
  "external_id": "crm_creator_07",
  "voice": { "status": "learning", "eta_minutes": 40 },
  "ai_enabled": false,
  "holdout": { "share": 0.10 },
  "created": "2026-10-22T09:14:03Z"
}
Conversations

Take over a conversation

POST/v1/conversations/{id}/takeover

Hands one conversation to your team, instantly. The engine stops mid-thought, holds any message it had queued, and won’t reply again until you hand it back.

Path

idstringRequired

The conversation id, e.g. cv_….

Body

assigneestring

Your CRM’s id for the team member taking over.

reasonstring

Shown in Monitor and in the audit log.

discard_queuedboolean

Drop the engine’s queued reply instead of showing it to your team as a draft. Defaults to false.

POST/v1/conversations/{id}/takeoverNode
const lc = new Liquidchat(process.env.LIQUIDCHAT_KEY);

await lc.conversations.takeover("cv_3Rk81Zq", {
  assignee: "crm_user_212",
  reason: "VIP fan, handle personally",
});
Response 200
{
  "id": "cv_3Rk81Zq",
  "object": "conversation",
  "handled_by": "human",
  "assignee": "crm_user_212",
  "queued_draft": "give me two minutes, sending it over now",
  "took_over_at": "2026-10-22T23:41:08Z"
}
Webhooks

sale.completed Event

Sent the moment a fan pays for content or tips in a conversation the engine handled. Use it to log revenue in your CRM, pay commissions and reconcile your invoice.

Payload

data.amount_centsinteger

Gross amount the fan paid, before platform fees.

data.kindenum

ppv, tip or bundle.

data.attributionenum

engine when the engine made the sale, holdout when it happened in your team’s control group. Both arrive, so you can compare.

data.fan_segmentenum

new, returning, cold or whale.

Every event is signed. Check the Liquidchat-Signature header with your endpoint secret before you trust the payload.
EVTsale.completed
{
  "id": "evt_7Hc2pW0d",
  "type": "sale.completed",
  "created": "2026-10-22T23:41:06Z",
  "data": {
    "creator": "crm_creator_07",
    "conversation": "cv_3Rk81Zq",
    "amount_cents": 4500,
    "currency": "usd",
    "kind": "bundle",
    "attribution": "engine",
    "fan_segment": "new",
    "messages_to_sale": 3
  }
}
Verify & handleNode
app.post("/webhooks/liquidchat", (req, res) => {
  const event = lc.webhooks.verify(
    req.rawBody, req.headers["liquidchat-signature"], secret
  );
  if (event.type === "sale.completed") crm.logRevenue(event.data);
  res.sendStatus(200);
});
Liquidchat API · Preview · Base URL https://api.liquidchat.ai/v1liquidchat.ai