# Decisions (/docs/api/decisions)

`POST /v1/decisions` serves OpenAI Decisions with the same key you use for chat: send input and typed questions, and get back typed answers with probabilities instead of generated text. It serves `openai/gpt-6-luna`.

| | |
|---|---|
| Endpoint | `POST https://api.ohmygpt.com/v1/decisions` |
| Auth | `Authorization: Bearer $OHMYGPT_API_KEY` |
| Model | `openai/gpt-6-luna` |
| Response | Non-streaming (one JSON response) |

```bash
curl https://api.ohmygpt.com/v1/decisions \
  -H "Authorization: Bearer $OHMYGPT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-6-luna",
    "input": [{
      "type": "message",
      "role": "user",
      "content": [{"type": "input_text", "text": "I was charged twice for my subscription this month."}]
    }],
    "questions": [{
      "type": "choice",
      "name": "department",
      "instructions": "Which department should handle this?",
      "choices": [
        {"value": "billing", "description": "Payments and refunds."},
        {"value": "support", "description": "General support."}
      ]
    }]
  }'
```

```json
{
  "model": "gpt-6-luna",
  "answers": [
    {
      "type": "choice",
      "name": "department",
      "choice": "billing",
      "probabilities": [
        { "value": "billing", "probability": 1.0 },
        { "value": "support", "probability": 0.0 }
      ],
      "confidence": 1.0
    }
  ],
  "usage": {
    "input_tokens": 124,
    "input_tokens_details": { "cached_tokens": 0, "cache_write_tokens": 0 },
    "output_tokens": 0,
    "output_tokens_details": { "reasoning_tokens": 0 },
    "total_tokens": 124
  }
}
```

The request and response follow OpenAI's Decisions format exactly, so OpenAI's examples work once you change the base URL, the key, and the model ID. Decisions are billed on input tokens, and each response's charge is in the `X-Cost-Credits` header, as on every endpoint.

## TypeSafe System One [#typesafe-system-one]

`POST /v1/systemone` serves TypeSafe System One with the model `typesafe/jev-latest`. Requests and responses follow TypeSafe's System One format. Send JSON, or `multipart/form-data` with the JSON in a first part named `request` followed by one part per image. Request headers that start with `TypeSafe-Danger-Zone-` reach the model as sent.
