Laissez l'IA exécuter le code SAS, pas seulement l'écrire

N'importe quel modèle sait générer du SAS. Sans moyen de l'exécuter, personne ne sait si le code fonctionne. La Run API ouverte de Jenner donne à l'agent l'autre moitié de la boucle : exécuter le programme, lire les vraies sorties et les vraies erreurs, le corriger, l'exécuter à nouveau — sans licence SAS ni installation locale.

L'accès anonyme fonctionne sans aucune clé API.

Générer le code, c'est la partie facile

Un assistant qui écrit du SAS et s'arrête là vous livre quelque chose qui a l'air correct. La macro se résout-elle ? Le merge récupère-t-il les variables attendues ? PROC MEANS renvoie-t-il 19 lignes ou 0 ? Rien de tout cela n'est vérifiable tant que le programme n'a pas été exécuté.

Historiquement, l'exécuter supposait une licence SAS et une installation — précisément ce dont un agent ne dispose pas. La Run API lève cette contrainte : un seul appel HTTP exécute le code et renvoie des résultats structurés que le modèle peut réellement analyser.

La boucle

Générer, vérifier, exécuter, itérer — le tout lisible par une machine.

1

Générer

Le modèle écrit du SAS — une étape DATA, une PROC, une macro. Rien de particulier à prévoir : Jenner accepte la syntaxe SAS standard, donc le code qu'un assistant sait déjà écrire est celui qui s'exécute.

2

Vérifier

Envoyez le script en POST sur /v1/validate pour une passe d'analyse seule. Les diagnostics reviennent sans rien exécuter : un agent peut donc repérer une erreur de syntaxe avant d'y consacrer une exécution.

3

Exécuter

Envoyez en POST sur /v1/run le script et vos éventuelles entrées CSV ou Parquet. Jenner l'exécute dans un conteneur isolé et renvoie la sortie listing, le log NOTE/WARNING/ERROR, un code de sortie, ainsi que chaque jeu de données et chaque fichier produit par le programme.

4

Itérer

Le log et les diagnostics sont un retour structuré, pas une capture d'écran. L'agent lit l'erreur réelle, corrige la ligne concernée et relance — la boucle se referme sans intervention humaine.

À quoi cela ressemble

De vraies requêtes sur l'API publique. Sans clé, sans configuration.

Exécutez un script, récupérez le listing

Requête
curl -X POST https://api.jenneranalytics.com/v1/quick \
  --data-binary @analysis.sas
Réponse
                          The MEANS Procedure

 Variable        N           Mean        Std Dev
 -----------------------------------------------
 bmi            19     17.8420103      1.4625169
 -----------------------------------------------

Détectez une erreur avant d'y consacrer une exécution

Il manque un point-virgule dans cet extrait. Un appel en analyse seule nomme le problème, l'agent le corrige et poursuit.

SAS incorrect
data demo;
  set sashelp.class      /* <- missing semicolon */
  bmi = weight / (height**2) * 703;
run;
POST /v1/validate
{
  "valid": false,
  "diagnostics": [
    { "severity": "error",
      "message": "Unexpected token: Eq, expected Semi" }
  ]
}

Des résultats que le modèle peut réellement analyser

Une exécution complète renvoie le listing, le log, un code de sortie et chaque jeu de données produit par le programme — avec le nombre de lignes, pour que l'agent puisse vérifier qu'il a bien obtenu des données au lieu de le supposer.

POST /v1/run
{
  "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": "..."
}

Points de terminaison

URL de base https://api.jenneranalytics.com/v1

Point de terminaisonUtilité
POST/v1/runExécute un script avec des données d'entrée facultatives. Renvoie la sortie, le log, le code de sortie, les jeux de données, les fichiers et les diagnostics au format JSON.
POST/v1/run/streamIdentique à /v1/run, diffusé en Server-Sent Events pour que le log arrive pendant l'exécution du programme.
POST/v1/quickLa simplicité en une ligne. Vous envoyez le script brut, vous récupérez le listing en texte simple — le moyen le plus rapide de répondre à « est-ce que ce SAS fonctionne ? »
POST/v1/validateContrôle de syntaxe par analyse seule. Renvoie des diagnostics sans exécution. Les macros ne sont pas développées : traitez les échecs liés aux macros comme indicatifs.
GET/v1/run/{run_id}Récupère une exécution terminée, ses fichiers, ou l'aperçu ou le téléchargement d'un jeu de données. Les résultats sont conservés une heure et nécessitent le jeton d'accès de l'exécution.

Accès

Commencez sans clé. Ajoutez-en une quand vous aurez besoin de marge.

PalierAuthentificationLimite de débitDélai d'expiration
AnonymeAucune clé requise1 000 req/h par IP30 secondes
FreeInscription par e-mail1 500 req/h60 secondes
ProClé API10 000 req/h5 minutes
EnterpriseClé APISur mesureSur mesure

Compatible avec ce que vous utilisez déjà

Vos outils d'IA

  • Claude Code d'Anthropic
  • Claude Desktop
  • Codex d'OpenAI
  • ChatGPT
  • Tout système capable d'envoyer une requête HTTP

Ou depuis Jenner

  • L'espace de travail collaboratif en ligne
  • L'application de bureau macOS
  • Un noyau Jupyter natif

Le même moteur d'exécution les alimente tous : le code qu'un agent a validé via l'API se comporte de la même façon lorsqu'une personne l'ouvre.

Questions fréquentes

Non. Les requêtes anonymes fonctionnent sans aucune clé, avec une limite par IP de 1 000 requêtes par heure et un délai d'exécution de 30 secondes. C'est suffisant pour qu'un agent teste et itère sur du vrai code. Une clé gratuite relève ce plafond, et les clés Pro ou Entreprise le relèvent encore.

Non. L'API exécute le code dans un conteneur isolé sur notre infrastructure. Aucune licence SAS, aucune installation locale, et rien à provisionner dans l'environnement hôte du modèle.

Oui. /v1/run accepte plusieurs fichiers d'entrée aux côtés du script, en CSV ou Parquet. Les jeux de données produits par le programme reviennent avec leur nombre de lignes et des URL d'aperçu ou de téléchargement : l'agent peut donc inspecter les résultats au lieu de les deviner.

Chaque exécution renvoie un code de sortie, le log NOTE/WARNING/ERROR complet et des diagnostics structurés. Les échecs sont explicites et lisibles par une machine : un agent distingue donc un programme qui a fonctionné d'un programme qui a échoué — précisément le signal qui manque à un workflow limité à la génération.

Une heure. Chaque exécution renvoie un jeton d'accès limité à cette exécution ; les points de terminaison GET l'exigent et il est distinct de votre clé API.

Donnez à votre agent le moyen de vérifier son travail

Aucune clé pour commencer. Aucune licence SAS, jamais.