● Public API · v1

Zielgruppen definieren, analysieren, verstehen.

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.

Basis-URL
dashboard.ailon.io/public-api/v1/
Authentifizierung
Authorization: Bearer ailpk_…
Antwortformat
application/json
Beispiel · GET /insights/{id}/data/ → Feature „Alter“, Index gegenüber Bevölkerung (100 = Ø)
18–24 Jahre
76
25–34 Jahre
142
35–44 Jahre
118
45+ Jahre
61
index_value > 100 → in dieser Zielgruppe überrepräsentiert · < 100 → unterrepräsentiert. Illustrative Beispielwerte.

Schnellstart

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.

  1. API erreichbar? GET /health/ beantwortet ohne Authentifizierung, ob die API läuft und welche Version aktiv ist.
  2. API-Key gültig? GET /whoami/ bestätigt, welchem Benutzer und welcher Organisation der Key gehört.
  3. Beispielprojekt wählen. 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.
  4. Zielgruppe prüfen. GET /projects/{project_id}/audiences/ zeigt die berechneten Zielgruppen des Projekts inklusive Segmenten.
  5. Insight auswählen. GET /insights/ listet alle verfügbaren Insights mit id, display_name und credit_cost.
  6. Daten abrufen. 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.

Referenz für KI-Agenten

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.

API-Kurzprofil

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

MethodePfadZweckAuthCredits
GET/health/Erreichbarkeit & API-VersionNein
GET/whoami/Key-Identität prüfenJa
GET/projects/Sichtbare Projekte listenJa
POST/projects/Projekt anlegenJa
GET/projects/{id}/Ein Projekt abrufenJa
POST/projects/{id}/generate_audience/Zielgruppe aus Freitext erzeugenJaNicht in Beispielprojekten
GET/projects/{id}/audiences/Zielgruppen eines Projekts listenJa
GET/projects/{id}/audiences/{aid}/Eine Zielgruppe abrufenJa
GET/projects/{id}/audiences/{aid}/potential/Zielgruppengröße (relativ/absolut)Ja
GET/projects/{id}/audiences/{aid}/summary/KI-generierte ZusammenfassungJafrei in Beispielprojekten
GET/insights/Verfügbare Insights listenJa
GET/insights/{id}/data/Insight-Daten für ZielgruppeJafrei in Beispielprojekten
GET/insights/{id}/credit-cost/Kosten vorab prüfenJa
GET/insights/{id}/features/Merkmale eines Insights listenJa
GET/insights/{id}/features/{fid}/Ein Merkmal im DetailJa
GET/usage/Nutzungs-ZusammenfassungJa
GET/usage/credit-limit/Guthaben & ÜberziehungslimitJa
GET/usage/requests/Anfragen-ProtokollJa
GET/usage/ledger/Credit-BuchungenJa
GET/usage/keys/Eigene API-Keys listenJa

Authentifizierung

Jede Anfrage außer GET /health/ benötigt folgenden Header:

Authorization: Bearer ailpk_….IhrGeheimerTeil

Der 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.

Kostenlose Nutzung in Beispielprojekten

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.

Credits & Abrechnung

Gilt ausschließlich für Zielgruppen in eigenen Projekten — Beispielprojekte sind immer kostenlos.

  • Insight-Daten und Zielgruppen-Summaries können Credits kosten; die Höhe steht als credit_cost bei GET /insights/.
  • Abgebucht wird ausschließlich bei erfolgreicher Antwort (status: SUCCESS) — Zwischenstände (CALCULATING) sind kostenlos.
  • Das Guthaben gehört dem API-Key-Benutzer. Standardmäßig darf es nicht unter null fallen.
  • Ein von Ailon festgelegtes Überziehungslimit (min_balance) ist über GET /usage/credit-limit/ einsehbar.
  • Reicht das Guthaben nicht aus, antwortet die API mit 402 Payment Required.
curl -s -H "Authorization: Bearer IHR_API_KEY" \
  https://dashboard.ailon.io/public-api/v1/usage/

Pagination

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.

Erste Schritte

GET/health/Kein Auth nötig

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" }
GET/whoami/Auth erforderlich

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 & Zielgruppen

Projekte enthalten Zielgruppen (Audiences) und deren Segmente. Norm-Zielgruppen werden in den Listen nicht mitgeliefert.

GET/projects/Auth erforderlich

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.

ParameterInTypBeschreibung
publicquerybooleantrue = nur Beispielprojekte, false = nur eigene/Organisationsprojekte, weglassen = alle sichtbaren
limitqueryintegerStandard 100, max. 1000
offsetqueryintegerStandard 0
curl -s -H "Authorization: Bearer IHR_API_KEY" \
  "https://dashboard.ailon.io/public-api/v1/projects/?public=true&limit=10"
POST/projects/Auth erforderlich

Legt ein neues Projekt an: privat, wenn organisation_id weggelassen wird oder null ist, sonst organisationsweit für die passende Organisation.

FeldTypPflichtBeschreibung
namestring (1–100 Zeichen)JaProjektname
descriptionstring / nullNeinOptionale Beschreibung
organisation_idinteger / nullNeinZiel-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/
GET/projects/{project_id}/Auth erforderlich

Liefert ein einzelnes Projekt inklusive der IDs seiner Top-Level-Zielgruppen.

ParameterInTyp
project_idpathinteger
POST/projects/{project_id}/generate_audience/Auth erforderlichNicht in Beispielprojekten

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.

FeldTypPflichtBeschreibung
namestring (1–100 Zeichen)JaName der Zielgruppe
promptstringJaFreitext-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.

GET/projects/{project_id}/audiences/Auth erforderlich

Listet die Top-Level-Zielgruppen eines Projekts inklusive ihrer Segmente. Norm-Zielgruppen sind ausgeschlossen.

ParameterInTypBeschreibung
project_idpathinteger
limitqueryintegerStandard 100, max. 1000
offsetqueryintegerStandard 0
GET/projects/{project_id}/audiences/{audience_id}/Auth erforderlich

Liefert Metadaten für eine einzelne Zielgruppe innerhalb des angegebenen Projekts — u. a. den aktuellen status, hilfreich beim Polling nach generate_audience.

GET/projects/{project_id}/audiences/{audience_id}/potential/Auth erforderlich

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 }
GET/projects/{project_id}/audiences/{audience_id}/summary/Auth erforderlichfrei in Beispielprojekten

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

Insights sind vordefinierte Analysen (z. B. demografische oder verhaltensbezogene Merkmale), die auf eine berechnete Zielgruppe angewendet werden.

GET/insights/Auth erforderlich

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" }
]
GET/insights/{insight_id}/data/Auth erforderlichfrei in Beispielprojekten

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.

ParameterInTypPflicht
insight_idpathintegerJa
audience_idqueryintegerJa

Statuswerte

StatusBedeutung
SUCCESSDaten stehen in data; ggf. Credits abgebucht
CALCULATINGNoch in Berechnung — später erneut anfragen, kostenlos
ERRORFehlgeschlagen — 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 }
      ]
    }
  ]
}
GET/insights/{insight_id}/credit-cost/Auth erforderlich

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.

ParameterInTypPflicht
insight_idpathintegerJa
audience_idqueryintegerJa
GET/insights/{insight_id}/features/Auth erforderlich

Listet die demografischen oder verhaltensbezogenen Merkmale, aus denen ein Insight besteht, inklusive wählbarer Optionen pro Merkmal.

GET/insights/{insight_id}/features/{feature_id}/Auth erforderlich

Liefert die vollständigen Metadaten für ein einzelnes Merkmal, inklusive Beschreibung und wählbaren Optionen.

Nutzung & Abrechnung

GET/usage/Auth erforderlich

Aggregiertes Guthaben und Anfrage-Statistiken für ein gleitendes Zeitfenster.

ParameterInTypBeschreibung
daysqueryintegerStandard 30, zwischen 1 und 365
GET/usage/credit-limit/Auth erforderlich

