¿Qué es la API de Decisiones de OpenAI?

La API de Decisiones de OpenAI devuelve respuestas tipadas (predicado, elección, puntuación) de GPT-6 Luna a $0.10 por 1M de tokens de entrada. Anatomía, precios, cuándo usarla.

INEZA Felin-Michel

INEZA Felin-Michel

10 October 2026

¿Qué es la API de Decisiones de OpenAI?

Apidog para empresas

Despliegue local

SSO & RBAC

Conforme con SOC 2

Explorar Apidog Enterprise

La API de Decisiones de OpenAI es un endpoint POST /v1/decisions, que se ejecuta en GPT-6 Luna, que toma texto o imágenes más una lista de preguntas y devuelve respuestas tipadas en lugar de prosa: una probabilidad predicate, una choice con probabilidades por opción, o una score sobre niveles ordenados. El costo de entrada es de $0.10 por 1M de tokens sin cargos de salida, lectura o escritura de caché, y el endpoint ha estado en beta pública desde el 06-10-2026, y OpenAI espera su disponibilidad general "en las próximas semanas".

Esta publicación cubre lo que devuelve el endpoint, su costo, su lugar junto a las Salidas Estructuradas (Structured Outputs) y la llamada a funciones (function calling), y cómo probarlo. Para el tutorial con curl, Python y JavaScript, lea a continuación cómo usar la API de Decisiones de OpenAI; si ya está utilizando la API de Respuestas (Responses API), la comparación Decisiones vs Respuestas muestra el mismo trabajo realizado de ambas maneras. A lo largo de esta publicación, utilizaremos Apidog para almacenar la clave, guardar solicitudes y realizar aserciones en el array answers para que un cambio en el comportamiento del modelo falle una prueba en lugar de enrutar incorrectamente un ticket.

Anatomía de una solicitud y respuesta de Decisiones

Tres campos de solicitud, tres campos de respuesta. Sin id, sin texto generado, nada que parsear.

Parte Campo Qué contiene
Solicitud model gpt-6-luna, el único modelo disponible hoy
Solicitud input Una cadena, o un array de mensajes de usuario cuyo contenido mezcla partes input_text e input_image
Solicitud questions Un array de preguntas, cada una con un type, instructions requeridas y un name opcional
Solicitud safety_identifier ID de usuario final opcional, hasta 128 caracteres
Respuesta model Refleja gpt-6-luna
Respuesta answers Una entrada por pregunta, en el orden en que se hicieron, con type y name
Respuesta usage input_tokens, input_tokens_details, output_tokens, output_tokens_details, total_tokens

Note lo que falta: no hay temperature, reasoning, stream, store, tools o text.format. Para eso, querrá la API de Respuestas. Y output_tokens es 0 en el ejemplo de referencia de OpenAI, por lo que la fijación de precios a continuación no tiene línea de salida.

Los tres tipos de preguntas

Cada pregunta tiene su propio type, y puede mezclar tipos en una misma entrada. Ponga preguntas independientes en la misma solicitud; para decisiones que dependen de una respuesta anterior, la guía de OpenAI dice que envíe solicitudes separadas.

predicate: una probabilidad sí/no

Un predicate pregunta si una condición se cumple y devuelve una probabilidad de 0 a 1 de que sea verdadera.

curl https://api.openai.com/v1/decisions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-luna",
    "input": "The box arrived crushed and the screen is cracked.",
    "questions": [
      {"type": "predicate", "name": "damaged",
       "instructions": "Is the product described as damaged?"}
    ]
  }'

El ejemplo de referencia de OpenAI para esta forma devuelve:

{
  "model": "gpt-6-luna",
  "answers": [
    {"type": "predicate", "name": "damaged", "probability": 0.95}
  ],
  "usage": {
    "input_tokens": 42,
    "input_tokens_details": {"cached_tokens":0,"cache_write_tokens":0},
    "output_tokens": 0,
    "output_tokens_details": {"reasoning_tokens":0},
    "total_tokens": 42
  }
}

choice: una etiqueta de un conjunto no ordenado

Un choice añade un array choices de objetos {value, description}: de 2 a 255 opciones únicas, donde value es una cadena o un booleano (true y "true" son distintos). OpenAI recomienda un respaldo como other cuando sus categorías no cubren todas las entradas.

{
  "model": "gpt-6-luna",
  "input": "I was charged twice for my order.",
  "questions": [
    {"type": "choice", "name": "department",
     "instructions": "Which team should handle this ticket?",
     "choices": [
       {"value":"billing"}, {"value":"technical"},
       {"value":"shipping"}, {"value":"other"}
     ]}
  ]
}

La respuesta ilustrativa de la guía para esta entrada:

{"type": "choice", "name": "department", "choice": "billing",
 "probabilities": [
   {"value":"billing","probability":0.95},
   {"value":"technical","probability":0.02},
   {"value":"shipping","probability":0.01},
   {"value":"other","probability":0.02}
 ],
 "confidence": 0.93}

