Skip to main content
POST
Required scope: write

Request body

AnswerRequest
object
Merge-field values for the macro and its tool call.
object
What your systems know about the subject. true asserts predicate(subject); any other scalar asserts predicate(subject, value) so thresholds work ({'order_amount': 620} -> order_amount(T-1, 620)); false and null assert nothing, which is what produces an honest refusal rather than a negative claim the engine never verified.
boolean
Return the full decision envelope alongside the summary.
string
Reasoning profile: fast | accurate | safe. Defaults to safe.
string
The customer’s message. Optional: facts decide the outcome, so a ticket with no prose still answers.
RecursiveChatRuleInput[]
Inline policy. Omit to use the rules stored for this org.
string
required
What this decision is ABOUT — a ticket id, order id, or case id. First class because the engine binds authorization to it.

Response

AnswerResponse
boolean
required
True when this can ship untouched. False means read requires_human.
object
AnswerEvidence
required
AnswerGap[]
What to go and find out. Each entry, if confirmed, may change the answer.
object
string[]
Why a human is needed. Empty means none is.
string
required
object
Emitted, NOT executed — the engine never holds your credentials. Run it against your own systems.
string
required
approved | denied | refused.

Status codes

Last modified on August 31, 2026