API reference

Rules

Booking rules simulation

MethodPathSummary
GET/v1/account/rules/catalogFacts the rules can use, rule templates, and plain-language warnings for the draft rules
POST/v1/account/rules/simulate"Try it": run booking rules against described facts or a past call

Facts the rules can use, rule templates, and plain-language warnings for the draft rules#

GET /v1/account/rules/catalog

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Query parameters

NameTypeRequiredDescription
playbookIdstring (pb_… ID)YesID (pb_…)

Response 200

FieldTypeRequiredDescription
factsarray<object>Yes—
facts[].groupenumYesOne of: "collected", "caller_record", "call_context", "availability", "tool".
facts[].keystringYes—
facts[].labelstringYes—
facts[].optionsarray<object>No—
facts[].options[].labelstringYes—
facts[].options[].valuestringYes—
facts[].phrasesobjectNo—
facts[].phrases.falsestringYes—
facts[].phrases.truestringYes—
facts[].typeenumYesOne of: "boolean", "number", "enum", "text".
facts[].unitenumNoOne of: "days", "seconds", "slots", "hour".
rulesarray<object>Yes—
rules[].descriptionstringYes—
rules[].ruleIdstringYes—
rules[].ruleNumberintegerYes—
templatesarray<object>Yes—
templates[].descriptionstringYes—
templates[].idstringYes—
templates[].ruleanyYes—
templates[].titlestringYes—
warningsarray<object>Yes—
warnings[].codestringYes—
warnings[].fixobjectNo—
warnings[].fix.kindstringYes—
warnings[].fix.labelstringYes—
warnings[].messagestringYes—
warnings[].ruleIdstring | nullYes—
warnings[].severityenumYesOne of: "error", "warning".

Errors: 400, 401, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X GET "$ANSWERSTACK_API_URL/v1/account/rules/catalog?playbookId=pb_2ZPh7XbT0v9Ao4iJ3qK1mN8sRgE" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

"Try it": run booking rules against described facts or a past call#

POST /v1/account/rules/simulate

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token). Bearer token: Authorization: Bearer <token> (An API token (ans_pat_ or ans_svc_). Only routes that list a scope here accept one, and only with that scope.).

Request body

application/json, required.

FieldTypeRequiredDescription
callIdstring (call_… ID)NoID (call_…)
factsmapNo—
facts.{key}string | number | boolean | nullNoAny key.
playbookIdstring (pb_… ID)NoID (pb_…)
rulesarray<any>NoUp to 200 items.

Response 200

FieldTypeRequiredDescription
actionany | nullYes—
callRuleFiredstring | nullYes—
factsmapYes—
facts.{key}string | number | boolean | nullNoAny key.
matchedRuleIdstring | nullYes—
outcomestringYes—
perRulearray<object>Yes—
perRule[].descriptionstringYes—
perRule[].matchedbooleanYes—
perRule[].reasonstringYes—
perRule[].ruleIdstringYes—
perRule[].ruleNumberintegerYes—
perRule[].statusenumYesOne of: "matched", "not_matched", "disabled", "not_reached".
warningsarray<object>Yes—
warnings[].codestringYes—
warnings[].fixobjectNo—
warnings[].fix.kindstringYes—
warnings[].fix.labelstringYes—
warnings[].messagestringYes—
warnings[].ruleIdstring | nullYes—
warnings[].severityenumYesOne of: "error", "warning".
withheldFactsarray<string>Yes—

Errors: 400, 401, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X POST "$ANSWERSTACK_API_URL/v1/account/rules/simulate" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "callId": "call_2ZPh7XbT0v9Ao4iJ3qK1mN8sRgE",
  "facts": {},
  "playbookId": "pb_2ZPh7XbT0v9Ao4iJ3qK1mN8sRgE",
  "rules": [
    {}
  ]
}'