REST API
Verwalte Experiments und lies Results programmatisch mit der ABlyft REST API aus.
Mit der REST API können Skripte und andere Systeme mit ABlyft arbeiten: Projects und Experiments auflisten, Experiments anlegen oder ändern, starten und pausieren sowie Results auslesen. Requests und Responses verwenden JSON.
Die Base-URL ist https://app.ablyft.com/api. Eine vollständige, interaktive Reference aller Endpoints mit ihren Parametern findest du unter
https://app.ablyft.com/docs/api.
Authentication
Jeder Request braucht ein API token im Authorization-Header:
Authorization: Bearer YOUR_TOKEN
Accept: application/jsonEin Token erstellen
-
Öffne deine persönlichen Einstellungen und gehe zu API Tokens.
-
Klicke auf Create token.
-
Gib einen Name ein (wird in deiner Token-Liste angezeigt) und wähle die Permissions:
Permission Erlaubt Read only Daten lesen ( GET-Requests)Read & write Daten lesen, anlegen, ändern und löschen -
Kopiere das Token aus dem Dialog. Es wird nur einmal angezeigt.
Die Token-Liste zeigt für jedes Token Name, Abilities, wann es zuletzt verwendet und wann es erstellt wurde. Mit Revoke löschst du ein Token. Ein Token läuft nicht von selbst ab.
Ein Token funktioniert für alle Teams, in denen du Mitglied bist, mit den Permissions deiner Rolle im jeweiligen Team, siehe
Rollen & Berechtigungen. Ein Request mit fehlender Ability liefert
403 mit der Meldung "Missing required ability: read" (oder write).
Halte Tokens geheim
Lege ein Token niemals in Frontend-Code oder in einem öffentlichen Repository ab. Siehe Security.
Rate limit
Requests sind pro User und Minute begrenzt. Standardmäßig kann ein User 60 Requests pro Minute senden. Wenn du das Limit überschreitest,
antwortet die API mit dem HTTP-Status 429. Warte einen Moment und versuche es erneut. Kontaktiere den ABlyft-Support, wenn du ein höheres Limit brauchst.
Endpoints
IDs in Pfaden sind numerisch. {project} ist die Project-ID, {experiment} die Experiment-ID.
| Resource | Methode und Pfad | Zweck |
|---|---|---|
| Teams | GET /teams | Teams, zu denen du gehörst |
GET /teams/{team}/projects | Projects eines Teams | |
| Projects | GET /projects/{project} | Ein Project anzeigen |
PUT/PATCH /projects/{project} | name, description, significance, min_conversions, min_runtime_days aktualisieren | |
DELETE /projects/{project} | Ein Project löschen | |
POST /projects/{project}/{model}/find-by-name | Ein Element anhand seines exakten name finden. {model} ist experiments, audiences, pages, goals oder environments | |
| Experiments | GET /projects/{project}/experiments | Experiments auflisten (optional ?variations=lite) |
POST /projects/{project}/experiments | Ein Experiment anlegen | |
GET /projects/{project}/experiments/{experiment} | Ein Experiment anzeigen | |
PUT/PATCH /projects/{project}/experiments/{experiment} | Name, API Name, Beschreibung, Beispiel-URL, Traffic Allocation sowie zugeordnete Audiences, Pages, Goals und Environments aktualisieren | |
DELETE /projects/{project}/experiments/{experiment} | Ein Experiment löschen | |
POST /projects/{project}/experiments/{experiment}/clone | Ein Experiment klonen | |
PATCH /projects/{project}/experiments/{experiment}/status | Den Status ändern | |
PATCH /projects/{project}/experiments/{experiment}/publish | Das Project publishen | |
| Variations | /projects/{project}/experiments/{experiment}/variations | Auflisten, anlegen, anzeigen, aktualisieren, löschen |
| Audiences | /projects/{project}/audiences | Auflisten, anlegen, anzeigen, aktualisieren, löschen |
| Pages | /projects/{project}/pages | Auflisten, anlegen, anzeigen, aktualisieren, löschen |
| Goals | /projects/{project}/goals | Auflisten, anlegen, anzeigen, aktualisieren, löschen |
| Environments | GET /projects/{project}/environments und .../{environment} | Nur lesend |
| Results | GET /projects/{project}/experiments/{experiment}/results | Statistiken pro Goal |
GET .../results/info | Share-Token und Share-URL der Results | |
GET .../results/goal/{goal} | Event-Serie eines Goals | |
GET .../results/goal/{goal}/download | Dasselbe als CSV-Datei |
Für die Standard-Resources (Variations, Audiences, Pages, Goals) gelten die üblichen Methoden: GET zum Auflisten oder Anzeigen, POST zum
Anlegen, PUT/PATCH zum Aktualisieren und DELETE zum Löschen. Anlegen, Aktualisieren und Löschen erfordert ein Read & write-Token und
die Permission deiner Rolle.
Es gibt keinen Endpoint, der alle Projects auf einmal auflistet. Lies zuerst deine Teams und dann die Projects jedes Teams.
Den Status eines Experiments ändern
Sende eines von draft, preview, running, pause oder archive als status:
curl -X PATCH https://app.ablyft.com/api/projects/12345678/experiments/23456789/status \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"status": "running"}'Die Response enthält das aktualisierte Experiment. Stelle sicher, dass das Experiment mindestens eine Variation, Page und ein Goal hat, bevor du es startest, wie in der App, siehe Before you can preview or start.
Die Response reduzieren
Hänge bei Experiment-Requests ?fields=id,name,status an, um nur diese Felder zu erhalten.
Beispiele
Teams und Projects auflisten
curl https://app.ablyft.com/api/teams \
-H "Authorization: Bearer YOUR_TOKEN" -H "Accept: application/json"[
{ "id": 1234, "name": "My company", "created_at": "2025-01-15T09:30:00.000000Z", "updated_at": "2025-06-01T12:00:00.000000Z" }
]curl https://app.ablyft.com/api/teams/1234/projects \
-H "Authorization: Bearer YOUR_TOKEN" -H "Accept: application/json"Die Response listet jedes Project mit Feldern wie id, name, storage, snippet_revision und snippet_version.
Experiments auflisten
curl "https://app.ablyft.com/api/projects/12345678/experiments?fields=id,name,status" \
-H "Authorization: Bearer YOUR_TOKEN" -H "Accept: application/json"[
{ "id": 23456789, "name": "Product page: bigger buy button", "status": "running" }
]Ohne fields enthält jedes Experiment zusätzlich description, example_url, traffic_allocation, audiences_match_type,
tags, js, reset_js, css und die variations.
Results lesen
curl https://app.ablyft.com/api/projects/12345678/experiments/23456789/results \
-H "Authorization: Bearer YOUR_TOKEN" -H "Accept: application/json"Die Response ist eine Liste mit einem Eintrag pro Goal (hier verkürzt). variationStatistics ist nach Variation-ID geschlüsselt:
[
{
"id": 34567890,
"type": "custom",
"name": "Newsletter signup",
"api_name": "newsletter-signup",
"variationStatistics": {
"87654321": { "id": 87654321 }
}
}
]Das Statistik-Objekt jeder Variation enthält Participants, Conversions, Werte und die Signifikanzwerte, die die Results-Seite
anzeigt. Die Felder sind in der interaktiven Reference aufgeführt. Die optionalen Query-Parameter startDate,
endDate und deviceTypes filtern die Results. Hat ein Experiment noch keine Results, antwortet die API mit 404 und
"No result found for this experiment".
Fehler
| Status | Bedeutung |
|---|---|
401 | Fehlendes oder ungültiges Token |
403 | Dem Token fehlt die Ability, oder deine Rolle erlaubt die Aktion nicht |
404 | Das Element existiert nicht, oder du kannst es nicht sehen |
422 | Validierung fehlgeschlagen. Die Response listet die Felder auf |
429 | Rate limit erreicht |