score: una posición en una escala ordenada

Un score añade levels, un array de {label, description} ordenados de menor a mayor. Los índices comienzan en 0, y el score devuelto es el promedio ponderado por probabilidad de esos índices, por lo que puede caer entre niveles.

{
  "model": "gpt-6-luna",
  "input": "Export fails in Safari but works in Chrome.",
  "questions": [
    {"type": "score", "name": "severity",
     "instructions": "How badly does this bug block the user?",
     "levels": [
       {"label":"Cosmetic"},
       {"label":"Workaround available"},
       {"label":"Fully blocked"}
     ]}
  ]
}

En el ejemplo de la guía, las probabilidades son 0.1, 0.7 y 0.2 en los tres niveles, lo que da un score de 1.1 y una confidence de 0.55. Interprete 1.1 como "entre el nivel 1 y el nivel 2, cerca del 1". La regla de la guía: choice para categorías no ordenadas como departamentos; score para niveles ordenados como la gravedad.

Un cuarto tipo de respuesta, refusal, puede aparecer para cualquier pregunta individual como {"type":"refusal","name":...}. Otras preguntas en la misma solicitud aún pueden obtener respuestas, así que ramifique por type antes de leer un campo.

Velocidad, según la describe OpenAI

OpenAI dice que la API de Decisiones es aproximadamente 10 veces más rápida que la API de Respuestas; el anuncio lo expresa como hasta 10 veces más rápida que GPT-6 Luna a través de Respuestas. OpenAI no publica ningún número absoluto de latencia. Un desarrollador en el foro de OpenAI informó que las decisiones con entrada de imagen se devolvían en aproximadamente 0.8 segundos en una conexión lenta: una anécdota, no un benchmark. Mida su propio p95 antes de prometer nada.

Precios: $0.10 por millón de tokens de entrada, nada más

Con gpt-6-luna, la entrada cuesta $0.10 por 1M de tokens. Solo paga por los tokens de entrada: no hay cargos por lectura de caché, escritura de caché o tokens de salida. El objeto usage contiene los campos cached_tokens y cache_write_tokens, pero según una respuesta en el foro de desarrolladores de OpenAI, aún no hay almacenamiento en caché en Decisions, así que espere 0.

Se aplican dos multiplicadores. Las entradas de más de 272K tokens se facturan al doble (2x), lo que resulta en $0.20 por 1M (derivado del multiplicador de contexto largo de la página de precios). El procesamiento regional a través de los endpoints de residencia de datos de EE. UU. o la UE añade un 10%. No hay niveles de Batch, Flex o Fast documentados para /v1/decisions, así que no planifique en torno a un descuento que solo existe en Respuestas.

Aquí está la aritmética para una carga de trabajo de enrutamiento de soporte. Un ticket de 500 tokens con tres preguntas en una solicitud cuesta 500 / 1,000,000 x $0.10 = $0.00005. Un millón de esos tickets cuesta $50. El mismo ticket a través de la API de Respuestas con una etiqueta JSON de 40 tokens a $0.50 por 1M de salida añade 40 / 1,000,000 x $0.50 = $0.00002 por solicitud además de la entrada, antes de los tokens de razonamiento, que Luna factura como salida en Respuestas y Decisiones no factura en absoluto. El enfoque honesto es "Decisiones no factura tokens de salida", no un porcentaje. Para la tabla de tarifas completa de Luna y lo que hace el almacenamiento en caché de prompts en Respuestas, vea qué es GPT-6 Luna.

Cuándo usar Decisiones, Salidas Estructuradas o llamada a funciones

OpenAI traza la línea por sí misma: use Salidas Estructuradas (Structured Outputs) con la API de Respuestas (Responses API) cuando necesite un objeto que siga su propio esquema JSON, como campos extraídos o una explicación escrita, o llamada a funciones (function calling) cuando necesite que el modelo solicite una llamada a herramienta con argumentos. Decisiones es para clasificar contenido, enrutar solicitudes y priorizar el trabajo.

Necesita Use
Una etiqueta, una probabilidad o una gravedad con confianza API de Decisiones
Un objeto en su propio esquema JSON (campos extraídos, una explicación) Salidas Estructuradas en Respuestas
El modelo para elegir una herramienta y rellenar sus argumentos Llamada a funciones en Respuestas
Streaming, estado de conversación, herramientas, caché o Batch API de Respuestas

Un enum de Salidas Estructuradas puede devolver una etiqueta. No puede devolver una distribución de probabilidad o un campo confidence a menos que le pida al modelo que lo escriba, y entonces es texto generado, no una probabilidad medida. Decisiones le da números que puede umbralizar. OpenAI le indica que establezca esos umbrales a partir de ejemplos etiquetados en su propia aplicación, sopesando el costo de los falsos positivos frente a los falsos negativos, ya que no se publican cifras de precisión o calibración. ¿Está considerando un segundo proveedor de decisiones tipadas? La comparación Decisiones vs Jev cubre el precio, las entradas y las formas de salida lado a lado.

