API-Dokumentation

Verbinde Reports, Automationen und eigene Werkzeuge mit ADMONGER. Die API liefert deine Projektinformationen bis zu einzelnen Logbuch-Einträgen, Creative-Dateien, täglichen Anzeigenmetriken, Kommentaren, Website-Conversions, Reports, Skripten und Angeboten.

Schnellstart

  1. Unter API-Zugang einen persönlichen Token erstellen und sicher speichern.
  2. Die feste Basisadresse https://www.admonger.de/api/v1 verwenden.
  3. Projekte abrufen und die zurückgegebene Projekt-ID für weitere Anfragen verwenden.
# Gemeinsame Plattform für alle Nutzer
export ADMONGER_URL="https://www.admonger.de"
# ADMONGER_TOKEN über deine Secret-Verwaltung setzen.

curl "$ADMONGER_URL/api/v1/projects" \
  -H "Authorization: Bearer $ADMONGER_TOKEN"

curl "$ADMONGER_URL/api/v1/projects/PROJEKT_ID/log-entries?limit=100" \
  -H "Authorization: Bearer $ADMONGER_TOKEN"

Authentifizierung

Authorization: Bearer adm_DEIN_TOKEN

Alle Nutzer verwenden dieselbe API-Adresse. Jede Datenanfrage benötigt einen Bearer-Token. Der Server ordnet den Token automatisch seinem Nutzerkonto und dessen Projekt-Scope zu. Du sendest keine zusätzliche User-ID und brauchst keine eigene Instanz. Eine Browser-Anmeldung ersetzt diesen Header nicht. Tokens in URLs werden nicht akzeptiert. Bewahre den Token in der Secret-Verwaltung deiner Integration auf.

Tokens gehören einem aktiven Nutzer. Beim Erstellen legst du den Projekt-Scope fest: „Alle Projekte“ schließt auch später angelegte Projekte ein; „Ausgewählte Projekte“ erlaubt nur die ausdrücklich ausgewählten Projekte. Den Scope kannst du jederzeit in der Token-Verwaltung ändern. Bestehende Tokens behalten zunächst ihren bisherigen Scope „Alle Projekte“. Eine Admin-Nutzeransicht verändert diese Identität nicht. Andere Nutzer und deren Projekte sind ausgeschlossen. Projektlisten, Projektdetails, Unterressourcen und Downloads beachten den Scope; Projektgruppen werden bei eingeschränktem Scope nur ausgegeben, wenn sie mindestens ein freigegebenes Projekt enthalten. /me liefert weiterhin das Profil des Token-Eigentümers. Nicht freigegebene Projekte antworten mit 404. Tokens gelten 30, 90 oder 365 Tage; bis zu 20 aktive Tokens sind möglich.

Der Token wird nur beim Erstellen angezeigt und lässt sich jederzeit widerrufen. Schreibzugriffe unterstützt die API nicht. OAuth-Zugangsdaten, Plattformschlüssel, Einreichungs-Passwörter und Report-Freigabelinks werden nicht ausgegeben.

Endpunkte

Alle Pfade beziehen sich auf /api/v1. Anfragen verwenden GET; HEAD und OPTIONS werden ebenfalls unterstützt.

GET /me                      → eigenes Profil
GET /project-groups          → eigene Projektgruppen
GET /projects                → eigene Projekte
GET /projects/{projectId}    → Projektdetails und Kontext

GET /                        → Version und Ressourcenkatalog (ohne Token)

Der Katalog unter /api/v1 ist maschinenlesbar: Er nennt jede Ressource mit Bereich, Einzelabruf, Download sowie Datums- und Kanalfilter. Integrationen können ihn nutzen, statt die Tabelle unten nachzubauen. Jede Antwort trägt zusätzlich den Header X-Admonger-Api-Version (aktuell 1.1).

Die folgenden Ressourcen liegen unter /projects/{projectId}/. Jede liefert eine paginierte Liste. Wo angegeben, liefert ein angehängtes /{id} einen einzelnen Datensatz anhand seiner UUID.

Projektressourcen mit Einzelabruf und Filtern
RessourceInhaltAbrufFilter
Logbuch
Creatives
Learnings
Aufgaben
Media Buying
Kommentare
Website-Tracking
Reporting
Creative Studio
Skripte & Angebote
Dateien & Chats

Antworten enthalten die freigegebenen gespeicherten Detailfelder. Verknüpfungen bleiben als IDs erhalten: zum Beispiel entry_id bei Anhängen, learning_id bei Learning-Quellen und creative_id bei Assets. Löse diese über die zugehörigen Ressourcen auf.

Archivierte Projekte und soft-gelöschte Datensätze sind enthalten. Für aktive Inhalte filtere auf archived_at = null bzw. deleted_at = null, sofern das Feld existiert. Physisch entfernte Daten sind nicht verfügbar.

Antworten & Pagination

Einzelabrufe liefern { "data": { … } }. Listen haben dieses Format (Beispieldaten):

{
  "data": [
    {
      "id": "11111111-1111-4111-8111-111111111111",
      "name": "Beispielprojekt",
      "description": "Projektkontext",
      "archived_at": null
    }
  ],
  "pagination": {
    "limit": 1,
    "offset": 0,
    "has_more": true,
    "next_offset": 1
  }
}

limit bestimmt die Seitengröße: standardmäßig 100, maximal 500. Übernimm next_offset in die nächste Anfrage als ?offset=…. Sobald has_more false ist, sind alle Seiten gelesen. Behalte dabei dieselben Filter bei.

