Prüft, ob die API erreichbar ist und welche Version aktuell aktiv ist. Der einzige Endpunkt ohne Authentifizierung — ideal für einen schnellen Erreichbarkeitscheck.
Beispielantwort
{ "status": "ok", "api_version": "v1" }
Die Ailon Public API gibt Ihnen programmatischen Zugriff auf Projekte, Zielgruppen und Insight-Daten — dieselben Daten, die Ihr Benutzer im Ailon-Dashboard sieht. Sie können Zielgruppen per natürlicher Sprache erzeugen und deren demografische und verhaltensbezogene Merkmale gegen den Bevölkerungsdurchschnitt auswerten.
Sechs Aufrufe genügen, um vom leeren Terminal zu echten Insight-Daten zu kommen. Alle Beispiele nutzen ein Beispielprojekt (public: true) — dort sind Insight-Anfragen unabhängig vom angezeigten credit_cost immer kostenlos.
GET /health/ beantwortet ohne Authentifizierung, ob die API läuft und welche Version aktiv ist.GET /whoami/ bestätigt, welchem Benutzer und welcher Organisation der Key gehört.GET /projects/?public=true liefert Projekte, an denen Sie kostenlos experimentieren können. Merken Sie sich eine id sowie eine ID aus calculated_audience_ids.GET /projects/{project_id}/audiences/ zeigt die berechneten Zielgruppen des Projekts inklusive Segmenten.GET /insights/ listet alle verfügbaren Insights mit id, display_name und credit_cost.GET /insights/{insight_id}/data/?audience_id={audience_id} liefert die eigentlichen Analyse-Daten.Anfragemuster (gilt für alle Endpunkte)
Jeder Endpunkt außer /health/ erwartet denselben Authorization-Header. Ersetzen Sie für andere Endpunkte lediglich Methode, Pfad und ggf. den JSON-Body.
# cURL
curl -s -H "Authorization: Bearer IHR_API_KEY" \
https://dashboard.ailon.io/public-api/v1/whoami/
# Python (requests)
import requests
response = requests.get(
"https://dashboard.ailon.io/public-api/v1/whoami/",
headers={"Authorization": "Bearer IHR_API_KEY"},
timeout=30,
)
response.raise_for_status()
print(response.json())
// JavaScript (fetch)
const response = await fetch("https://dashboard.ailon.io/public-api/v1/whoami/", {
headers: { Authorization: "Bearer IHR_API_KEY" },
});
console.log(await response.json());
POST-Anfragen senden zusätzlich Content-Type: application/json und einen JSON-Body per -d (cURL), json= (Python) bzw. body: JSON.stringify(...) (JavaScript). Der jeweilige Body ist bei den einzelnen Endpunkten dokumentiert.
Kompakte, maschinenlesbare Zusammenfassung für LLM-gestützte Tools (Claude, ChatGPT, Copilot u. ä.), die diese API als Function-Calling-Tool oder per Browser-Zugriff nutzen. Eine reine Textversion dieser Seite steht zusätzlich unter /llms.txt bereit.
base_url: https://dashboard.ailon.io/public-api/v1/ auth: Header Authorization: Bearer <ailpk_...> # bei allen Endpunkten außer /health/ format: application/json no_auth_endpoint: GET /health/ free_tier: Zielgruppen in Projekten mit "public": true → alle Insight-/Summary-Anfragen kostenlos pagination: Query-Parameter limit + offset; Antwort enthält items, count, limit, offset errors: 401 ungültiger Key · 402 zu wenig Credits · 403 kein Zugriff/Beispielprojekt read-only 404 nicht gefunden · 503 Zielgruppe wird noch berechnet # Empfohlener Ablauf für Agenten: GET /health/ # Erreichbarkeit prüfen, kein Auth nötig GET /whoami/ # Key validieren GET /projects/?public=true # kostenloses Beispielprojekt finden GET /projects/{project_id}/audiences/ # berechnete audience_id ermitteln GET /insights/ # insight_id + credit_cost ermitteln GET /insights/{insight_id}/data/?audience_id=... # Analyse-Daten abrufen; ggf. bei status=CALCULATING erneut abfragen
Vollständige Endpunkt-Tabelle
| Methode | Pfad | Zweck | Auth | Credits |
|---|---|---|---|---|
| GET | /health/ | Erreichbarkeit & API-Version | Nein | — |
| GET | /whoami/ | Key-Identität prüfen | Ja | — |
| GET | /projects/ | Sichtbare Projekte listen | Ja | — |
| POST | /projects/ | Projekt anlegen | Ja | — |
| GET | /projects/{id}/ | Ein Projekt abrufen | Ja | — |
| POST | /projects/{id}/generate_audience/ | Zielgruppe aus Freitext erzeugen | Ja | Nicht in Beispielprojekten |
| GET | /projects/{id}/audiences/ | Zielgruppen eines Projekts listen | Ja | — |
| GET | /projects/{id}/audiences/{aid}/ | Eine Zielgruppe abrufen | Ja | — |
| GET | /projects/{id}/audiences/{aid}/potential/ | Zielgruppengröße (relativ/absolut) | Ja | — |
| GET | /projects/{id}/audiences/{aid}/summary/ | KI-generierte Zusammenfassung | Ja | frei in Beispielprojekten |
| GET | /insights/ | Verfügbare Insights listen | Ja | — |
| GET | /insights/{id}/data/ | Insight-Daten für Zielgruppe | Ja | frei in Beispielprojekten |
| GET | /insights/{id}/credit-cost/ | Kosten vorab prüfen | Ja | — |
| GET | /insights/{id}/features/ | Merkmale eines Insights listen | Ja | — |
| GET | /insights/{id}/features/{fid}/ | Ein Merkmal im Detail | Ja | — |
| GET | /usage/ | Nutzungs-Zusammenfassung | Ja | — |
| GET | /usage/credit-limit/ | Guthaben & Überziehungslimit | Ja | — |
| GET | /usage/requests/ | Anfragen-Protokoll | Ja | — |
| GET | /usage/ledger/ | Credit-Buchungen | Ja | — |
| GET | /usage/keys/ | Eigene API-Keys listen | Ja | — |
Jede Anfrage außer GET /health/ benötigt folgenden Header:
Authorization: Bearer ailpk_….IhrGeheimerTeilDer Key ist benutzerbezogen: Sichtbar sind ausschließlich Projekte und Zielgruppen, auf die dieser Benutzer im Dashboard Zugriff hat. Ein ungültiger oder fehlender Key führt zu 401 Unauthorized.
API-Key erhalten: Keys werden derzeit nicht im Dashboard selbst erzeugt. Wenden Sie sich an Ailon, um einen Key für Ihren Benutzer zu erhalten. Der Präfix (api_key_prefix aus /whoami/) dient nur der Zuordnung und ist nicht geheim — der vollständige Key wird separat sicher übermittelt.
Projekte mit dem Feld "public": true sind Beispielprojekte (im Dashboard: Demo-Projekte). Finden lassen sie sich über GET /projects/?public=true.
Kostenlos: Alle Anfragen an Zielgruppen in Beispielprojekten sind gebührenfrei — auch Insight-Daten (/insights/{id}/data/) und Zielgruppen-Zusammenfassungen (.../summary/), unabhängig vom angezeigten credit_cost.
Ausnahme: POST /projects/{project_id}/generate_audience/ funktioniert nicht für Beispielprojekte — es können dort keine neuen Zielgruppen angelegt werden, auch wenn das Projekt sichtbar und lesbar ist.
Für Einstieg und Experimente mit Insights empfiehlt sich daher ein Beispielprojekt mit bereits berechneten Zielgruppen (Feld calculated_audience_ids). In eigenen Projekten (public: false) können credit-pflichtige Endpunkte das Guthaben belasten — Details dazu im nächsten Abschnitt.
Gilt ausschließlich für Zielgruppen in eigenen Projekten — Beispielprojekte sind immer kostenlos.
credit_cost bei GET /insights/.status: SUCCESS) — Zwischenstände (CALCULATING) sind kostenlos.min_balance) ist über GET /usage/credit-limit/ einsehbar.402 Payment Required.curl -s -H "Authorization: Bearer IHR_API_KEY" \
https://dashboard.ailon.io/public-api/v1/usage/
Listen-Endpunkte (/projects/, /projects/{id}/audiences/, /usage/requests/, /usage/ledger/) akzeptieren limit und offset und antworten in diesem Format:
{
"items": [ … ],
"count": 250,
"limit": 100,
"offset": 0
}Weitere Seiten laden: offset so lange erhöhen, bis offset + len(items) >= count.
Prüft, ob die API erreichbar ist und welche Version aktuell aktiv ist. Der einzige Endpunkt ohne Authentifizierung — ideal für einen schnellen Erreichbarkeitscheck.
Beispielantwort
{ "status": "ok", "api_version": "v1" }Bestätigt, dass der API-Key gültig ist, und zeigt, welchem Benutzer er gehört. Empfohlen als erster authentifizierter Aufruf.
Beispielantwort
{
"user_id": 42,
"username": "max.mustermann",
"organisation_id": 7,
"organisation_name": "Beispiel GmbH",
"api_key_name": "Produktion",
"api_key_prefix": "ailpk_abc123"
}Projekte enthalten Zielgruppen (Audiences) und deren Segmente. Norm-Zielgruppen werden in den Listen nicht mitgeliefert.
Listet alle Projekte, die der API-Key-Benutzer im Dashboard sehen darf — inklusive organisationsweiter Projekte und Projekte mit eingeschränktem Zugriff, in denen der Benutzer Mitglied ist.
| Parameter | In | Typ | Beschreibung |
|---|---|---|---|
public | query | boolean | true = nur Beispielprojekte, false = nur eigene/Organisationsprojekte, weglassen = alle sichtbaren |
limit | query | integer | Standard 100, max. 1000 |
offset | query | integer | Standard 0 |
curl -s -H "Authorization: Bearer IHR_API_KEY" \
"https://dashboard.ailon.io/public-api/v1/projects/?public=true&limit=10"
Legt ein neues Projekt an: privat, wenn organisation_id weggelassen wird oder null ist, sonst organisationsweit für die passende Organisation.
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
name | string (1–100 Zeichen) | Ja | Projektname |
description | string / null | Nein | Optionale Beschreibung |
organisation_id | integer / null | Nein | Ziel-Organisation; weglassen = privates Projekt |
curl -s -X POST -H "Authorization: Bearer IHR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Sommerkampagne 2026", "description": "Neuprodukt-Launch"}' \
https://dashboard.ailon.io/public-api/v1/projects/
Liefert ein einzelnes Projekt inklusive der IDs seiner Top-Level-Zielgruppen.
| Parameter | In | Typ |
|---|---|---|
project_id | path | integer |
Erzeugt eine Zielgruppe per natürlicher Sprache: legt sie im Projekt an, lässt den KI-Recommender über den Prompt laufen, übernimmt die generierte Definition und startet die Dashboard-Berechnung. Erfordert Bearbeitungsrecht am Projekt und funktioniert nicht für Beispielprojekte (public: true). Die Zielgruppe wird sofort mit Status Wird berechnet. zurückgegeben, während Generierung und Berechnung asynchron laufen.
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
name | string (1–100 Zeichen) | Ja | Name der Zielgruppe |
prompt | string | Ja | Freitext-Beschreibung, aus der die Definition generiert wird |
curl -s -X POST -H "Authorization: Bearer IHR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Tech-affine Millennials", "prompt": "25-40 Jahre, hohe Online-Affinität"}' \
https://dashboard.ailon.io/public-api/v1/projects/PROJECT_ID/generate_audience/
Status per GET /projects/{project_id}/audiences/{audience_id}/ pollen, bis status den Wert Berechnet annimmt.
Listet die Top-Level-Zielgruppen eines Projekts inklusive ihrer Segmente. Norm-Zielgruppen sind ausgeschlossen.
| Parameter | In | Typ | Beschreibung |
|---|---|---|---|
project_id | path | integer | — |
limit | query | integer | Standard 100, max. 1000 |
offset | query | integer | Standard 0 |
Liefert Metadaten für eine einzelne Zielgruppe innerhalb des angegebenen Projekts — u. a. den aktuellen status, hilfreich beim Polling nach generate_audience.
Gibt zurück, wie groß die Zielgruppe relativ zum Projekt-Universum ist (potential_relative, Wert zwischen 0 und 1) sowie in absoluten Zahlen (potential_absolute).
{ "potential_relative": 0.184, "potential_absolute": 1284000 }Gibt die KI-generierte Überblicks-Zusammenfassung einer Zielgruppe als Liste von Absätzen zurück. Kostet bei Erfolg ein Credit — in Beispielprojekten kostenlos. Die Zielgruppe muss vollständig berechnet sein, sonst schlägt die Anfrage fehl.
[
{ "type": "paragraph", "data": "Diese Zielgruppe zeichnet sich durch …" }
]Insights sind vordefinierte Analysen (z. B. demografische oder verhaltensbezogene Merkmale), die auf eine berechnete Zielgruppe angewendet werden.
Listet jedes für die aktuelle API-Version veröffentlichte Insight, inklusive der Credits, die bei erfolgreicher Datenabfrage berechnet werden.
[
{ "id": 1, "display_name": "Alter", "description": "…", "credit_cost": "2.00" }
]Berechnet oder liefert zwischengespeicherte Insight-Daten für die angegebene Zielgruppe. Credits werden vor der Berechnung reserviert und nur bei status: SUCCESS abgebucht. Zielgruppen in Beispielprojekten werden nie belastet.
| Parameter | In | Typ | Pflicht |
|---|---|---|---|
insight_id | path | integer | Ja |
audience_id | query | integer | Ja |
Statuswerte
| Status | Bedeutung |
|---|---|
SUCCESS | Daten stehen in data; ggf. Credits abgebucht |
CALCULATING | Noch in Berechnung — später erneut anfragen, kostenlos |
ERROR | Fehlgeschlagen — Details in error und error_code |
curl -s -H "Authorization: Bearer IHR_API_KEY" \
"https://dashboard.ailon.io/public-api/v1/insights/INSIGHT_ID/data/?audience_id=AUDIENCE_ID"
Beispielantwort (Feature mit Optionen, z. B. Altersgruppen)
{
"insight_id": 1, "audience_id": 55, "status": "SUCCESS", "error": null, "error_code": null,
"data": [
{
"feature": { "id": 3, "display_name": "Alter" },
"options": [
{ "option": { "id": 31, "display_name": "25-34" },
"index_value": 142.0, "mean_pop": 0.18, "mean_audience": 0.26, "abs_audience": 331000 }
]
}
]
}Gibt zurück, wie viele Credits eine erfolgreiche Insight-Datenabfrage für diese Zielgruppe kosten würde — sinnvoll, um Kosten vor der eigentlichen Abfrage zu prüfen. Für Zielgruppen in Beispielprojekten immer 0.
| Parameter | In | Typ | Pflicht |
|---|---|---|---|
insight_id | path | integer | Ja |
audience_id | query | integer | Ja |
Listet die demografischen oder verhaltensbezogenen Merkmale, aus denen ein Insight besteht, inklusive wählbarer Optionen pro Merkmal.
Liefert die vollständigen Metadaten für ein einzelnes Merkmal, inklusive Beschreibung und wählbaren Optionen.
Aggregiertes Guthaben und Anfrage-Statistiken für ein gleitendes Zeitfenster.
| Parameter | In | Typ | Beschreibung |
|---|---|---|---|
days | query | integer | Standard 30, zwischen 1 und 365 |
Aktuelles Guthaben und konfiguriertes Mindestguthaben (Überziehungslimit). Das Mindestguthaben wird von Ailon verwaltet und lässt sich nicht per API ändern.
Paginiertes Protokoll aller API-Anfragen inklusive Statuscodes, abgebuchten Credits und Fehlercodes fehlgeschlagener Aufrufe.
| Parameter | In | Typ | Beschreibung |
|---|---|---|---|
limit | query | integer | Standard 50, max. 200 |
offset | query | integer | Standard 0 |
Paginierte Credit-Buchungen: Aufladungen, Abbuchungen und Anpassungen. Einträge verweisen bei Bedarf auf die auslösende Anfrage.
| Parameter | In | Typ | Beschreibung |
|---|---|---|---|
limit | query | integer | Standard 50, max. 200 |
offset | query | integer | Standard 0 |
Metadaten zu jedem API-Key des authentifizierten Benutzers. Keys werden von Ailon bereitgestellt; geheime Werte werden nie zurückgegeben, nur der öffentliche Präfix.
Zielgruppen-Status (Dashboard → API)
| Dashboard-Status | Bedeutung für die API |
|---|---|
Wird berechnet. | Asynchrone Erzeugung oder Berechnung läuft |
Berechnet / Berechnet. | Bereit für Insight-Abfragen |
Berechnung fehlgeschlagen | Erzeugung oder Berechnung fehlgeschlagen |
HTTP-Fehlercodes
| HTTP | Beispiel error_code | Bedeutung |
|---|---|---|
401 | — | Ungültiger API-Key |
402 | insufficient_credits | Guthaben reicht nicht aus |
403 | example_project_readonly, project_not_editable | Beispielprojekt oder fehlende Berechtigung |
404 | project_not_found | Nicht sichtbar oder existiert nicht |
503 | audience_calculating | Zielgruppe wird noch berechnet |
Häufige Insight-error_codes
| Code | Bedeutung |
|---|---|
audience_not_calculated | Zielgruppe noch nicht berechnet |
audience_outdated | Veraltete Definition |
segments_excluded | Insight unterstützt keine Segmente |
calculation_failed | Interne Berechnung fehlgeschlagen |
Fehlercodes aller Anfragen lassen sich zusätzlich über GET /usage/requests/ nachvollziehen.
Feldreferenz der wichtigsten Antwort- und Body-Schemas. Klappen Sie ein Modell auf, um alle Felder mit Typ und Beschreibung zu sehen.
| Feld | Typ | Beschreibung |
|---|---|---|
id | integer | — |
name | string | — |
description | string / null | — |
public | boolean | Beispielprojekt ja/nein; Insight-Anfragen dafür sind kostenlos, Zielgruppen können nicht per API hinzugefügt werden |
updated | date-time | — |
audience_ids | integer[] | IDs der Top-Level-Zielgruppen |
calculated_audience_ids | integer[] | IDs der Top-Level-Zielgruppen mit Status „berechnet“ |
segments | object | Segment-IDs gruppiert nach übergeordneter Zielgruppen-ID |
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
name | string (1–100) | Ja | Projektname |
description | string / null | Nein | — |
organisation_id | integer / null | Nein | Weglassen/null = privates Projekt |
| Feld | Typ | Beschreibung |
|---|---|---|
id | integer | — |
name | string | — |
description | string / null | — |
status | string / null | Siehe Tabelle „Zielgruppen-Status“ |
updated_at | date-time / null | — |
segments | AudienceSchema[] | Untergeordnete Zielgruppen (Segmente) |
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
name | string (1–100) | Ja | Name der Zielgruppe |
prompt | string | Ja | Freitext, aus dem die Definition generiert wird |
| Feld | Typ | Beschreibung |
|---|---|---|
potential_relative | number | Größe relativ zum Projekt-Universum (0–1) |
potential_absolute | integer | Geschätzte Größe im Projekt-Universum |
| Feld | Typ | Beschreibung |
|---|---|---|
type | string, konstant "paragraph" | — |
data | string | Text des Absatzes |
| Feld | Typ | Beschreibung |
|---|---|---|
id | integer | Als insight_id in anderen Endpunkten verwenden |
display_name | string | — |
description | string | Öffentliche Beschreibung |
credit_cost | string | Credits pro erfolgreicher Datenabfrage |
| Feld | Typ | Beschreibung |
|---|---|---|
insight_id | integer | — |
audience_id | integer | — |
status | SUCCESS / CALCULATING / ERROR | Berechnungsstatus |
error | string / null | Erklärung, wenn status = ERROR |
error_code | string / null | Maschinenlesbarer Fehlercode |
data | InsightFeatureDataSchema[] / object / null | Payload bei SUCCESS. Standard-Insights liefern eine Liste von Merkmalen mit verschachtelten options; abweichende Insights liefern das rohe Widget-Objekt |
| Feld | Typ | Beschreibung |
|---|---|---|
feature | { id, display_name } | Referenz auf das Merkmal |
option | { id, display_name } | Nur in InsightFeatureOptionDataSchema: Referenz auf die Wertoption |
index_value | number / null | Über- (>100) bzw. Unterrepräsentation (<100) gegenüber der Bevölkerung |
mean_pop | number / null | Mittelwert in der Gesamtbevölkerung; gesetzt, wenn das Merkmal keine Optionen hat |
mean_audience | number / null | Mittelwert in der Zielgruppe (z. B. Durchschnittsalter) |
mean_audience_in_feature | number / null | — |
abs_audience | integer / null | Absolute Anzahl in der Zielgruppe |
effect_value | number / null | — |
options | InsightFeatureOptionDataSchema[] | Nur bei Merkmalen mit Wertbändern; pro Option dieselben Metrikfelder |
| Feld | Typ | Beschreibung |
|---|---|---|
insight_id | integer | — |
audience_id | integer | — |
credit_cost | string | 0 für Zielgruppen in Beispielprojekten |
| Feld | Typ | Beschreibung |
|---|---|---|
id | integer | — |
display_name | string / null | — |
display_name_category | string / null | — |
description | string | Nur im Detail-Schema |
logo_or_icon | string / null | Nur im Detail-Schema |
options[].id | integer | — |
options[].display_name | string | — |
options[].lower_border / upper_border | number / null | Grenzen des Wertbands |
| Feld | Typ | Beschreibung |
|---|---|---|
balance | string | Aktuelles Guthaben |
min_balance | string | 0 deaktiviert Überziehung; negative Werte erlauben ein Minus bis zu diesem Limit |
period_days | integer | Länge des Zusammenfassungs-Zeitfensters |
request_count | integer | — |
credits_used | string | Insgesamt abgebuchte Credits im Zeitfenster |
successful_requests | integer | — |
failed_requests | integer | — |
| Feld | Typ | Beschreibung |
|---|---|---|
balance | string | — |
min_balance | string | Von Ailon konfiguriertes Überziehungslimit |
| Feld | Typ | Beschreibung |
|---|---|---|
request_id | uuid | — |
api_key_prefix | string / null | — |
method | string | — |
path | string | — |
status_code | integer | — |
credits_charged | string | — |
duration_ms | integer / null | — |
error_code | string | Leer bei Erfolg |
created_at | date-time | — |
| Feld | Typ | Beschreibung |
|---|---|---|
id | integer | — |
amount | string | Positiv bei Aufladung, negativ bei Abbuchung |
balance_after | string | — |
reason | string | — |
note | string | — |
request_id | uuid / null | Auslösende Anfrage, falls zutreffend |
created_at | date-time | — |
| Feld | Typ | Beschreibung |
|---|---|---|
id | integer | — |
name | string | — |
prefix | string | Öffentlicher Präfix, nicht geheim |
is_active | boolean | — |
last_used_at | date-time / null | — |
created_at | date-time | — |
| Feld | Typ | Beschreibung |
|---|---|---|
status | string | Immer "ok", wenn erreichbar |
api_version | string | Aktiver Versions-Slug, z. B. v1 |
user_id | integer | — |
username | string | — |
organisation_id | integer / null | — |
organisation_name | string / null | — |
api_key_name | string | Beim Erstellen des Keys vergebenes Label |
api_key_prefix | string | Öffentlicher Teil des Keys vor dem Geheimteil |