Imágenes y la advertencia de base64

input acepta mensajes de usuario cuyo contenido mezcla partes input_text e input_image, con un detail opcional de low, high, auto (el predeterminado) u original. La guía dice que las imágenes deben ser URL de datos base64 en línea; las URL alojadas y file_id no son compatibles. La referencia de la API también enumera URL HTTP(S) accesibles públicamente, hasta 128 imágenes por solicitud. Trate base64 como la ruta documentada y pruebe una URL alojada antes de confiar en ella.

Controles de datos

La API de Decisiones es compatible con la retención de datos cero (Zero Data Retention) y el uso HIPAA para clientes elegibles. La residencia de datos y el procesamiento regional son compatibles en Estados Unidos y Europa (EEE más Suiza) a través de us.api.openai.com y eu.api.openai.com. El endpoint es accesible desde todas las regiones de API compatibles, aunque la disponibilidad en una región no implica que la inferencia se ejecute allí. Los registros de monitoreo de abuso se retienen hasta 30 días de forma predeterminada. Si está enrutando mensajes de pacientes, lea primero nuestra guía de cumplimiento de HIPAA para API.

Disponibilidad: beta ahora, disponibilidad general pronto

El endpoint pasó a beta pública para todos los desarrolladores el 06-10-2026 y se encuentra en "Beta APIs" en la referencia. La guía de OpenAI dice que la disponibilidad general (GA) se espera "en las próximas semanas"; no se da una fecha. Los ejemplos de SDK requieren Python 3.26.0, JavaScript 7.30.0, Go 3.73.0, Ruby 0.101.0 o Java 4.78.0 o posterior; la llamada es client.decisions.create(...) en Python y JavaScript. Un Playground en platform.openai.com/decisions le permite probar preguntas antes de escribir código. No se publican límites de velocidad específicos para Decisiones; consulte la página de límites de su organización. No hay un nivel gratuito para Decisiones; para acceso a Luna sin costo, vea nuestra publicación sobre rutas gratuitas de Luna.

Probando llamadas a Decisiones en Apidog

Las respuestas tipadas son fáciles de verificar, que es el objetivo. Tres pasos cubren a la mayoría de los equipos.

Guarde la clave una vez. Ponga OPENAI_API_KEY en una variable de entorno de Apidog y referencie {{OPENAI_API_KEY}} en el encabezado Authorization: Bearer, para que la clave literal nunca llegue a una solicitud compartida.

Guarde una solicitud por tipo de pregunta, con aserciones JSONPath: estado 200, $.answers[0].type igual a choice, $.answers[0].choice igual a billing, $.answers[0].confidence mayor que 0.8, $.answers[?(@.name=='damaged')].probability mayor que 0.9, y $.usage.output_tokens igual a 0, lo que detecta una sorpresa de facturación antes de que lo haga su factura.

Elija umbrales de un conjunto etiquetado. Construya un escenario de prueba en Apidog que ejecute la misma solicitud sobre un CSV de texto de tickets y el departamento esperado, luego establezca el umbral de ruta automática donde el costo de los falsos positivos cruza el costo de la cola de revisión. Ejecútelo en CI con la CLI de Apidog para que un cambio de modelo o alias haga fallar una prueba en lugar de un cliente. La guía práctica cubre cada paso, incluyendo la simulación del array answers para que el frontend pueda construirse antes de que el enrutador sea definitivo.

Preguntas frecuentes

¿Es la API de Decisiones un nuevo modelo? No. Es un endpoint, POST /v1/decisions, que se ejecuta en GPT-6 Luna. Luna se lanzó el 22-09-2026; el endpoint pasó a beta pública el 06-10-2026.

¿Cuánto cuesta la API de Decisiones? $0.10 por 1M de tokens de entrada sin cargos de salida, lectura o escritura de caché. Las entradas de más de 272K tokens cuestan el doble (2x), y el procesamiento regional añade un 10%.

¿Devuelve mi propio esquema JSON? No. Devuelve answers con campos probability, choice o score. Para su propio esquema, use Salidas Estructuradas en la API de Respuestas.

¿Qué tan precisa es? OpenAI no publica cifras de precisión o calibración. Establezca umbrales a partir de sus propios datos etiquetados; un escenario de prueba de LLM basado en datos es la forma práctica.

Por dónde empezar

Elija una decisión de enrutamiento que su aplicación tome hoy con una expresión regular o un bucle de prompt y parseo, escríbala como una sola pregunta de choice con un respaldo other, y ejecútela sobre 50 ejemplos etiquetados. Si la distribución de confianza se separa limpiamente, tiene un umbral y una prueba. Si no, la pregunta necesita criterios más precisos. Para ejecutar ese experimento con solicitudes guardadas y aserciones, descargue Apidog e importe el curl anterior.

button

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs