Skip to the content
Menu: Overview

Zentiq API

Zentiq's avatars are people your users talk to live, face to face, by voice or by text. The REST API lets your own systems build and run everything the Zentiq console does: the avatars, the portals around them, the people who use them, their results, and the leads and requests your website visitors leave.

  • Base address: https://app.zentiqai.com/v1
  • Authentication: an organisation API key, Authorization: Bearer zq_live_…, sent from your server only.
  • Format: JSON in and out. A success is { "data": …, "error": null, "requestId": … }; an error is { "error": { "code", "message" } }.
  • Contract: 2026-10-01. Every key is pinned to a dated contract; see Versions.
Shell
curl https://app.zentiqai.com/v1/me -H "Authorization: Bearer $ZENTIQ_API_KEY"

What you can build#

You want toStart here
Put a support avatar on your website, with requests going to your teamAn avatar on your website
Add the widget to Shopify, Wix, Squarespace, WordPress, Webflow or any other websiteInstall the widget
Train a sales team and send their results to your HR or learning systemSales training and results
Screen job applicants from your applicant tracking systemScreening from your ATS
Give the students signed in to your app a tutor, with guardian consentA tutor in your app
Let people practise with two avatars at onceA duo role-play
Send website leads, booking requests and hand-offs to your CRMWebsite leads to your CRM
Answer customers in their own languageA multilingual assistant
Show an avatar inside your own app, and decide what it saysLive sessions, Bring your own brain

How it fits together#

  1. Your server holds the key. It calls the API: it builds personas and portals, adds people, starts live sessions, and reads results. A key never goes to a browser or into an app people download.
  2. The browser gets a token, never the key. To show a live avatar in your page, your server starts a session and hands the browser its short-lived token; the browser joins with the browser SDK.
  3. Zentiq tells you what happened. Webhooks announce leads, results, screened candidates and more. They are signals: your server fetches the details with the API, where the privacy rules apply to every request.

Quickstart#

A live avatar in your page in three steps. The full quickstart has every detail.

  1. Make a key. In the Zentiq console open More → API Keys and choose Create a key. It is shown once: keep it on your server.
  2. Start a session on your server with a persona you made in the console (or with the API):

    server.ts
    async function startSession(userId: string) {
      const token = await zentiq.createSessionToken(
        { personaId: process.env.ZENTIQ_PERSONA_ID ?? "", identity: userId },
        { idempotencyKey: `start-${userId}-${Date.now()}` },
      );
      // { sessionId, sessionToken, url, room, persona, disclosure, cc }: hand all of it to the browser.
      return token;
    }
  3. Join it in the browser, show the AI disclosure, and end the session when the person leaves:

    browser.ts
    import { joinSession, type SessionToken } from "@zentiq/client";
    
    const token = (await fetch("/zentiq/session", { method: "POST" }).then((r) => r.json())) as SessionToken;
    
    // People must know they are talking to an AI: show the persona's words for the whole session.
    const disclosure = document.querySelector<HTMLElement>("#disclosure");
    if (disclosure && token.disclosure?.required) disclosure.textContent = token.disclosure.text;
    
    const session = await joinSession(token, {
      video: document.querySelector<HTMLVideoElement>("#avatar")!,
      onTranscript: (t) => {
        if (t.final) console.log(t.role === "user" ? "You" : t.speaker ?? token.persona.name, t.text);
      },
      onSpeaking: (who) => document.body.setAttribute("data-speaking", who),
    });

Where next#