Saltar al contenido
Jev

Desarrolladores

Cómo usar la API Jev alojada

Un endpoint: envía state y questions tipadas, recibe respuestas estructuradas. Auth con jv_live_ de este sitio — tokens de entrada prepago, salida gratis. Las claves TypeSafe upstream quedan en nuestros servidores.

1. El endpoint

Cada llamada es un POST a https://jevtypesafe.org/api/v1/decide, con Bearer. Pon la clave en JEV_API_KEY (nunca la subas al repo).

curl
curl https://jevtypesafe.org/api/v1/decide \
  -H "Authorization: Bearer $JEV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "state": "Customer: I was charged twice and nobody has replied for 3 days.",
    "questions": {
      "route": {
        "type": "choice",
        "instructions": "Where should this go?",
        "criteria": { "billing": "money", "bug": "broken", "account": "login" }
      },
      "urgency": {
        "type": "score",
        "instructions": "How urgent is this?",
        "criteria": ["routine", "today", "urgent", "critical"]
      },
      "escalate": {
        "type": "noul",
        "instructions": "Escalate to a human now?"
      }
    }
  }'

Prueba tu clave — ejecuta esta misma petición contra el endpoint en vivo, una vez:

Envía la petición a https://jevtypesafe.org/api/v1/decide con tu clave y cobra una decisión pequeña (≈ $0.0004 media). La clave no sale del navegador. En producción, guárdala en el servidor.

2. Cuerpo de la petición

Dos campos obligatorios:

3. Los tres tipos de pregunta

choice — elegir una opción

Pasa un mapa criteria etiquetado. La respuesta incluye la clave ganadora, probabilidades y confianza.

choice
"topic": {
  "type": "choice",
  "instructions": "What is the primary issue?",
  "criteria": {
    "billing": "billing or payment problem",
    "bug": "the product is broken",
    "account": "login or access"
  }
}

score — posición en una escala

Pasa un array criteria ordenado (2–10 niveles). Devuelve score numérico y distribución.

score
"severity": {
  "type": "score",
  "instructions": "How urgent is this?",
  "criteria": [
    "routine",
    "handle today",
    "urgent",
    "critical, about to churn"
  ]
}

noul — sí/no calibrado

Sin criteria — solo instructions. Probabilidad en [0, 1].

noul
"escalate": {
  "type": "noul",
  "instructions": "Escalate to a human immediately?"
}

4. La respuesta

Respuestas tipadas: ramifica en código sin parsear JSON en strings. Forma ejemplo:

response
{
  "model": "jev-latest",
  "answers": {
    "route": {
      "type": "choice",
      "choice": "billing",
      "confidence": 1.0,
      "probabilities": { "billing": 1.0, "bug": 0.0, "account": 0.0 }
    },
    "urgency": {
      "type": "score",
      "score": 2.0,
      "confidence": 0.9,
      "probabilities": { "0": 0.05, "1": 0.1, "2": 0.7, "3": 0.15 }
    },
    "escalate": { "type": "noul", "noul": 0.72 }
  },
  "usage": { "input_tokens": 180, "output_tokens": 40 }
}

usage.input_tokens se descuenta del saldo prepago. Los tokens de salida son gratis.

5. Límites y prácticas

Acceso al instante

Inicia sesión, compra un pack en Precios, crea jv_live_ en Cuenta y llama a este endpoint. Un saldo para Core decide y todas las tools.