Setup
Building portals from a sentence.
/v1/setup/planPlan a portal from one sentence
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
goalstringrequired1-600 characters
Returns
200 The plan. data is SetupPlan.
Fields of data
templatestringrequiredA key from
GET /portals/templates, orcustomwhen nothing there fits.fit"exact" | "close" | "none"requiredHow well the template fits;
nonegoes withcustom.customKind"service" | "tutor" | "roleplay" | "assessor"For
custom: what the avatar mostly does.templateLabelstringrequiredportalNamestringrequiredaudiencestringrequiredWho the avatar talks to, in plain words.
orgType"company" | "school" | "tutoring" | "individual" | "family" | "other"requiredsummarystringrequired
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"
}'import { Zentiq } from "@zentiq/node";
const zentiq = new Zentiq({ apiKey: process.env.ZENTIQ_API_KEY });
const result = await zentiq.planSetup({
goal: "Train my sales team to handle price objections",
});import os
from zentiq import Zentiq
zentiq = Zentiq(api_key=os.environ["ZENTIQ_API_KEY"])
result = zentiq.plan_setup({
"goal": "Train my sales team to handle price objections",
})Example answer
{
"data": {
"template": "…",
"fit": "exact",
"customKind": "service",
"templateLabel": "…",
"portalName": "…",
"audience": "…"
},
"error": null,
"requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d"
}