Aktuelles Guthaben und konfiguriertes Mindestguthaben (Überziehungslimit). Das Mindestguthaben wird von Ailon verwaltet und lässt sich nicht per API ändern.

GET/usage/requests/Auth erforderlich

Paginiertes Protokoll aller API-Anfragen inklusive Statuscodes, abgebuchten Credits und Fehlercodes fehlgeschlagener Aufrufe.

ParameterInTypBeschreibung
limitqueryintegerStandard 50, max. 200
offsetqueryintegerStandard 0
GET/usage/ledger/Auth erforderlich

Paginierte Credit-Buchungen: Aufladungen, Abbuchungen und Anpassungen. Einträge verweisen bei Bedarf auf die auslösende Anfrage.

ParameterInTypBeschreibung
limitqueryintegerStandard 50, max. 200
offsetqueryintegerStandard 0
GET/usage/keys/Auth erforderlich

Metadaten zu jedem API-Key des authentifizierten Benutzers. Keys werden von Ailon bereitgestellt; geheime Werte werden nie zurückgegeben, nur der öffentliche Präfix.

Status- & Fehlercodes

Zielgruppen-Status (Dashboard → API)

Dashboard-StatusBedeutung für die API
Wird berechnet.Asynchrone Erzeugung oder Berechnung läuft
Berechnet / Berechnet.Bereit für Insight-Abfragen
Berechnung fehlgeschlagenErzeugung oder Berechnung fehlgeschlagen

HTTP-Fehlercodes

HTTPBeispiel error_codeBedeutung
401Ungültiger API-Key
402insufficient_creditsGuthaben reicht nicht aus
403example_project_readonly, project_not_editableBeispielprojekt oder fehlende Berechtigung
404project_not_foundNicht sichtbar oder existiert nicht
503audience_calculatingZielgruppe wird noch berechnet

Häufige Insight-error_codes

CodeBedeutung
audience_not_calculatedZielgruppe noch nicht berechnet
audience_outdatedVeraltete Definition
segments_excludedInsight unterstützt keine Segmente
calculation_failedInterne Berechnung fehlgeschlagen

Fehlercodes aller Anfragen lassen sich zusätzlich über GET /usage/requests/ nachvollziehen.

Datenmodelle

Feldreferenz der wichtigsten Antwort- und Body-Schemas. Klappen Sie ein Modell auf, um alle Felder mit Typ und Beschreibung zu sehen.

