REST-API

Die Werbeplattform als schlichte JSON-API.

Cursor-paginiertes REST über Kampagnen, Anzeigengruppen, Anzeigen, Keywords, Assets, Berichte und Synchronisierung — für Google Ads, Microsoft Advertising, Reddit Ads und Meta Ads. Ein Umschlag, typisierte Fehler und eine schriftlich festgehaltene Versionierungsrichtlinie.

Basis-URL

https://api.growomat.com/api/v1

Spec

GET /api/v1/openapi.json · OpenAPI 3.1

Auth

Authorization: Bearer grow_… · 13 Scopes

Limits

60 Req/Min pro Token · Retry-After bei 429

v1 · additive Änderungen sind nie brechend · alte Versionen laufen mindestens 12 Monate weiter

erste Anfrage — GET /me

LIVE
$ curl -s https://api.growomat.com/api/v1/me \
    -H "Authorization: Bearer $GROWOMAT_TOKEN"

{ "data": { "uid": "user_abc", "email": "[email protected]",
    "plan": { "id": "pro" },
    "scopes": ["campaigns:read", "campaigns:write"] } }
Quickstart · für Entwickler

In drei Requests zur bereitgestellten Kampagne.

Kampagnen werden lokal erstellt und bereitgestellt — keine Live-Werbeplattform wird angefasst, bis ein Token mit Sync-Scope einen Sync auslöst.

1
Token erstellen

Einstellungen → Developer

Erstellen Sie ein Token mit Namen, einer Laufzeit von bis zu einem Jahr und den minimal nötigen Scopes. Der Klartext erscheint genau einmal — gespeichert wird nur der SHA-256.

# shown once — store it in a secret manager
grow_live_A1B2C3D4E5F6G7H8_veryLongSecret…

export GROWOMAT_TOKEN=grow_live_…
2
Introspektion

Auth mit /me prüfen

GET /me liefert Identität, Plan und Scopes des Tokens zurück — der schnellste Beleg, dass alles verdrahtet ist.

curl -s -H "Authorization: Bearer $GROWOMAT_TOKEN" \
  https://api.growomat.com/api/v1/me

# → { "data": { "uid": "user_abc", "email": "[email protected]",
#     "plan": { "id": "pro", "name": "Pro" },
#     "scopes": ["campaigns:read","campaigns:write"] } }
3
Etwas erstellen

Erste Kampagne per POST

Schreibzugriffe brauchen den Write-Scope ihrer Ressource. Jede Response nutzt denselben Envelope: { data, meta }

curl -s -X POST https://api.growomat.com/api/v1/campaigns \
  -H "Authorization: Bearer $GROWOMAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Black Friday 2026","type":"SEARCH","budget":50}'
Ressourcen

Zehn Ressourcen, eine Form.

Jede Ressource spricht denselben Umschlag und dieselbe Cursor-Paginierung. Was die App anlegen, auflisten, bearbeiten und löschen kann, können Sie auch.

RessourceRoutenOperationen
Token/me
GET
Campaigns/campaigns · /campaigns/:id
GETPOSTPATCHDELETE
Ad groups/ad-groups · /ad-groups/:id
GETPOSTPATCHDELETE
Ads/ads · /ads/:id
GETPOSTPATCHDELETE
Keywords/keywords · /keywords/:id
GETPOSTPATCHDELETE
Assets/assets · /assets/:id/attach
GETPOSTPATCHDELETE
Businesses/businesses · /businesses/:id
GETPOSTPATCHDELETE
Reports/reports/performance · /reports/disapprovals
GET
Sync/sync · /sync/preview · /sync/:id
GETPOST
Conversions/conversions/offline
GETPOST

Schreibzugriffe brauchen den :write-Scope ihrer Ressource. Eine Synchronisierung braucht zusätzlich sync:write — sie ist der einzige Aufruf, der Live-Werbeplattformen berührt. Die vollständige Routenliste steht in /api/v1/openapi.json.

Der Vertrag

Die Punkte, die Sie vor der Einführung prüfen würden.

