Jedes Modell kann SAS erzeugen. Ohne eine Möglichkeit, es auszuführen, weiß niemand, ob es funktioniert. Die offene Run API von Jenner gibt einem Agenten die andere Hälfte des Kreislaufs: Programm ausführen, echte Ausgaben und echte Fehler lesen, korrigieren, erneut ausführen – ohne SAS-Lizenz, ohne lokale Installation.
Der anonyme Zugang funktioniert ganz ohne API-Schlüssel.
Ein Assistent, der SAS schreibt und dort aufhört, liefert Ihnen etwas, das richtig aussieht. Ob das Makro aufgelöst wird, ob der Merge die erwarteten Variablen übernimmt, ob PROC MEANS 19 Zeilen zurückgibt oder 0 – nichts davon lässt sich wissen, bevor das Programm läuft.
Historisch bedeutete das Ausführen eine SAS-Lizenz und eine Installation – genau das, was ein Agent nicht hat. Die Run API hebt diese Einschränkung auf: Ein einziger HTTP-Aufruf führt den Code aus und liefert strukturierte Ergebnisse zurück, mit denen das Modell tatsächlich arbeiten kann.
Generieren, prüfen, ausführen, iterieren – alles maschinenlesbar.
Das Modell schreibt SAS – einen DATA-Step, eine PROC, ein Makro. Nichts Besonderes nötig: Jenner akzeptiert Standard-SAS-Syntax, also läuft genau der Code, den ein Assistent ohnehin schreiben kann.
Senden Sie das Skript per POST an /v1/validate für einen reinen Parse-Durchlauf. Die Diagnosen kommen zurück, ohne dass etwas ausgeführt wird – so erkennt ein Agent einen Syntaxfehler, bevor er einen Lauf dafür verbraucht.
Senden Sie per POST an /v1/run das Skript und beliebige CSV- oder Parquet-Eingaben. Jenner führt es in einem isolierten Container aus und liefert die Listing-Ausgabe, das NOTE/WARNING/ERROR-Log, einen Exit-Code sowie jedes Dataset und jede Datei zurück, die das Programm erzeugt hat.
Das Log und die Diagnosen sind strukturiertes Feedback, kein Screenshot. Der Agent liest den tatsächlichen Fehler, korrigiert die tatsächliche Zeile und führt erneut aus – der Kreislauf schließt sich ohne Menschen dazwischen.
Echte Anfragen an die öffentliche API. Kein Schlüssel, keine Einrichtung.
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
-----------------------------------------------In diesem Snippet fehlt ein Semikolon. Ein reiner Parse-Aufruf benennt das Problem, sodass der Agent es beheben und weitermachen kann.
data demo;
set sashelp.class /* <- missing semicolon */
bmi = weight / (height**2) * 703;
run;{
"valid": false,
"diagnostics": [
{ "severity": "error",
"message": "Unexpected token: Eq, expected Semi" }
]
}Ein vollständiger Lauf liefert das Listing, das Log, einen Exit-Code und jedes Dataset, das das Programm erzeugt hat – samt Zeilenzahlen, damit der Agent prüfen kann, ob er wirklich Daten erhalten hat, statt es anzunehmen.
{
"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": "..."
}Basis-URL https://api.jenneranalytics.com/v1
| Endpunkt | Zweck |
|---|---|
POST/v1/run | Führt ein Skript mit optionalen Dateneingaben aus. Liefert Ausgabe, Log, Exit-Code, Datasets, Dateien und Diagnosen als JSON. |
POST/v1/run/stream | Wie /v1/run, aber als Server-Sent Events gestreamt, sodass das Log schon eintrifft, während das Programm noch läuft. |
POST/v1/quick | Praktischer Einzeiler. Rohes Skript rein, Listing als Klartext zurück – der schnellste Weg zur Antwort auf „Funktioniert dieses SAS?“ |
POST/v1/validate | Reine Syntaxprüfung. Liefert Diagnosen, ohne auszuführen. Makros werden nicht expandiert – behandeln Sie Fehler bei makrolastigem Code daher als Hinweis. |
GET/v1/run/{run_id} | Ruft einen abgeschlossenen Lauf, seine Dateien oder eine Dataset-Vorschau bzw. einen Download ab. Ergebnisse bleiben eine Stunde verfügbar und erfordern das Zugriffstoken des Laufs. |
Starten Sie ohne Schlüssel. Fügen Sie einen hinzu, wenn Sie mehr Spielraum brauchen.
| Stufe | Authentifizierung | Ratenbegrenzung | Timeout |
|---|---|---|---|
| Anonym | Kein Schlüssel erforderlich | 1.000 Anfragen/Std. pro IP | 30 Sekunden |
| Free | E-Mail-Registrierung | 1.500 Anfragen/Std. | 60 Sekunden |
| Pro | API-Schlüssel | 10.000 Anfragen/Std. | 5 Minuten |
| Enterprise | API-Schlüssel | Individuell | Individuell |
Hinter allen steht dieselbe Ausführungs-Engine: Code, den ein Agent über die API validiert hat, verhält sich genauso, wenn eine Person ihn öffnet.
Kein Schlüssel nötig zum Start. Und nie eine SAS-Lizenz.