Skip to Content
API AccessDecisions

Decisions

POST /v1/decisions evaluates shared input with a concrete decision model on an existing Vercel AI Gateway, OpenAI or OpenAI Compatible connection. The upstream service must implement the native Decisions endpoint. Use a Steinkauz API key and the same API routing policy as other inference requests.

Select the exact connection and raw upstream model ID:

connection/<connection-uuid>/<raw-model-id>

Raw IDs are opaque and can contain slashes. For example, Gateway uses openai/gpt-6-luna-decisions; direct OpenAI uses gpt-6-luna. Listing a model is optional: a manually configured model can execute even when discovery or capability metadata is unavailable. The selected connection must belong to the key’s organization and be enabled and permitted by its policy.

curl https://platform.steinkauz.ai/v1/decisions \ -H "Authorization: Bearer $STEINKAUZ_API_KEY" \ -H "Content-Type: application/json" \ -H "x-steinkauz-data-sensitivity: D1_INTERNAL" \ -d '{ "model": "connection/00000000-0000-4000-8000-000000000001/openai/gpt-6-luna-decisions", "input": "The package arrived with a broken screen.", "questions": [ {"type": "predicate", "name": "damage", "instructions": "Does the customer report damage?"}, {"type": "choice", "name": "queue", "instructions": "Which team should review?", "choices": [{"value": "shipping"}, {"value": "support"}]}, {"type": "score", "name": "severity", "instructions": "Rate the impact", "levels": [{"label": "Cosmetic"}, {"label": "Cannot operate"}]} ] }'

The response contains model, ordered answers, and upstream usage when reported. A predicate returns the probability of true. A choice returns a supplied string or boolean value. A score returns a fractional position on the ordered levels, whose indices start at zero. Preserve the provider’s confidence and probability distributions when present; missing fields remain absent. Any question can return {"type":"refusal","name":...} alongside successful answers. Unnamed questions have name: null in their answers. Refusals can still incur upstream usage.

Supply 1–200 questions. Question names must be unique when supplied. Choices contain 2–255 unique typed values; true and "true" are distinct in the OpenAI contract. Score questions require at least two levels. Upstream services may impose narrower limits; Gateway currently rejects choice values whose string representations collide and limits scores to ten levels.

input accepts a string or an ordered array of messages and matching function/custom-tool call history. User messages and tool outputs accept input_text and input_image; system/developer messages accept input text, and assistant messages accept output text or refusals. Tool history is evidence only. Steinkauz does not execute tool calls. Files, audio and item references are unsupported.

Image input accepts inline base64 image data URLs and public HTTP(S) image URLs, with at most 128 images per request. Support depends on the selected service: Gateway accepts user messages with inline images. Use inline image data URLs for the broadest compatibility. Image detail accepts low, high, auto, original or null. Unsupported input returns an error; another connection is never tried.

The standard prompt_cache_key, prompt_cache_options and content-part prompt_cache_breakpoint fields are supported, as is safety_identifier. The latter is caller-provided metadata; authenticated organization/user identity always comes from the Steinkauz credential. Request extensions that configure provider or model fallbacks are rejected. Existing Gateway connection constraints for provider order, allowlists and zero data retention apply.

Requests are non-streaming, limited to 32 MiB of JSON, with an 8 MiB response limit and a five-minute upstream deadline. Cancellation propagates to the selected service. Authentication, credential floors, D×E policy, budgets and mandatory evidence precede inference. Denial and failure never lower sensitivity, select another connection or fall back to chat. The response includes x-steinkauz-connection-id, x-steinkauz-resolved-model and the existing routing-policy headers.

Decision-model answers appear in Activity as inference results, separate from Steinkauz’s routing-policy decisions. Text and answer evidence follows content retention. Inline image bytes and signed URLs are replaced by attachment evidence in retained content. Unknown token counters and costs remain unknown; Steinkauz does not estimate charges from model prices.

See the OpenAI Decisions reference , OpenAI guide  and Gateway Decisions contract  for upstream-specific support.