Sortiert wird nach dem vollständigen Primärschlüssel. Die Pagination ist kein transaktionaler Snapshot: Änderungen während des Abrufs können Datensätze zwischen Seiten verschieben. Unbekannte, doppelte und für den Endpunkt ungeeignete Parameter werden mit 400 abgewiesen.

Filter

GET /projects/{projectId}/comments?from=2026-09-01&to=2026-09-07
GET /projects/{projectId}/ads-daily?from=2026-09-01&to=2026-09-07&channel=meta

from und to sind ISO-Datumswerte, jeweils inklusive und einzeln optional. Sie gelten für jede Ressource, deren Tabelle oben eine Datumsspalte nennt. Reine Datumsspalten wie date bei ads-daily sind Kalendertage des Werbekontos, tracking-daily nutzt die Projektzeitzone. Zeitstempel wie zeit oder received_at werden als UTC-Kalendertage verglichen. Logbuch-Zeiträume und Reports zählen, sobald sie den Filter überlappen.

Der optionale Filter channel akzeptiert meta, google und chatgpt und gilt für Ressourcen mit Kanalspalte: ads-daily, ads-objects, accounts, ad-sync-status und tracking-campaign-signals. Ein Filter an einer Ressource ohne passende Spalte wird mit 400 abgewiesen, statt still ignoriert zu werden.

Media Buying

Tagesdaten enthalten unter anderem date, level, object_id, kanal, impressions, reach, clicks, spend, actions und interactions. Anzeigenobjekte ergänzen Namen, Hierarchie, Status, Budgets und gespeicherte details.

Die API liefert den gespeicherten Sync-Stand und startet keinen neuen Plattformabgleich; wann zuletzt abgeglichen wurde, zeigt ad-sync-status. Abgeleitete Kennzahlen berechnest du aus den Rohdaten. Summiere dabei nicht Konto-, Kampagnen- und Anzeigenebenen zusammen – sie können dieselben Auslieferungen abbilden.

Kommentare, Tracking, Reporting & Studio

Kommentare. comments enthält Facebook- und Instagram-Kommentare mit kategorie, intent, von_uns, verborgen und erledigt_am. Offene Kommentare sind solche ohne eigene Antwort-Markierung, nicht verborgen und ohne erledigt_am. comment-posts liefert Beitrag oder Anzeige zu beitrag_id, comment-log das Protokoll gesendeter Antworten und Nachrichten. Plattform-Nutzer-IDs werden nicht ausgegeben.

Website-Tracking. tracking-sites, tracking-signals und tracking-placements beschreiben die Einrichtung. tracking-events liefert einzelne Touches und Conversions mit der aufgelösten Attribution, wie sie die Oberfläche zeigt (attribution_basis: direkt, identifiziert oder modelliert). tracking-daily ist das Tagesaggregat je Signal und zugeordneter Kampagne/Anzeige ohne Testereignisse – für Auswertungen meist die bessere Wahl. people zählt Personen je Tag und ist über Tage nicht eindeutig. Besucher-, Sitzungs- und Kontaktschlüssel bleiben intern.

Reporting. reports enthält Entwurf (content) und veröffentlichte Fassung, dazu live_link_active und die Summe der Live-Aufrufe; tägliche Aufrufe stehen in report-views. Freigabe-Tokens und Passwörter werden nicht ausgegeben.

Creative Studio, Skripte und Angebote. brand-profile, brand-assets, studio-generations und studio-edits bilden das Creative Studio ab, scripts und script-folders die Skripte samt Einstellungen, Reviews und Assistentenverlauf, offers die Angebotsprofile.

Dateien herunterladen

GET /projects/{projectId}/assets/{id}/download
GET /projects/{projectId}/log-attachments/{id}/download
GET /projects/{projectId}/project-files/{id}/download
GET /projects/{projectId}/brand-assets/{id}/download
GET /projects/{projectId}/studio-generations/{id}/download

{
  "data": {
    "url": "https://…",
    "expires_in": 60
  }
}

Rufe die zurückgegebene URL innerhalb von 60 Sekunden auf. Sie benötigt keinen zusätzlichen Bearer-Header. Bereits ausgestellte Links bleiben nach einem Token-Widerruf bis zu ihrem Ablauf gültig. Für soft-gelöschte Dateien und Studio-Generierungen ohne fertiges Bild werden keine Download-Links erstellt.

JavaScript: alle Logbuch-Einträge laden

Serverseitiges Beispiel mit Umgebungsvariablen. Es liest alle Seiten eines Projekts und meldet API-Fehler.

const base = process.env.ADMONGER_URL.replace(/\/$/, '') + '/api/v1';
const token = process.env.ADMONGER_TOKEN;
const projectId = process.env.ADMONGER_PROJECT_ID;
const entries = [];
let offset = 0;

while (true) {
  const url = new URL(base + '/projects/' + projectId + '/log-entries');
  url.searchParams.set('limit', '100');
  url.searchParams.set('offset', String(offset));
  const response = await fetch(url, {
    headers: { Authorization: 'Bearer ' + token },
  });
  if (!response.ok) {
    throw new Error('API ' + response.status + ': ' + await response.text());
  }
  const { data, pagination } = await response.json();
  entries.push(...data);
  if (!pagination.has_more) break;
  offset = pagination.next_offset;
}
console.log(entries);

Fehler & Limits

{ "error": { "code": "invalid_token" } }

Pro Token sind 120 Anfragen pro Minute erlaubt. Zusätzlich gilt ein gemeinsames Limit von 120 Datenabfragen pro Nutzer und Minute für REST-API und MCP. API-Antworten tragen Cache-Control: private, no-store. CORS unterstützt Bearer-Anfragen ohne Cookies. Bei 429 den angegebenen Zeitraum abwarten und anschließend fortsetzen.