Cualquier modelo puede generar SAS. Sin una forma de ejecutarlo, nadie sabe si funciona. La Run API abierta de Jenner le da al agente la otra mitad del ciclo: ejecutar el programa, leer la salida y los errores reales, corregirlo y volver a ejecutarlo, sin licencia de SAS y sin instalación local.
El acceso anónimo funciona sin ninguna clave de API.
Un asistente que escribe SAS y se detiene ahí le entrega algo que parece correcto. Si la macro se resuelve, si el merge recoge las variables que esperaba, si PROC MEANS devuelve 19 filas o 0: nada de eso se puede saber hasta que el programa se ejecuta.
Históricamente, ejecutarlo exigía una licencia de SAS y una instalación, que es justo lo que un agente no tiene. La Run API elimina esa restricción: una sola llamada HTTP ejecuta el código y devuelve resultados estructurados sobre los que el modelo sí puede razonar.
Generar, comprobar, ejecutar, iterar: todo legible por máquinas.
El modelo escribe SAS: un paso DATA, un PROC, una macro. No hace falta nada especial: Jenner acepta sintaxis SAS estándar, así que el código que un asistente ya sabe escribir es el código que se ejecuta.
Envíe el script por POST a /v1/validate para una pasada solo de análisis. Los diagnósticos se devuelven sin ejecutar nada, así que un agente puede detectar un error de sintaxis antes de gastar una ejecución en él.
Envíe por POST a /v1/run el script y las entradas CSV o Parquet que necesite. Jenner lo ejecuta en un contenedor aislado y devuelve la salida del listado, el log de NOTE/WARNING/ERROR, un código de salida y todos los conjuntos de datos y archivos que ha generado el programa.
El log y los diagnósticos son información estructurada, no una captura de pantalla. El agente lee el error real, corrige la línea real y vuelve a ejecutar, cerrando el ciclo sin ninguna persona por medio.
Peticiones reales contra la API pública. Sin clave y sin configuración.
curl -X POST https://api.jenneranalytics.com/v1/quick \
--data-binary @analysis.sas The MEANS Procedure
Variable N Mean Std Dev
-----------------------------------------------
bmi 19 17.8420103 1.4625169
-----------------------------------------------A este fragmento le falta un punto y coma. Una llamada solo de análisis nombra el problema para que el agente pueda corregirlo y seguir.
data demo;
set sashelp.class /* <- missing semicolon */
bmi = weight / (height**2) * 703;
run;{
"valid": false,
"diagnostics": [
{ "severity": "error",
"message": "Unexpected token: Eq, expected Semi" }
]
}Una ejecución completa devuelve el listado, el log, un código de salida y todos los conjuntos de datos que ha generado el programa, con el número de filas, para que el agente pueda comprobar que ha obtenido datos en lugar de suponerlo.
{
"run_id": "r_c8679761197f4f9d8a3bc021...",
"status": "ok",
"exit_code": 0,
"output": "...formatted listing tables...",
"log": "NOTE: PROC MEANS statement used.",
"datasets": [ { "name": "demo", "row_count": 19 } ],
"files": [],
"diagnostics": [],
"duration_ms": 412,
"jenner_version": "..."
}URL base https://api.jenneranalytics.com/v1
| Endpoint | Finalidad |
|---|---|
POST/v1/run | Ejecuta un script con datos de entrada opcionales. Devuelve la salida, el log, el código de salida, los conjuntos de datos, los archivos y los diagnósticos en JSON. |
POST/v1/run/stream | Igual que /v1/run, pero transmitido como Server-Sent Events para que el log llegue mientras el programa sigue ejecutándose. |
POST/v1/quick | Comodidad en una sola línea. Se envía el script en bruto y se recibe el listado en texto plano: la forma más rápida de responder a «¿funciona este SAS?» |
POST/v1/validate | Comprobación de sintaxis, solo análisis. Devuelve diagnósticos sin ejecutar nada. Las macros no se expanden, así que trate los fallos con muchas macros como orientativos. |
GET/v1/run/{run_id} | Obtiene una ejecución finalizada, sus archivos o la vista previa o descarga de un conjunto de datos. Los resultados viven una hora y requieren el token de acceso de la ejecución. |
Empiece sin clave. Añada una cuando necesite más margen.
| Nivel | Autenticación | Límite de peticiones | Tiempo de espera |
|---|---|---|---|
| Anónimo | No se necesita clave | 1.000 solicitudes/h por IP | 30 segundos |
| Free | Registro con correo | 1.500 solicitudes/h | 60 segundos |
| Pro | Clave de API | 10.000 solicitudes/h | 5 minutos |
| Enterprise | Clave de API | Personalizado | Personalizado |
Detrás de todos ellos está el mismo motor de ejecución, así que el código que un agente ha validado con la API se comporta igual cuando lo abre una persona.
No hace falta ninguna clave para empezar. Ni licencia de SAS, nunca.