List and get decisions

GET /v1/decisions and GET /v1/decisions/{slug} — the decisions of an API key's workspace and the contract of each one's active version, with an example state.

GET https://api.dcision.io/v1/decisions
GET https://api.dcision.io/v1/decisions/{slug}

Two read endpoints tell an integration — or an agent through the MCP server — which decisions exist and what each one accepts and answers, without opening the app. They only show what the active version exposes: a draft that was never deployed is listed, but its schema stays private until you deploy it.

Both use the same API keys as decisions, share the read rate-limit window with GET /v1/me and GET /v1/executions, and are not billed.

List decisions

curl https://api.dcision.io/v1/decisions \
  -H "Authorization: Bearer $DCISION_API_KEY"
200 OK
{
  "data": [
    {
      "slug": "lead-qualification",
      "name": "Lead Qualification",
      "description": "Qualify inbound leads and route them to the right team.",
      "status": "deployed",
      "version": 3,
      "updated_at": "2026-10-05T13:41:09.204Z"
    },
    {
      "slug": "chat-triage",
      "name": "Chat triage",
      "description": null,
      "status": "draft",
      "version": null,
      "updated_at": "2026-10-04T18:02:55.731Z"
    }
  ]
}
FieldTypeDescription
dataarrayThe workspace's decisions, most recently updated first.
data[].slugstringThe decision's slug — its endpoint, POST /v1/decisions/{slug}.
data[].namestringThe decision's name.
data[].descriptionstring or nullThe decision's description.
data[].statusstringdraft (never deployed), deployed or disabled (endpoint turned off).
data[].versioninteger or nullThe active version; null for a draft.
data[].updated_atstringWhen the decision last changed, ISO 8601.

Only deployed decisions can run: the others answer 409 DECISION_NOT_DEPLOYED or 409 DECISION_DISABLED.

Get a decision

curl https://api.dcision.io/v1/decisions/lead-qualification \
  -H "Authorization: Bearer $DCISION_API_KEY"
200 OK
{
  "slug": "lead-qualification",
  "name": "Lead Qualification",
  "description": "Qualify inbound leads and route them to the right team.",
  "status": "deployed",
  "version": 3,
  "state_schema": {
    "type": "object",
    "required": ["message"],
    "properties": {
      "message": { "type": "string", "description": "Inbound lead message" },
      "company_size": { "type": "number", "description": "Employee count" },
      "source": { "type": "string", "description": "website, referral, ads" }
    }
  },
  "questions": [
    {
      "id": "purchase_intent",
      "type": "probability",
      "prompt": "Does this lead have real intent to buy in the next 30 days?",
      "options": ["yes", "no"]
    },
    {
      "id": "priority",
      "type": "score",
      "prompt": "How urgent is it to answer this lead?",
      "options": ["low", "medium", "high", "critical"]
    },
    {
      "id": "route",
      "type": "choice",
      "prompt": "Which team should receive this lead?",
      "options": ["sales", "sdr", "nurture", "spam", "other"]
    }
  ],
  "composites": [
    { "id": "lead_score", "description": "0–1 ranking: intent counts double, priority adds, spam-like routes don't count" }
  ],
  "actions": ["continue", "block", "escalate", "fallback"],
  "fallback_action": "escalate",
  "example_state": { "message": "<message>", "company_size": 1.5, "source": "<source>" }
}
FieldTypeDescription
slugstringThe decision's slug.
namestringThe decision's name.
descriptionstring or nullThe decision's description.
statusstringdraft, deployed or disabled.
versioninteger or nullThe active version; null for a draft.
state_schemaobject or nullThe state the active version accepts, as JSON Schema — the API contract of the editor: { "type": "object", "required", "properties" }, { "type": "string" } for a text state or { "type": "array", "items" } for a list state. null for a draft.
questionsarrayThe questions, in order. Empty for a draft.
questions[].idstringThe question key — the key of its answer in result and confidence.
questions[].typestringchoice, score or probability.
questions[].promptstring, object or arrayThe question's instructions, as written in the schema.
questions[].optionsarrayWhat the answer can be: the options of a choice question, other included; the level labels of a score question, lowest first; ["yes", "no"] for a probability question, whose result is the probability of yes.
questions[].min_confidencenumberOnly when the question has a minConfidence: below it, the fallback action applies.
compositesarrayOnly for decisions with composites: each one's id and description.
actionsarrayThe actions a response can carry: continue, block, escalate and fallback. Empty for a draft.
fallback_actionstringThe action for an other answer or low confidence — see Policies and actions. Absent for a draft.
example_stateanyA placeholder state with the right shape — strings as <field>, numbers as 1.5, integers as 1 — to start from. Replace the values before running. null for a draft.

A draft answers 200 with version, state_schema and example_state set to null and empty questions and actions. Policies, destinations, settings and the decision's context are never returned.

Errors

StatusCodeWhen
401INVALID_API_KEYThe key is missing, malformed, unknown or revoked.
404DECISION_NOT_FOUNDNo decision with this slug in the key's workspace, or a malformed slug.
429RATE_LIMITEDToo many read requests in the current minute.

A key only sees its own workspace's decisions.

On this page