> ## Documentation Index
> Fetch the complete documentation index at: https://veniceai-tomb-eng-1545-typesafe-jev.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Decision

<Warning>
  **Beta**: This endpoint is currently in beta and may be unstable. Request/response schemas and behavior may change without notice. **Currently available to Venice staff only.**
</Warning>

The decisions endpoint evaluates a `state` (a string, object, or array) against a map of typed `questions` and returns structured `answers` — typed values and probability distributions your code can branch on directly. It does not generate text. The model is listed with `betaModel: true` under `GET /api/v1/models?type=decision`.

## Question types

| Type | Goal | Answer fields |
| - | - | - |
| `noul` | Whether a condition holds | `noul` — probability the answer is yes (0–1) |
| `choice` | Pick one option from a defined set | `choice`, `probabilities`, `confidence` |
| `score` | Rate the state on an ordered rubric | `score`, `legend`, `probabilities`, `confidence` |

All questions in one request are evaluated in parallel and in isolation against the same state; adding questions barely changes response time.

## Example

```bash theme={"system"}
curl https://api.venice.ai/api/v1/decisions \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": "Help! My payouts have been failing for 3 days.",
    "questions": {
      "is_urgent": { "type": "noul", "instructions": "Does this message convey urgency?" },
      "department": {
        "type": "choice",
        "instructions": "Which team should handle this?",
        "criteria": {
          "billing": "Payments, invoicing, refunds",
          "technical": "Bugs, outages, integrations",
          "sales": "Pricing, upgrades, new accounts"
        }
      },
      "frustration": {
        "type": "score",
        "instructions": "How frustrated is the customer?",
        "criteria": ["Calm", "Frustrated", "Very angry"]
      }
    }
  }'
```

```json theme={"system"}
{
  "model": "jev-latest",
  "answers": {
    "is_urgent": { "type": "noul", "noul": 0.92 },
    "department": {
      "type": "choice",
      "choice": "technical",
      "probabilities": { "billing": 0.08, "technical": 0.85, "sales": 0.07 },
      "confidence": 0.82
    },
    "frustration": {
      "type": "score",
      "score": 1.6,
      "legend": { "0": "Calm", "1": "Frustrated", "2": "Very angry" },
      "probabilities": { "0": 0.05, "1": 0.3, "2": 0.65 },
      "confidence": 0.78
    }
  },
  "usage": { "input_tokens": 312, "output_tokens": 48 }
}
```

## TypeSafe SDK compatibility

The same handler is served at [POST /api/v1/systemone](/api-reference/endpoint/decisions/systemone), so the official TypeSafe SDKs work against Venice with a base URL and API key swap:

```bash theme={"system"}
export TYPESAFE_BASE_URL=https://api.venice.ai/api
export TYPESAFE_API_KEY=$VENICE_API_KEY
```

```python theme={"system"}
from typesafe_sdk import Noul, TypeSafeClient

with TypeSafeClient() as client:
    response = client.system_one(
        state="Help! My payouts have been failing for 3 days.",
        questions={"is_urgent": Noul(instructions="Does this message convey urgency?")},
    )
print(response.answers["is_urgent"].noul)
```

## Pricing and limits

Decisions are billed per input token; output tokens are free. `input_tokens` covers the serialized `state` plus **all** questions in the request, plus a small per-call envelope (\~250 tokens) — batching several questions into one call shares the state cost across them. See `GET /api/v1/models?type=decision` for current rates, per-model token budgets (`maxStateTokens`, `maxTotalTokens`), and available models.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.