# GPT-6 Luna Decisions - Core.Today AI API > OpenAI's Decisions API on GPT-6 Luna, through the gateway. Not chat: send an input (text, or user messages with text and base64 images) plus typed questions - predicate (probability a condition is true), choice (one of your options with per-option probabilities) or score (a position on your ordered levels) - and get one typed answer per question with confidence. Roughly 10x faster than a Responses call and billed on input tokens only. - **Provider**: OpenAI - **Model ID**: gpt-6-luna-decisions - **Category**: LLM - **Credits**: 0.19 per 1K input tokens (output free) - **Speed**: Fast - **Quality**: High ## Model Specifications - **Context Window**: 1.1M tokens - **Max Output**: 0K tokens - **Training Cutoff**: 2026-05-18 - **Supported Formats**: json - **Compatible SDK**: OpenAI, HTTP ### Capabilities - Vision (image input) - JSON Mode ### Token Pricing (per 1M tokens) - **Input Tokens**: 185.8 credits ($0.12) - **Output Tokens**: not charged — billed on input tokens only ## Features - Three question types: predicate (0-1 probability), choice (your values + probabilities + confidence), score (weighted position on ordered levels) - Text and image input (input_text / input_image parts, base64 data URLs only) - Many questions per request over one input - independent answers, one input-token charge - Input-token billing only; output, cached and cache-write tokens are free - A question can come back as a refusal; the other answers are still returned - OpenAI SDK support: client.decisions.create(...) with base_url https://api.core.today/llm/openai/v1 ## Use Cases - Content classification and request routing with calibrated probabilities - Visual checks on product photos (damage, category) with predicate questions - Severity, priority and quality scoring against your own rubric - Guardrails and relevance filtering before a larger model runs ## API Endpoint Base URL: https://api.core.today Endpoint: POST /llm/openai/v1/decisions ## Authentication Header: Authorization: Bearer YOUR_API_KEY Note: LLM endpoints use OpenAI-compatible format with Authorization Bearer token. ## Input Parameters ### Required - **model**: string (default: gpt-6-luna-decisions) - gpt-6-luna-decisions (catalog id) or gpt-6-luna - the gateway bills the Decisions row either way and sends gpt-6-luna upstream. - **input**: string | message[] - The evidence shared by every question: a text string, or user messages whose content holds input_text and input_image parts (images as data:image/...;base64 URLs). - **questions**: array - Array of questions, each with a unique name, a type and instructions. choice adds choices [{value, description}], score adds ordered levels [{label, description}] from lowest to highest. Answers come back under the same names. ## Examples ### Route a complaint and rate its severity A predicate, a choice and a score in one call ```json { "model": "gpt-6-luna-decisions", "input": "I was charged twice for my order and support has not replied for 3 days.", "questions": [ { "type": "predicate", "name": "is_urgent", "instructions": "Does this message convey urgency?" }, { "type": "choice", "name": "department", "instructions": "Which department should handle this complaint?", "choices": [ { "value": "billing", "description": "Payments, invoices, and refunds." }, { "value": "technical", "description": "Problems using the product." }, { "value": "other", "description": "Requests outside these categories." } ] }, { "type": "score", "name": "severity", "instructions": "How severe is this issue for the customer?", "levels": [ { "label": "Minor", "description": "Inconvenience only." }, { "label": "Significant", "description": "Money or access affected." }, { "label": "Critical", "description": "Blocked with no workaround." } ] } ] } ``` ### Check a product photo for damage Image input as a base64 data URL plus a predicate question ```json { "model": "gpt-6-luna-decisions", "input": [ { "role": "user", "content": [ { "type": "input_text", "text": "Inspect the product in this photo." }, { "type": "input_image", "image_url": "data:image/png;base64," } ] } ], "questions": [ { "type": "predicate", "name": "visible_damage", "instructions": "Does the product have visible damage, such as a crack, tear, or dent? Ignore shadows and damage to the packaging." } ] } ``` ## Response Format ```json { "id": "chatcmpl-abc123", "object": "chat.completion", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Response text here" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 100, "completion_tokens": 50, "total_tokens": 150 } } ``` ## Tips - Read answers by type: predicate.probability (0-1), choice.choice + probabilities[] + confidence, score.score (can fall between levels) + probabilities[] + confidence; handle type refusal - Give every question a unique name and put the full question in instructions; add an 'other' choice when your list may not cover every input - Put every question about the same input in one request - answers are independent and the input is charged once - Hosted image URLs and file ids are not accepted - inline the image as a base64 data URL - stream is not supported on this endpoint through the gateway; the chat gpt-6-luna row is unaffected and keeps its own pricing ## Documentation https://developers.openai.com/api/docs/guides/decisions