> ## Documentation Index
> Fetch the complete documentation index at: https://docs.linkmodel.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAI Decisions

> Evaluate shared text, images, or JSON with GPT-6 Luna. Ask predicate, choice,
or score questions and receive typed answers in question order. Any question
can return a refusal while other questions still receive answers.

Use Responses for generated text, custom JSON output schemas, or tool calling.
Decisions returns a JSON result; it does not expose a streaming parameter.

### Billing

OpenAI's Decisions pricing uses the standard GPT-6 Luna input and cache rates.
Output tokens are not charged for Decisions; this does not change Luna's output
rate on Chat Completions or Responses. Regional processing and long-context
input multipliers still apply. See [LinkModel Chat pricing](/pricing/chat) for
the current model rates.

Cached and cache-write tokens are included in usage.input_tokens. Subtract
those categories before applying the uncached input rate; do not charge them
a second time. The example usage below is illustrative, not a token estimate.

Official references: [Decisions guide](https://developers.openai.com/api/docs/guides/decisions)
and [Create a decision](https://developers.openai.com/api/reference/resources/decisions/methods/create).




## OpenAPI

````yaml /openapi/chat/_openai-decisions.yaml post /decisions
openapi: 3.0.3
info:
  title: OpenAI Decisions
  version: 1.0.0
  description: >-
    Classification and scoring with GPT-6 Luna through the OpenAI-compatible
    Decisions endpoint.
servers:
  - url: https://api.linkmodel.ai/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: chat
paths:
  /decisions:
    post:
      tags:
        - chat
      summary: OpenAI Decisions
      description: >
        Evaluate shared text, images, or JSON with GPT-6 Luna. Ask predicate,
        choice,

        or score questions and receive typed answers in question order. Any
        question

        can return a refusal while other questions still receive answers.


        Use Responses for generated text, custom JSON output schemas, or tool
        calling.

        Decisions returns a JSON result; it does not expose a streaming
        parameter.


        ### Billing


        OpenAI's Decisions pricing uses the standard GPT-6 Luna input and cache
        rates.

        Output tokens are not charged for Decisions; this does not change Luna's
        output

        rate on Chat Completions or Responses. Regional processing and
        long-context

        input multipliers still apply. See [LinkModel Chat
        pricing](/pricing/chat) for

        the current model rates.


        Cached and cache-write tokens are included in usage.input_tokens.
        Subtract

        those categories before applying the uncached input rate; do not charge
        them

        a second time. The example usage below is illustrative, not a token
        estimate.


        Official references: [Decisions
        guide](https://developers.openai.com/api/docs/guides/decisions)

        and [Create a
        decision](https://developers.openai.com/api/reference/resources/decisions/methods/create).
      operationId: openai-decisions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - model
                - input
                - questions
              properties:
                model:
                  type: string
                  enum:
                    - gpt-6-luna
                  example: gpt-6-luna
                  description: >-
                    Currently only gpt-6-luna supports Decisions. See
                    [Models](/models).
                input:
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        oneOf:
                          - $ref: '#/components/schemas/UserMessage'
                          - $ref: '#/components/schemas/InstructionMessage'
                          - $ref: '#/components/schemas/AssistantMessage'
                          - $ref: '#/components/schemas/FunctionCall'
                          - $ref: '#/components/schemas/CustomToolCall'
                          - $ref: '#/components/schemas/ToolOutput'
                  description: >-
                    Shared evidence for all questions. Tool outputs must match a
                    preceding call by call_id. Files, audio, and item references
                    are not supported.
                questions:
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/PredicateQuestion'
                      - $ref: '#/components/schemas/ChoiceQuestion'
                      - $ref: '#/components/schemas/ScoreQuestion'
                  minItems: 1
                  maxItems: 400
                prompt_cache_key:
                  type: string
                  maxLength: 64
                  nullable: true
                prompt_cache_options:
                  type: object
                  properties:
                    mode:
                      type: string
                      enum:
                        - implicit
                        - explicit
                      default: implicit
                    ttl:
                      type: string
                      enum:
                        - 30m
                      default: 30m
                  description: >-
                    Cache controls. Explicit mode disables the implicit
                    breakpoint; without explicit breakpoints, no cache is used.
                    Up to four breakpoints can be written per request.
                safety_identifier:
                  type: string
                  maxLength: 128
                  nullable: true
            example:
              model: gpt-6-luna
              input: I was charged twice for my order.
              questions:
                - type: choice
                  name: department
                  instructions: Which department should handle this request?
                  choices:
                    - value: billing
                      description: Payments, invoices, and refunds.
                    - value: support
                      description: Other product or account questions.
      responses:
        '200':
          description: >-
            Answers in question order, including per-question refusals, and
            token usage.
          content:
            application/json:
              schema:
                type: object
                required:
                  - answers
                  - model
                  - usage
                properties:
                  answers:
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/PredicateAnswer'
                        - $ref: '#/components/schemas/ChoiceAnswer'
                        - $ref: '#/components/schemas/ScoreAnswer'
                        - $ref: '#/components/schemas/RefusalAnswer'
                  model:
                    type: string
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                model: gpt-6-luna
                answers:
                  - type: choice
                    name: department
                    choice: billing
                    confidence: 0.98
                    probabilities:
                      - value: billing
                        probability: 0.98
                      - value: support
                        probability: 0.02
                usage:
                  input_tokens: 60
                  input_tokens_details:
                    cached_tokens: 0
                    cache_write_tokens: 0
                  output_tokens: 0
                  output_tokens_details:
                    reasoning_tokens: 0
                  total_tokens: 60
        '400':
          description: Bad request -- invalid or missing parameter.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    example: 400
                  msg:
                    type: string
                    example: model is required
                  request_id:
                    type: string
        '401':
          description: Unauthorized -- missing or invalid API key.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    example: 401
                  msg:
                    type: string
                    example: unauthorized
                  request_id:
                    type: string
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    example: 500
                  msg:
                    type: string
                  request_id:
                    type: string
components:
  schemas:
    UserMessage:
      type: object
      required:
        - role
        - content
      properties:
        type:
          type: string
          enum:
            - message
        role:
          type: string
          enum:
            - user
        content:
          oneOf:
            - type: string
            - type: array
              items:
                oneOf:
                  - $ref: '#/components/schemas/InputText'
                  - $ref: '#/components/schemas/InputImage'
                  - $ref: '#/components/schemas/InputJSON'
    InstructionMessage:
      type: object
      required:
        - role
        - content
      properties:
        type:
          type: string
          enum:
            - message
        role:
          type: string
          enum:
            - developer
            - system
        content:
          oneOf:
            - type: string
            - type: array
              items:
                $ref: '#/components/schemas/InputText'
    AssistantMessage:
      type: object
      required:
        - role
        - content
      properties:
        type:
          type: string
          enum:
            - message
        role:
          type: string
          enum:
            - assistant
        content:
          oneOf:
            - type: string
            - type: array
              items:
                oneOf:
                  - type: object
                    required:
                      - type
                      - text
                    properties:
                      type:
                        type: string
                        enum:
                          - output_text
                      text:
                        type: string
                  - type: object
                    required:
                      - type
                      - refusal
                    properties:
                      type:
                        type: string
                        enum:
                          - refusal
                      refusal:
                        type: string
        phase:
          type: string
          enum:
            - commentary
            - final_answer
    FunctionCall:
      type: object
      required:
        - type
        - call_id
        - name
        - arguments
      properties:
        type:
          type: string
          enum:
            - function_call
        call_id:
          type: string
        name:
          type: string
        arguments:
          type: string
        id:
          type: string
        namespace:
          type: string
        status:
          type: string
          enum:
            - in_progress
            - completed
            - incomplete
    CustomToolCall:
      type: object
      required:
        - type
        - call_id
        - name
        - input
      properties:
        type:
          type: string
          enum:
            - custom_tool_call
        call_id:
          type: string
        name:
          type: string
        input:
          type: string
        id:
          type: string
        namespace:
          type: string
        status:
          type: string
          enum:
            - in_progress
            - completed
            - incomplete
    ToolOutput:
      type: object
      required:
        - type
        - call_id
        - output
      properties:
        type:
          type: string
          enum:
            - function_call_output
            - custom_tool_call_output
        call_id:
          type: string
        output:
          oneOf:
            - type: string
            - type: array
              items:
                oneOf:
                  - $ref: '#/components/schemas/InputText'
                  - $ref: '#/components/schemas/InputImage'
        id:
          type: string
        status:
          type: string
          enum:
            - in_progress
            - completed
            - incomplete
    PredicateQuestion:
      title: Predicate
      type: object
      required:
        - type
        - instructions
      properties:
        type:
          type: string
          enum:
            - predicate
        name:
          type: string
          description: Optional name echoed in the corresponding answer. Use unique names.
        instructions:
          oneOf:
            - type: string
            - type: array
              items:
                oneOf:
                  - $ref: '#/components/schemas/QuestionText'
                  - $ref: '#/components/schemas/QuestionImage'
                  - $ref: '#/components/schemas/InputJSON'
              minItems: 1
          description: Question instructions. Cache breakpoints are not supported here.
    ChoiceQuestion:
      title: Choice
      type: object
      required:
        - type
        - instructions
        - choices
      properties:
        type:
          type: string
          enum:
            - choice
        name:
          type: string
          description: Optional name echoed in the corresponding answer. Use unique names.
        instructions:
          oneOf:
            - type: string
            - type: array
              items:
                oneOf:
                  - $ref: '#/components/schemas/QuestionText'
                  - $ref: '#/components/schemas/QuestionImage'
                  - $ref: '#/components/schemas/InputJSON'
              minItems: 1
          description: Question instructions. Cache breakpoints are not supported here.
        choices:
          type: array
          items:
            type: object
            required:
              - value
            properties:
              value:
                oneOf:
                  - type: string
                  - type: boolean
              description:
                type: string
          minItems: 2
          maxItems: 255
          description: >-
            Unique typed values. A string and a boolean with the same text are
            distinct.
    ScoreQuestion:
      title: Score
      type: object
      required:
        - type
        - instructions
        - levels
      properties:
        type:
          type: string
          enum:
            - score
        name:
          type: string
          description: Optional name echoed in the corresponding answer. Use unique names.
        instructions:
          oneOf:
            - type: string
            - type: array
              items:
                oneOf:
                  - $ref: '#/components/schemas/QuestionText'
                  - $ref: '#/components/schemas/QuestionImage'
                  - $ref: '#/components/schemas/InputJSON'
              minItems: 1
          description: Question instructions. Cache breakpoints are not supported here.
        levels:
          type: array
          items:
            type: object
            required:
              - label
            properties:
              label:
                type: string
              description:
                type: string
          minItems: 2
          maxItems: 10
          description: Ordered levels, from lowest to highest.
    PredicateAnswer:
      title: Predicate
      type: object
      required:
        - type
        - name
        - probability
      properties:
        type:
          type: string
          enum:
            - predicate
        name:
          type: string
          nullable: true
        probability:
          type: number
          minimum: 0
          maximum: 1
    ChoiceAnswer:
      title: Choice
      type: object
      required:
        - type
        - name
        - choice
        - confidence
        - probabilities
      properties:
        type:
          type: string
          enum:
            - choice
        name:
          type: string
          nullable: true
        choice:
          oneOf:
            - type: string
            - type: boolean
        confidence:
          type: number
          minimum: 0
          maximum: 1
        probabilities:
          type: array
          items:
            type: object
            required:
              - value
              - probability
            properties:
              value:
                oneOf:
                  - type: string
                  - type: boolean
              probability:
                type: number
                minimum: 0
                maximum: 1
    ScoreAnswer:
      title: Score
      type: object
      required:
        - type
        - name
        - score
        - confidence
        - probabilities
      properties:
        type:
          type: string
          enum:
            - score
        name:
          type: string
          nullable: true
        score:
          type: number
          description: >-
            Probability-weighted average of the zero-based level indices; may
            fall between levels.
        confidence:
          type: number
          minimum: 0
          maximum: 1
        probabilities:
          type: array
          items:
            type: object
            required:
              - label
              - value
              - probability
            properties:
              label:
                type: string
              value:
                type: integer
              probability:
                type: number
                minimum: 0
                maximum: 1
    RefusalAnswer:
      title: Refusal
      type: object
      required:
        - type
        - name
      properties:
        type:
          type: string
          enum:
            - refusal
        name:
          type: string
          nullable: true
    Usage:
      type: object
      required:
        - input_tokens
        - input_tokens_details
        - output_tokens
        - output_tokens_details
        - total_tokens
      properties:
        input_tokens:
          type: integer
          minimum: 0
        input_tokens_details:
          type: object
          required:
            - cached_tokens
            - cache_write_tokens
          properties:
            cached_tokens:
              type: integer
              minimum: 0
            cache_write_tokens:
              type: integer
              minimum: 0
        output_tokens:
          type: integer
          minimum: 0
        output_tokens_details:
          type: object
          required:
            - reasoning_tokens
          properties:
            reasoning_tokens:
              type: integer
              minimum: 0
        total_tokens:
          type: integer
          minimum: 0
    InputText:
      type: object
      required:
        - type
        - text
      properties:
        type:
          type: string
          enum:
            - input_text
        text:
          type: string
        prompt_cache_breakpoint:
          $ref: '#/components/schemas/CacheBreakpoint'
    InputImage:
      type: object
      required:
        - type
        - image_url
      properties:
        type:
          type: string
          enum:
            - input_image
        image_url:
          type: string
          pattern: ^(data:|https?://)
          description: >-
            Public HTTP(S) image URL or base64 data URL. File IDs are not
            supported.
        detail:
          type: string
          enum:
            - low
            - high
            - auto
            - original
        prompt_cache_breakpoint:
          $ref: '#/components/schemas/CacheBreakpoint'
    InputJSON:
      type: object
      required:
        - type
        - data
      properties:
        type:
          type: string
          enum:
            - input_json
        data:
          oneOf:
            - type: object
              additionalProperties: true
            - type: array
              items:
                type: object
                additionalProperties: true
          description: >-
            JSON object or array of objects. At most 32 container levels, 10,000
            values, and 256 KiB of compact UTF-8 JSON.
    QuestionText:
      type: object
      required:
        - type
        - text
      properties:
        type:
          type: string
          enum:
            - input_text
        text:
          type: string
    QuestionImage:
      type: object
      required:
        - type
        - image_url
      properties:
        type:
          type: string
          enum:
            - input_image
        image_url:
          type: string
          pattern: ^(data:|https?://)
          description: >-
            Public HTTP(S) image URL or base64 data URL. File IDs are not
            supported.
        detail:
          type: string
          enum:
            - low
            - high
            - auto
            - original
    CacheBreakpoint:
      type: object
      required:
        - mode
      properties:
        mode:
          type: string
          enum:
            - explicit
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key

````

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