Ein Envelope, typisierte Fehler, ehrliche Rate-Limit-Header, unaufgeregte Paginierung und eine schriftliche Versionierungs-Policy.

Response-Envelope— jeder Endpunkt

// success
{ "data": …, "meta": { "nextCursor": "1700000000", "total": 25 } }

// error — always this shape
{ "error": { "code": "INSUFFICIENT_SCOPE",
    "message": "Missing required scope: campaigns:write",
    "details": { "required": ["campaigns:write"] } } }

Fehlercodes— alle

HTTPCodeWann
400VALIDATION_ERRORUngültiger Request-Body
401INVALID_CREDENTIALSUngültiges, widerrufenes oder abgelaufenes Token
402SUBSCRIPTION_REQUIRED · SUBSCRIPTION_EXPIRED · API_ACCESS_NOT_IN_PLANAbrechnung — klären, dann erneut versuchen
403INSUFFICIENT_SCOPEDem Token fehlt der nötige Scope
404NOT_FOUNDNicht vorhanden oder außerhalb des aufgelösten Space
429RATE_LIMITEDMinuten- oder Tageslimit überschritten
500INTERNAL_ERRORUnser Fehler — Retry ist sicher

Rate-Limits— in jeder Response

HeaderBedeutung
X-RateLimit-LimitMinuten-Bucket dieses Tokens (Standard 60)
X-RateLimit-RemainingVerbleibende Requests im aktuellen Fenster
X-RateLimit-ResetUnix-Zeitpunkt, an dem das Fenster zurückgesetzt wird
Retry-AfterWartezeit in Sekunden, gesendet mit 429

Minuten-Buckets gelten pro Token — ein lautes Skript verdrängt kein anderes. Das Tages-Budget kommt aus Ihrem Plan und gilt über alle Tokens hinweg.

Versionierung & Spaces— schriftlich

Alles lebt unter /api/v1. Ergänzungen — neue Felder, Endpunkte, Enum-Werte — erscheinen ohne Ankündigung und sind nie Breaking. Entfernungen und Umbenennungen wandern nach /api/v2, und alte Versionen laufen mindestens 12 Monate nach Ankündigung des Nachfolgers weiter.

Senden Sie den X-Space-Id-Header, um einen Workspace zu adressieren; ohne Header gilt Ihr Personal Space. IDs außerhalb des aufgelösten Space liefern 404 — Daten fließen nie zwischen Spaces.

Auth & Scopes · für Entwickler

Tokens, gebaut für Secret-Scanning, Scopes und Rotation.

grow_live_A1B2C3D4E5F6G7H8_veryLongUrlSafeBase64Secret
grow_ — festes Präfix — GitHub Secret Scanning und trufflehog erkennen ein geleaktes Token sofort
live | test — Umgebung, in Logs auf einen Blick erkennbar
A1B2… — öffentliche Token-ID — darf geloggt und referenziert werden
secret — vertraulich — serverseitig wird nur der SHA-256 gespeichert
  • ·Nur im Authorization-Header akzeptiert — Query-String- und Cookie-Varianten werden abgelehnt
  • ·Bis zu 5 Tokens pro Konto, Laufzeit bis zu einem Jahr, Widerruf mit einem Klick
  • ·Die Rotation erzeugt ein neues Secret, behält aber die Token-ID — Ihre Referenzen überleben
  • ·Scopes sind unveränderlich — anderer Zugriff heißt neues Token

Scoped Access — 13 Berechtigungen

campaigns:readread
campaigns:writewrite
ads:readread
ads:writewrite
keywords:readread
keywords:writewrite
assets:readread
assets:writewrite
businesses:readread
businesses:writewrite
reports:readread
sync:readread
sync:writewrite

sync:write ist bewusst von den Ressourcen-Scopes getrennt — ein Sync verändert externe Werbeplattformen und kann echtes Budget ausgeben. Ein Reporting-Token braucht ihn nie.

Token erstellen. curl auf /me richten.

Tokens erstellen Sie unter Einstellungen → Entwickler. Lieber ein typisierter Client? Die SDKs werden aus der Spezifikation dieser API generiert.