GET /brands
Marken auflisten – IDs ermitteln
Gibt jede Marke zurück, die dir gehört. Ruf das zuerst auf, um die `id` zu erhalten, die du in andere Endpunkte einsetzen wirst. Das ist der einzige Endpunkt, der keine Marken-ID als Pfadparameter nimmt.
Anfrage
curl https://ipxntaczzxemkezuofzl.supabase.co/functions/v1/api-v1/brands \
-H "Authorization: Bearer ik_…"
Antwort (200 OK)
{
"brands": [
{
"id": "0ae98f45-446c-4482-886f-9ce2fd6ba4ea",
"name": "Acme",
"industry": "B2B SaaS",
"aliases": ["Acme Corp", "ACME"],
"competitors": ["Beta", "Gamma"],
"country": "US",
"enabled_models": ["openai/gpt-5.2", "anthropic/claude-sonnet-4"],
"run_frequency": "daily",
"created_at": "2026-04-01T12:00:00Z"
}
]
}
GET /brands/{id}
Eine Marke abrufen
Einzelne Marke nach ID. Gleiche Form wie die Elemente in `/brands`.
Anfrage
curl https://ipxntaczzxemkezuofzl.supabase.co/functions/v1/api-v1/brands/0ae98f45-446c-4482-886f-9ce2fd6ba4ea \
-H "Authorization: Bearer ik_…"
Antwort (200 OK)
{
"brand": {
"id": "0ae98f45-446c-4482-886f-9ce2fd6ba4ea",
"name": "Acme",
...
}
}
GET /brands/{id}/queries
Abfragen einer Marke auflisten
Jeder Prompt, den du dieser Marke hinzugefügt hast. Neueste zuerst sortiert.
Anfrage
curl https://ipxntaczzxemkezuofzl.supabase.co/functions/v1/api-v1/brands/{id}/queries?limit=100 \
-H "Authorization: Bearer ik_…"
Antwort (200 OK)
{
"queries": [
{
"id": "…",
"text": "best CRM for small B2B teams",
"tags": ["evaluation"],
"country": "US",
"enabled": true,
"last_run_at": "2026-04-30T04:00:00Z",
"created_at": "2026-04-01T12:00:00Z"
}
]
}
GET /brands/{id}/runs
Läufe einer Marke auflisten
Eine Zeile pro (Abfrage × Modell)-Ausführung. Enthält das rohe `response`-Blob vom Modell.
Anfrage
curl https://ipxntaczzxemkezuofzl.supabase.co/functions/v1/api-v1/brands/{id}/runs?limit=100 \
-H "Authorization: Bearer ik_…"
Antwort (200 OK)
{
"runs": [
{
"id": "…",
"query_id": "…",
"model": "openai/gpt-5.2",
"status": "completed",
"response": "Acme is one of the leading…",
"error": null,
"created_at": "2026-04-30T04:01:23Z"
}
]
}
GET /brands/{id}/mentions
Erwähnungen einer Marke auflisten
Analyse pro Lauf: ob die Marke erwähnt wurde, wo sie eingestuft war, Sentiment, welche Wettbewerber genannt wurden und die Quell-URLs, die das Modell zitiert hat.
Anfrage
curl https://ipxntaczzxemkezuofzl.supabase.co/functions/v1/api-v1/brands/{id}/mentions?limit=100 \
-H "Authorization: Bearer ik_…"
Antwort (200 OK)
{
"mentions": [
{
"id": "…",
"run_id": "…",
"mentioned": true,
"position": 3,
"sentiment": "positive",
"sentiment_score": 78,
"context": "Acme stands out for its…",
"competitors_found": ["Beta"],
"sources": ["https://en.wikipedia.org/wiki/…"],
"confidence": 0.92,
"created_at": "2026-04-30T04:01:24Z"
}
]
}
GET /brands/{id}/visibility
Tägliche Sichtbarkeitswerte
Eine Zeile pro Tag. `score` ist ein 0-100%-Anteil der Erwähnungsrate über alle Abfragen × Modelle, die an diesem Tag liefen.
Anfrage
curl https://ipxntaczzxemkezuofzl.supabase.co/functions/v1/api-v1/brands/{id}/visibility \
-H "Authorization: Bearer ik_…"
Antwort (200 OK)
{
"visibility": [
{
"day": "2026-04-30",
"score": 64,
"total_runs": 48,
"total_mentions": 31
}
]
}
GET /brands/{id}/recommendations
Empfehlungen einer Marke auflisten
KI-generierte nächste Schritte zur Verbesserung der Sichtbarkeit, mit Workflow-Status (pending → in_progress → done / dismissed).
Anfrage
curl https://ipxntaczzxemkezuofzl.supabase.co/functions/v1/api-v1/brands/{id}/recommendations \
-H "Authorization: Bearer ik_…"
Antwort (200 OK)
{
"recommendations": [
{
"id": "…",
"category": "wikipedia",
"title": "Edit the 'CRM software' Wikipedia article",
"body": "Three of four models cited Wikipedia…",
"related_queries": ["…"],
"status": "pending",
"due_date": null,
"completed_at": null,
"created_at": "2026-04-30T04:05:00Z"
}
]
}
GET /brands/{id}/suggested-prompts
Vorgeschlagene Prompts
Prompts, die das System glaubt, dass du sie verfolgen solltest, aber noch nicht hinzugefügt hast. `added: true` bedeutet, der Benutzer hat den Vorschlag akzeptiert (und der Prompt ist jetzt in `/brands/{id}/queries`).
Anfrage
curl https://ipxntaczzxemkezuofzl.supabase.co/functions/v1/api-v1/brands/{id}/suggested-prompts \
-H "Authorization: Bearer ik_…"
Antwort (200 OK)
{
"suggested_prompts": [
{
"id": "…",
"text": "best CRM for small SaaS teams",
"rationale": "competitor-comparison gap - competitors win 4/5 runs",
"added": false,
"created_at": "2026-05-01T04:00:00Z"
}
]
}
GET /brands/{id}/competitor-sov
Wettbewerber-Share-of-Voice
Tägliche Erwähnungsanzahlen pro (Wettbewerber, Modell). Die Marke selbst wird unter dem `__brand__`-Sentinel gemeldet, sodass Share of Voice `brand_count / SUM(count)` innerhalb von (Modell, Tag) ist. Filtere den Zeitraum mit `?since=YYYY-MM-DD` (Standard: letzte 90 Tage).
Anfrage
curl "https://ipxntaczzxemkezuofzl.supabase.co/functions/v1/api-v1/brands/{id}/competitor-sov?since=2026-04-01" \
-H "Authorization: Bearer ik_…"
Antwort (200 OK)
{
"sov": [
{ "competitor": "__brand__", "model": "openai/gpt-5.2", "day": "2026-05-04", "mention_count": 4, "avg_position": 2.5 },
{ "competitor": "Beta", "model": "openai/gpt-5.2", "day": "2026-05-04", "mention_count": 7, "avg_position": null }
]
}
GET /brands/{id}/page-audits
Seitenaudits – Liste
KI-Bereitschaftsaudits für die Seiten der Marke. Jede Zeile enthält den Wert (0-100), die Problemliste und die geparsten Signale (schema.org-Typen, llms.txt-Präsenz, KI-Bot-Robots-Regeln usw.).
Anfrage
curl https://ipxntaczzxemkezuofzl.supabase.co/functions/v1/api-v1/brands/{id}/page-audits \
-H "Authorization: Bearer ik_…"
Antwort (200 OK)
{
"page_audits": [
{
"id": "…",
"url": "https://acme.com/pricing",
"fetched_at": "2026-05-04T10:12:00Z",
"status_code": 200,
"score": 72,
"issues": [
{ "id": "no-faq-schema", "severity": "warning", "title": "No FAQPage schema", "fix": "Add JSON-LD FAQPage with the top buyer questions.", "score_impact": 8 }
],
"signals": {
"word_count": 824,
"h1_count": 1,
"has_canonical": true,
"has_meta_description": true,
"has_faq_schema": false,
"schema_types": ["Organization", "WebSite"],
"llms_txt_present": false,
"robots_blocks_ai": [],
"ai_bots_allowed": ["GPTBot", "ClaudeBot"]
},
"error": null
}
]
}
GET /brands/{id}/page-audits/{auditId}
Seitenaudit – einzeln
Ein einziger Audit nach ID. Gleiche Form wie die Elemente in `/brands/{id}/page-audits`.
Anfrage
curl https://ipxntaczzxemkezuofzl.supabase.co/functions/v1/api-v1/brands/{id}/page-audits/{auditId} \
-H "Authorization: Bearer ik_…"
Antwort (200 OK)
{
"page_audit": {
"id": "…",
"url": "https://acme.com/pricing",
"score": 72,
...
}
}