Skip to the content
Menu: Setup

Setup

Building portals from a sentence.

POST/v1/setup/plan

Plan a portal from one sentence

planSetupportals:readheavy: 20/min per keyIdempotency-Key

Magic Setup's planner: what the avatar should do, in plain words, in; the template, a name and who it is for out. Writes nothing: POST /portals with the template builds it. A duo template is planned only where the duo builder is open for the organisation. Each plan spends one of the organisation's daily AI helper uses (429 rate_limited, details.allowance: "ai_daily", when they are used up).

Body

  • goalstringrequired

    1-600 characters

Returns

200 The plan. data is SetupPlan.

Fields of data
  • templatestringrequired

    A key from GET /portals/templates, or custom when nothing there fits.

  • fit"exact" | "close" | "none"required

    How well the template fits; none goes with custom.

  • customKind"service" | "tutor" | "roleplay" | "assessor"

    For custom: what the avatar mostly does.

  • templateLabelstringrequired
  • portalNamestringrequired
  • audiencestringrequired

    Who the avatar talks to, in plain words.

  • orgType"company" | "school" | "tutoring" | "individual" | "family" | "other"required
  • summarystringrequired

Errors

invalid_requestunauthorizedforbiddenupgrade_requiredidempotency_conflictidempotency_in_progressrate_limitedserver_error

Request

curl -X POST "https://app.zentiqai.com/v1/setup/plan" \
  -H "Authorization: Bearer $ZENTIQ_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "goal": "Train my sales team to handle price objections"
}'
Example answer
Response
{
  "data": {
    "template": "…",
    "fit": "exact",
    "customKind": "service",
    "templateLabel": "…",
    "portalName": "…",
    "audience": "…"
  },
  "error": null,
  "requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d"
}