Deciders

Get a decision

Returns a decision. Poll it after a wait: false request until status is completed or failed.

get/v1/projects/{project_id}/decisions/{decision_id}

Request

  • Base URL: https://api.naturali.ai
  • URL: https://api.naturali.ai/v1/projects/{project_id}/decisions/{decision_id}
  • Auth: one of:
    • HTTP bearer
    • OAuth 2 (authorization code, authorization URL https://api.naturali.ai/authorize, token URL https://api.naturali.ai/token, scopes: mcp:access)

Path parameters

decision_idstring required
Example:dec_V1StGXR8Z5jdHi6B

The decision ID

Response

The decision

idstring
project_idstring
decider_idstring nullable

The decider asked; kept after the decider is deleted. Null for a decision sent with its own questions.

decider_versioninteger nullable

The question-set version the decision was answered under

status'queued' | 'running' | 'completed' | 'failed'
answers_by_nameobject nullable

The same answers keyed by question name, so a JSON Logic path reads one by name (answers_by_name.department.choice) rather than by position.

generation_idstring nullable

The generation that answered, once one has; null for a tool backend. Its receipt carries what the decision cost.

metadataMetadataBag

Caller-owned annotations on a resource, stored as the object they were written as: the types a value was written with are the types a read returns, so a filter can ask an ordering question about a number. Unlike other body fields, keys are stored and returned verbatim in the casing supplied — they are not converted between snake_case and camelCase.

No key is reserved, and that is the point: every piece of state the platform owns lives in its own typed column, so nothing written here reaches platform state. The platform never reads the bag — it is not an IAM context, not a policy input and not part of a prompt — which is what separates it from a tag bag.

created_atstring date-time
updated_atstring date-time

Example response

{
  "id": "dec_V1StGXR8Z5jdHi6B",
  "project_id": "proj_V1StGXR8Z5jdHi6B",
  "decider_id": "dcd_V1StGXR8Z5jdHi6B",
  "decider_version": 1,
  "questions": [
    {
      "type": "choice",
      "name": "department",
      "instructions": "Which department should handle this complaint?",
      "choices": [
        {
          "value": "billing",
          "description": "Payments, invoices and refunds."
        }
      ],
      "levels": [
        {
          "label": "Workaround available",
          "description": "A task fails, but another way works."
        }
      ]
    }
  ],
  "answers": [
    {
      "name": "department",
      "probability": 0.92,
      "choice": "billing",
      "score": 1.1,
      "probabilities": [
        {
          "probability": 0.95
        }
      ],
      "confidence": 0.93
    }
  ],
  "error": {
    "code": "AI_PROVIDER_ERROR",
    "message": "Provider returned 402: insufficient credits"
  },
  "generation_id": "gen_V1StGXR8Z5jdHi6B",
  "metadata": {
    "author": "John",
    "revision": 2
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.