ProjectSchema
FeldTypBeschreibung
idinteger
namestring
descriptionstring / null
publicbooleanBeispielprojekt ja/nein; Insight-Anfragen dafür sind kostenlos, Zielgruppen können nicht per API hinzugefügt werden
updateddate-time
audience_idsinteger[]IDs der Top-Level-Zielgruppen
calculated_audience_idsinteger[]IDs der Top-Level-Zielgruppen mit Status „berechnet“
segmentsobjectSegment-IDs gruppiert nach übergeordneter Zielgruppen-ID
CreateProjectSchema Request-Body
FeldTypPflichtBeschreibung
namestring (1–100)JaProjektname
descriptionstring / nullNein
organisation_idinteger / nullNeinWeglassen/null = privates Projekt
AudienceSchema
FeldTypBeschreibung
idinteger
namestring
descriptionstring / null
statusstring / nullSiehe Tabelle „Zielgruppen-Status“
updated_atdate-time / null
segmentsAudienceSchema[]Untergeordnete Zielgruppen (Segmente)
GenerateAudienceSchema Request-Body
FeldTypPflichtBeschreibung
namestring (1–100)JaName der Zielgruppe
promptstringJaFreitext, aus dem die Definition generiert wird
PotentialSchema
FeldTypBeschreibung
potential_relativenumberGröße relativ zum Projekt-Universum (0–1)
potential_absoluteintegerGeschätzte Größe im Projekt-Universum
AudienceSummaryParagraphSchema
FeldTypBeschreibung
typestring, konstant "paragraph"
datastringText des Absatzes
InsightSchema
FeldTypBeschreibung
idintegerAls insight_id in anderen Endpunkten verwenden
display_namestring
descriptionstringÖffentliche Beschreibung
credit_coststringCredits pro erfolgreicher Datenabfrage
InsightDataSchema
FeldTypBeschreibung
insight_idinteger
audience_idinteger
statusSUCCESS / CALCULATING / ERRORBerechnungsstatus
errorstring / nullErklärung, wenn status = ERROR
error_codestring / nullMaschinenlesbarer Fehlercode
dataInsightFeatureDataSchema[] / object / nullPayload bei SUCCESS. Standard-Insights liefern eine Liste von Merkmalen mit verschachtelten options; abweichende Insights liefern das rohe Widget-Objekt
InsightFeatureDataSchema & InsightFeatureOptionDataSchema
FeldTypBeschreibung
feature{ id, display_name }Referenz auf das Merkmal
option{ id, display_name }Nur in InsightFeatureOptionDataSchema: Referenz auf die Wertoption
index_valuenumber / nullÜber- (>100) bzw. Unterrepräsentation (<100) gegenüber der Bevölkerung
mean_popnumber / nullMittelwert in der Gesamtbevölkerung; gesetzt, wenn das Merkmal keine Optionen hat
mean_audiencenumber / nullMittelwert in der Zielgruppe (z. B. Durchschnittsalter)
mean_audience_in_featurenumber / null
abs_audienceinteger / nullAbsolute Anzahl in der Zielgruppe
effect_valuenumber / null
optionsInsightFeatureOptionDataSchema[]Nur bei Merkmalen mit Wertbändern; pro Option dieselben Metrikfelder
InsightCreditCostSchema
FeldTypBeschreibung
insight_idinteger
audience_idinteger
credit_coststring0 für Zielgruppen in Beispielprojekten
InsightFeatureSchema / InsightFeatureDetailSchema / InsightFeatureOptionSchema
FeldTypBeschreibung
idinteger
display_namestring / null
display_name_categorystring / null
descriptionstringNur im Detail-Schema
logo_or_iconstring / nullNur im Detail-Schema
options[].idinteger
options[].display_namestring
options[].lower_border / upper_bordernumber / nullGrenzen des Wertbands
UsageSummarySchema
FeldTypBeschreibung
balancestringAktuelles Guthaben
min_balancestring0 deaktiviert Überziehung; negative Werte erlauben ein Minus bis zu diesem Limit
period_daysintegerLänge des Zusammenfassungs-Zeitfensters
request_countinteger
credits_usedstringInsgesamt abgebuchte Credits im Zeitfenster
successful_requestsinteger
failed_requestsinteger
CreditLimitSchema
FeldTypBeschreibung
balancestring
min_balancestringVon Ailon konfiguriertes Überziehungslimit
RequestLogEntrySchema
FeldTypBeschreibung
request_iduuid
api_key_prefixstring / null
methodstring
pathstring
status_codeinteger
credits_chargedstring
duration_msinteger / null
error_codestringLeer bei Erfolg
created_atdate-time
LedgerEntrySchema
FeldTypBeschreibung
idinteger
amountstringPositiv bei Aufladung, negativ bei Abbuchung
balance_afterstring
reasonstring
notestring
request_iduuid / nullAuslösende Anfrage, falls zutreffend
created_atdate-time
ApiKeySummarySchema
FeldTypBeschreibung
idinteger
namestring
prefixstringÖffentlicher Präfix, nicht geheim
is_activeboolean
last_used_atdate-time / null
created_atdate-time
HealthResponseSchema / WhoAmIResponseSchema
FeldTypBeschreibung
statusstringImmer "ok", wenn erreichbar
api_versionstringAktiver Versions-Slug, z. B. v1
user_idinteger
usernamestring
organisation_idinteger / null
organisation_namestring / null
api_key_namestringBeim Erstellen des Keys vergebenes Label
api_key_prefixstringÖffentlicher Teil des Keys vor dem Geheimteil