Die REST-API zum Lesen von Graph, Score und Empfehlungen – und zum Starten von Scans. JSON-Antworten, authentifiziert mit API-Keys.
Basis-URL
Alle Endpunkte liegen unter dem Präfix /v1 und werden ausschließlich über HTTPS ausgeliefert.
Basis-URL
https://api.graphorank.com
Authentifizierung
Erzeugen Sie einen Key auf der Seite API & MCP der App. Keys tragen das Präfixgr_, werden nur bei der Erstellung einmalig vollständig angezeigt und gehasht gespeichert. Senden Sie den Key mit jeder Anfrage im X-Api-Key Header.
Keys haben Scopes: read (stets enthalten) deckt alle GET-Endpunkte ab, während write zum Anlegen von Websites, Starten von Scans und Verwalten von Zeitplänen nötig ist. Die Sitzung der App selbst nutzt stattdessen ein JWT im Header Authorization: Bearer – API-Keys sind für den programmatischen Zugriff gedacht.
Shell
# Create a key in the app under API & MCP — keys start with "gr_"
export GRAPHORANK_API_KEY="gr_..."
curl https://api.graphorank.com/v1/sites \
-H "X-Api-Key: $GRAPHORANK_API_KEY"
Endpunkte
ENDPUNKTBESCHREIBUNG
GET/v1/sitesListet die Websites in Ihrem Workspace auf.
Eine Site ist eine Root-Domain in Ihrem Workspace. Fügen Sie sie hinzu, weisen Sie Ihren Besitz nach und scannen Sie sie dann. Der Besitznachweis erfolgt per Well-known-Datei oder Meta-Tag – das genaue Token-Snippet finden Sie unter Erste Schritte.
Ruft eine einzelne Website ab. Die Antwort hat dieselbe Form wie ein Listeneintrag von GET /v1/sites.
PARAMETERTYPBESCHREIBUNG
site_idpath · uuiderforderlichKennung der Website.
POST/v1/sites/{site_id}/verify
Führt die Besitzprüfung mit der gewählten Methode aus. Die Antwort enthält immer Ihr Site-Token, sodass Sie diesen Endpunkt einmal aufrufen können, um es abzurufen, bevor Sie die Datei oder das Meta-Tag veröffentlichen.
PARAMETERTYPBESCHREIBUNG
site_idpath · uuiderforderlichKennung der Website.
methodbody · stringerforderlichVerifizierungsmethode: "file" (Well-known-Datei) oder "meta" (Meta-Tag auf der Startseite).
{
"verified": true,
"method": "file",
"token": "9Kd2mQx7Ln4pTv8waZrGQg",
"detail": "token found at /.well-known/graphorank-verify.txt"
}
Scans
Ein Scan durchläuft die gesamte Pipeline: Crawl, semantische Analyse, Graph-Aufbau, Scoring. Sein Status wechselt von queued → crawling → embedding → scoring → done (oder failed, mit einem Fehlercode). Scans zählen auf das monatliche Kontingent Ihres Tarifs.
POST/v1/sites/{site_id}/scans
Startet einen On-Demand-Scan. Erfordert den Scope write. Liefert 202 mit dem eingereihten Scan; ist das monatliche Kontingent erschöpft, erhalten Sie 402 quota_exceeded.
PARAMETERTYPBESCHREIBUNG
site_idpath · uuiderforderlichKennung der Website.
render_modebody · stringOptional: "http", "js" oder "auto". Weglassen, um den Standard zu verwenden – auto aktiviert JS-Rendering nur, wenn die Website es braucht.
Der vollständige Knoten-Kanten-Graph eines abgeschlossenen Scans, im selben Format, das die interaktive Ansicht der App verwendet. Große Graphen werden in Cursor-Seiten zu je 1.000 Elementen ausgeliefert (zuerst Knoten, dann Kanten): Fragen Sie weiter mit dem zurückgegebenen next_cursor ab, bis er null zurückgibt. Das meta-Objekt wird auf jeder Seite wiederholt.
GET/v1/scans/{scan_id}/graph
Knoten enthalten die Rolle (pillar | cluster | hub | money | orphan | noindex), strukturelle und semantische Cluster-IDs, PageRank, Ein-/Ausgangsgrad, Klicktiefe und Indexierbarkeit. Kanten sind interne Links.
PARAMETERTYPBESCHREIBUNG
scan_idpath · uuiderforderlichKennung des Scans.
cursorquery · integerVom vorherigen Abruf zurückgegebener Cursor. Standard ist 0 (erste Seite).
GraphRank ist ein Benchmark von 0 bis 100 dafür, wie sichtbar eine Website für generative Suchmaschinen ist. Der Endpunkt liefert ihn zusammen mit den vier Bereichs-Scores aus der App – Struktur, Thematik, GEO und Technik – sowie dem Detail-Objekt, das die Erklärungen in der App speist. Die Methodik hinter der Zahl ist proprietär und wird bei jeder Website identisch angewendet.
GET/v1/scans/{scan_id}/score
GraphRank und die vier Bereichs-Scores für einen abgeschlossenen Scan.
Priorisierte Maßnahmen, aus dem Scan erzeugt, jeweils mit einem Schweregrad (P0 blockierend, P1 wichtig, P2 wünschenswert), lokalisierten Meldungen und einem meta-Objekt mit der betroffenen URL sowie zusätzlichem Kontext.
GET/v1/scans/{scan_id}/recommendations
Listet die Empfehlungen des Scans auf, die schwerwiegendsten zuerst.
PARAMETERTYPBESCHREIBUNG
scan_idpath · uuiderforderlichKennung des Scans.
severityquery · stringOptionaler Filter: "P0", "P1" oder "P2".
[
{
"id": "b7e3a9c1-5d2f-4e8b-a1c6-3f9d7e2b8a54",
"page_id": "9c2b1e07-4f6a-4d3e-b8a1-7c5e9f2d1b36",
"type": "orphan_page",
"severity": "P0",
"message_it": "Pagina orfana: nessun link interno la raggiunge. Collegala dalla sezione pertinente.",
"message_en": "Orphan page: no internal link reaches it and crawlers struggle to find it. Link it from the relevant section.",
"meta": { "url": "https://rovere-arredamenti.com/blog/cura-del-rovere" }
}
]
Verlauf & Vergleich
Verfolgen Sie, wie sich der Score über mehrere Scans entwickelt, und vergleichen Sie zwei davon, um genau zu sehen, was sich geändert hat – hinzugekommene und entfernte Seiten, verwaiste Seiten, Indexierbarkeit.
GET/v1/sites/{site_id}/history
GraphRank-Zeitreihe für die Website, ein Punkt pro abgeschlossenem Scan, nach Zeitstempel sortiert.
PARAMETERTYPBESCHREIBUNG
site_idpath · uuiderforderlichKennung der Website.
fromquery · date-timeNur Punkte ab diesem ISO-8601-Zeitstempel.
toquery · date-timeNur Punkte bis zu diesem ISO-8601-Zeitstempel.
Vergleicht zwei Scans derselben Website. Ohne Parameter werden die beiden jüngsten abgeschlossenen Scans verglichen. score_delta und sub_deltas sind null, wenn einer der Scans keinen Score hat.
PARAMETERTYPBESCHREIBUNG
site_idpath · uuiderforderlichKennung der Website.
from_scanquery · uuidBasis-Scan. Standard ist der zweitjüngste abgeschlossene Scan.
to_scanquery · uuidZiel-Scan. Standard ist der jüngste abgeschlossene Scan.
Ein wiederkehrender Scan pro Website, mit E-Mail-Report nach Abschluss. Verfügbar in den Tarifen Pro und Agency – in niedrigeren Tarifen liefern diese Endpunkte 402 quota_exceeded mit einem Upgrade-Hinweis.
POST/v1/sites/{site_id}/schedule
Legt den Zeitplan der Website an oder aktualisiert ihn (Upsert – einer pro Website). Erfordert den Scope write.
PARAMETERTYPBESCHREIBUNG
site_idpath · uuiderforderlichKennung der Website.
freqbody · stringerforderlich"weekly" oder "monthly".
daybody · integererforderlichWöchentlich: 0–6 mit Montag = 0. Monatlich: 1–28.
timebody · stringerforderlich24-Stunden-Format „HH:MM“, UTC.
recipientsbody · string[]erforderlichBis zu 10 E-Mail-Adressen, die den Report erhalten.
Keys auf Workspace-Ebene für den programmatischen Zugriff, mit dem Präfix gr_ und gehasht gespeichert. Der Klartext-Key wird nur einmal zurückgegeben, in der Antwort auf die Erstellung – bewahren Sie ihn in einem Secret Manager auf. Scopes: read (immer enthalten) deckt alle GET-Endpunkte ab; write ist für alles erforderlich, was den Zustand verändert.
GET/v1/api-keys
Listet die Keys des Workspace auf. Secrets werden nach der Erstellung nie zurückgegeben.
Widerruft einen Key. Er funktioniert sofort nicht mehr. Liefert 204 No Content.
PARAMETERTYPBESCHREIBUNG
key_idpath · uuiderforderlichKennung des Keys.
Rate Limits & Fehler
Zwei Token-Buckets schützen die API: einer pro Client-IP (vor der Authentifizierung) und einer pro Workspace (danach). Wenn Sie ein Limit erreichen, lautet die Antwort 429 mit einem Retry-After Header, der angibt, wie viele Sekunden Sie warten sollen.
Fehler werden im Format application/problem+json mit den Feldern { type, title, status, detail, code } zurückgegeben. Validierungsfehler (422) liefern das Standard-Array detail zurück, das auf die fehlerhaften Felder verweist.
402 · problem+json
{
"type": "about:blank",
"title": "Quota Exceeded",
"status": 402,
"detail": "monthly scan quota reached (6/6): upgrade your plan or wait for the next period",
"code": "quota_exceeded"
}
STATUSCODEWANN
401unauthorizedFehlende oder ungültige Zugangsdaten (X-Api-Key oder Bearer-JWT).
402quota_exceededTarifkontingent erreicht, oder die Funktion erfordert einen höheren Tarif. Upgraden oder bis zum nächsten Zeitraum warten.
403forbiddenDie Scopes des Keys erlauben diesen Aufruf nicht (z. B. wenn write erforderlich ist).
404not_foundDie Ressource existiert in Ihrem Workspace nicht – Daten anderer Mandanten sehen Sie nie.
422validation_errorFehlerhafter Body oder fehlerhafte Parameter; die Antwort listet die betroffenen Felder auf.
429rate_limitedZu viele Anfragen – beachten Sie den Header Retry-After (Sekunden).
503service_unavailableEine nachgelagerte Abhängigkeit ist nicht verfügbar. Versuchen Sie es später erneut.