One assistant turn. Nothing is saved.
invalid_body: message must be 1-2000 characters; unknown keys are refused.not_available (flag), not_manager (Manage Server is checked live), or vote_required
(isVoteRequired(error) - show a vote button from error.voteUrl).rate_limited with retryAfterSeconds (and a Retry-After header): the daily cap per server
(Free 15 / Premium 50 / Premium Plus 150) or per user (100 across all servers) is used up.assistant_paused (today's budget is spent - back tomorrow), assistant_unavailable, or
limits_unavailable. Show as "try again later".data.notices tells the dashboard what to show besides the reply: unsure (no sourced answer - link
data.supportUrl), off_topic, rephrase, more_areas (it handled four features and can continue),
cut (more changes than one message takes).
OptionalconversationWhat the user did with a proposal: applied, edited (with the field keys they changed before applying)
or dismissed. Fire-and-forget - never block the UI on it. Accepted once per proposal, only for the user
and server it was made for; what was actually saved is read by the server, not taken from this call.
404 not_found (unknown or expired - proposals live an hour), 409 already_recorded, 429 rate_limited.
Optionaledited"Share this chat with Noti": the user CHOSE to send this conversation for review, behind a confirm. Send
what the panel showed. Behind the assistantShareChat launch flag. Kept 30 days, staff-only.
invalid_body: at most 40 turns, 2000 characters a turn, 32 KB in all, note up to 500.not_available (a flag is off) or not_manager.not_found: the chat expired - a chat can be shared for an hour after its last message.rate_limited: 5 shares a user a day.Optionalnote?: string
The AI setup assistant. A server admin asks a question ("how do drops work?") or for a setup ("notify #live when xqc goes live on Kick, ping @Live"); the answer is text, and for a setup, proposal cards. The assistant NEVER writes anything: the dashboard shows each proposal with the real channel and role pickers pre-filled, and Apply calls the matching existing method (e.g.
guildPlatform.createGuildStreamer) - the same route the normal page uses, with the same checks.Apply maps
(area, op)to a fixed method in the dashboard. A proposal carries no method name and no arguments to call, andguildIdalways comes from the page URL, never from a proposal.Behind the
aiAssistantlaunch flag, and a top.gg vote on its ownvoteToUseAssistantflag (Premium Plus skips it). The conversation is held by the SERVER: sendconversationIdfrom the previous answer, never past messages. Errors carry acodeto localize - seeAssistantErrorCode.