REST-API
Eine Basis-URL, ein Bearer-Schlüssel, JSON rein und raus. Alles, was die App für eine Website zeigt, gibt es auch hier.
Basis-URL und Anmeldung
https://app.monoranks.com/api/v1
Authorization: Bearer mr_ws_… (or mr_site_…)
Maschinenlesbare Beschreibung jedes Endpunkts und jedes Webhook-Ereignisses: https://app.monoranks.com/api/v1/openapi.json (OpenAPI 3.1). Fügen Sie sie in Postman, Insomnia, Bruno oder einen Client-Generator ein.
Einen Workspace-Schlüssel erstellen Sie in der App unter Settings → API and MCP → New credential. Er gilt für alle Websites oder nur für die, die Sie anhaken. Ein Website-Schlüssel (mr_site_…) entsteht, wenn sich das WordPress-Plugin oder die Shopify-App verbindet, und gilt für eine Website. Schlüssel werden nur einmal angezeigt. Siehe API-Schlüssel und Berechtigungen.
Endpunkte
Alle Pfade unten beginnen mit der Basis-URL.
Websites und Werte
| Methode und Pfad | Was zurückkommt | Scope |
|---|---|---|
GET /sites |
Websites, die dieser Schlüssel lesen darf, mit ihren IDs | sites:read |
GET /portfolio |
Alle Websites des Schlüssels in einem Aufruf, wie die Websites-Liste: Werte, Änderung seit dem letzten Audit und seit letzter Woche, offene Probleme, wartende Aktionen, letztes Audit, nächstes Audit und Search-Console-Klicks (mit search:read) |
sites:read |
GET /sites |
Übersicht: Werte, letztes Audit, offene Probleme, WordPress-Zugriff und wie aktuell die Daten jeder Verbindung sind | sites:read |
GET /sites |
Aktueller Wert und 13 Wochen Verlauf mit Wertversionen | sites:read |
GET /sites |
Geschwindigkeit pro getesteter Seite: der Labortest neben echten Besucherdaten von Chrome-Nutzern, und welche der beiden Zahlen jeder Geschwindigkeitsbefund nutzt | sites:read |
Probleme und Aktionen
| Methode und Pfad | Was zurückkommt | Scope |
|---|---|---|
GET /sites |
Probleme, dieselbe Liste wie auf dem Issues-Bildschirm (Standard: offen, wieder geöffnet, in Arbeit, Prüfung geplant; status= nimmt eine kommagetrennte Liste) |
issues:read |
GET /sites |
Ein Problem mit betroffenen Seiten, Belegen, der KI-Erklärung, den vorgeschlagenen neuen Werten und der letzten genehmigten Änderung | issues:read |
POST /sites |
Eine erneute Prüfung einplanen; das Problem gilt erst als gelöst, wenn die Prüfung es nicht mehr findet | issues:recheck |
GET /sites |
Aktionen nach Priorität, mit geschätztem Wertgewinn und wie lange jede schon offen ist (limit, Standard 25, höchstens 100) |
issues:read |
POST /sites |
Neue SEO-Titel, Beschreibungen, Canonicals oder noindex genehmigen und über den WordPress-Connector schreiben | actions:apply |
Seiten
| Methode und Pfad | Was zurückkommt | Scope |
|---|---|---|
GET /sites |
Gecrawlte Seiten (q zum Suchen, page, per bis 200) |
pages:read |
GET /sites |
Seitendaten, Werte und Befunde | pages:read |
GET /sites |
Dasselbe, gesucht über die Adresse | pages:read |
Search Console
| Methode und Pfad | Was zurückkommt | Scope |
|---|---|---|
GET /sites |
Summen für 7, 28 oder 90 Tage (days=) im Vergleich zum Zeitraum davor, Top-Seiten und Top-Suchanfragen |
search:read |
GET /sites |
Zeilen für einen Zeitraum, nach Suchanfrage, Seite, Suchanfrage und Seite oder Tag; seitenweise oder mit format=csv als eine CSV-Datei |
search:read |
KI-Sichtbarkeit und KI-Bereitschaft
| Methode und Pfad | Was zurückkommt | Scope |
|---|---|---|
GET /sites |
Was KI-Assistenten auf die beobachteten Fragen der Website geantwortet haben, pro Woche | ai:read |
GET /sites |
Fragen, bei denen KI-Antworten andere Websites nennen, aber nie diese | ai:read |
GET /sites |
Zugriff von KI-Crawlern laut robots.txt, llms.txt und Signale zur Organisation aus dem letzten Audit | ai:read |
GET /sites |
Die live /llms.txt, jetzt gelesen, und ein veröffentlichungsfertiger Entwurf aus Ihren Seiten |
ai:read |
POST /sites |
Eine neue /llms.txt genehmigen und über den WordPress-Connector schreiben |
actions:apply |
GET /sites |
Was die robots.txt, jetzt gelesen, jedem KI-Crawler sagt, und die Regeln, die MonoRanks zuletzt geschrieben hat | ai:read |
POST /sites |
Erlauben- oder Sperren-Regeln pro KI-Crawler genehmigen und in die robots.txt schreiben | actions:apply |
GET /sites |
Ergebnisse von Agentic Browsing (kann ein KI-Agent die Seite nutzen), pro getesteter Seite und Gerät, mit dem, was zu beheben ist | ai:read |
POST /sites |
Die Agentic-Browsing-Prüfung für eine Seite neu ausführen; antwortet 202 mit einer Job-ID |
issues:recheck |
GET /sites |
Status und Ergebnis eines Neulaufs | ai:read |
Audits
| Methode und Pfad | Was zurückkommt | Scope |
|---|---|---|
GET /sites |
Die letzten Audits, das gerade laufende, das nächste wöchentliche Audit, die Seitenbudgets und die heute noch möglichen Starts | sites:read |
POST /sites |
Jetzt ein vollständiges Audit starten, optional mit pageBudget; antwortet 202 mit einer Audit-ID |
audits:run |
GET /sites |
Ein Audit: Status, bisher gecrawlte Seiten, Sitemap-Abdeckung, warum es früher endete | sites:read |
Öffentlich, ohne Schlüssel
| Methode und Pfad | Was zurückkommt |
|---|---|
GET /openapi.json |
Das OpenAPI-3.1-Dokument für alles oben |
GET /plans |
Tarife und Preise |
GET /changelog |
Versionshinweise als Markdown |
Blättern
Jede Liste blättert auf ihre eigene Art; die Details stehen im OpenAPI-Dokument:
GET /portfolio,GET /sites/{siteId}/pagesundGET /sites/{siteId}/agenticnehmenpage(ab 1) undper(Standard 50, höchstens 200).GET /sites/{siteId}/search/rowsgibtnextCursorzurück; senden Sie ihn alscursorzurück, bis ernullist.limitist 1 bis 10.000 (Standard 1.000).- Vorschläge zu einem Problem kommen zu je 100; siehe unten.
GET /sites/{siteId}/actionsnimmtlimit;GET /sites/{siteId}/auditsnimmtlimit(Standard 5, höchstens 25).
Vorgeschlagene Werte zu einem Problem
Für ein Problem, das MonoRanks beheben kann (SEO-Titel, Meta-Beschreibung, Canonical oder Weiterleitung), gibt GET /sites/{siteId}/issues/{issueId} auch suggestions zurück: für jede betroffene Seite den aktuellen Wert und den Wert, den MonoRanks vorschlägt. Es sind dieselben Werte, die die App zeigt, bevor Sie auf Apply drücken.
"suggestions": [
{ "url": "https://example.com/pricing/", "pageId": "…", "current": "Pricing", "suggested": "Pricing | Example", "writable": true }
],
"suggestionsTotal": 240,
"suggestionsOffset": 0,
"suggestionsLimit": 100,
"suggestionsNextOffset": 100,
"suggestionsTruncated": true
- Blättern. Jeder Aufruf liefert bis zu 100. Für die nächsten rufen Sie erneut auf, mit
?suggestions_offset=gleichsuggestionsNextOffset; nach der letzten Seite ist esnull.suggestions_limit(1 bis 100) legt die Seitengröße fest. Die SchreibweisensuggestionsOffsetundsuggestionsLimitfunktionieren auch. suggestedistnull, wenn MonoRanks für diese Seite keinen guten neuen Wert hat. Ein zu langer Titel wird nach festen Regeln gekürzt, die das Thema der Seite behalten und nie einen Ausdruck mittendrin abschneiden; wenn kein kürzerer Titel passt, istsuggestednullund Sie können in der App einen entwerfen.suggestionsNote(nur Titel) ist gesetzt, wenn die Website die Groß- und Kleinschreibung von Titeln auf der Seite ändert, zum Beispiel mit der Einstellung Capitalize Titles von Rank Math.writableistfalse, mitnotWritableReason, wenn apply diese Seite nicht schreiben kann, zum Beispiel ein Kategoriearchiv, das kein WordPress-Beitrag und keine Seite ist. Senden Sie diese nicht an apply.advice(nur Meta-Beschreibungen) sagt, wann eine Seite vielleicht keine Beschreibung braucht: eine Rechtsseite oder ein Archiv (leer lassen oder noindex setzen), ein leeres Archiv (Beiträge hinzufügen oder noindex setzen) oder eine Login-, Konto-, Warenkorb- oder Kassenseite (noindex setzen; es wird keine Beschreibung vorgeschlagen).titleTemplate(zu lange Titel) ist gesetzt, wenn eine gemeinsame Endung aus der Titelvorlage des SEO-Plugins die meisten Titel zu lang macht; dann behebt eine Änderung an der Vorlage alle.lastRechecksagt, was die letzte erneute Prüfung gefunden hat. Eine Prüfung liest jede gelistete Seite frisch neu, sodass bereits behobene Seiten aus der Liste fallen. Eine Seite, die nicht geantwortet hat, bleibt gelistet und wird inlastRecheck.notRecheckedgezählt.lastChangeist der letzte genehmigte Stapel, mit dem Status jeder Änderung.not_liveheißt: geschrieben, aber die Seite zeigt noch einen anderen Wert;notLiveReasonsagt warum, auch ob der Seiten-Cache der Website nach dem Schreiben geleert wurde. Eine erneute Prüfung schaut sich solche Änderungen noch einmal an. Titel und Beschreibungen gelten als live, wenn sich nur Groß- und Kleinschreibung, Leerzeichen, Anführungszeichen oder Bindestriche unterscheiden;liveNotesagt dann, was sie geändert hat.
Senden Sie die Werte, die Sie genehmigen, an POST /sites/{siteId}/actions/{issueId}/apply als { "changes": [ { "url": "…", "value": "…" } ] } (höchstens 500). Über die API schreibt apply SEO-Titel, Meta-Beschreibungen, Canonicals und noindex; Alt-Texte von Bildern und Weiterleitungen wenden Sie in der App an.
Persönliche E-Mail-Adressen im Seitentext, den MonoRanks speichert, werden verborgen, zum Beispiel j•••@gmail.com.
Beispiel
curl -H "Authorization: Bearer mr_ws_…" \
"https://app.monoranks.com/api/v1/sites/SITE_ID/actions?limit=5"
{
"waiting": 1,
"actions": [
{ "rank": 1, "issueId": "…", "title": "Missing meta description", "severity": "serious", "effort": "low",
"priority": 8.4, "estimatedScoreGain": 3.2, "status": "open", "ageDays": 16, "waitingWeeks": 2,
"writableField": "seo_description", "link": "https://app.monoranks.com/sites/SITE_ID/actions/…" }
]
}
Ein Audit starten
curl -X POST -H "Authorization: Bearer mr_ws_…" -H "Content-Type: application/json" \
-d '{ "pageBudget": 1000 }' "https://app.monoranks.com/api/v1/sites/SITE_ID/audits"
Der Aufruf antwortet sofort mit 202, einer auditId und einer poll-Adresse; verfolgen Sie das Audit mit GET /sites/{siteId}/audits/{auditId} etwa einmal pro Minute. pageBudget ist optional und darf höchstens die Seiten pro Audit Ihres Tarifs betragen: Free 200, Starter 500, Agency 1.000, Enterprise 10.000. Pro Website läuft immer nur ein Crawl, und über API und MCP lassen sich höchstens 3 Audits pro Website und Tag starten. Das wöchentliche Audit läuft wie gewohnt.
Fehler und Grenzen
Fehler sehen so aus: { "error": { "code": "…", "message": "…" } }:
| Status | Bedeutung |
|---|---|
| 400 | ein falscher Parameter oder Inhalt, zum Beispiel ein falscher Zeitraum, ein Seitenbudget über dem Tarif oder eine Seite, die nicht geschrieben werden kann |
| 401 | Schlüssel fehlt, ist unbekannt oder widerrufen |
| 403 | Scope fehlt, die Website gehört nicht zum Schlüssel, oder die Person hinter dem Schlüssel hat keinen Zugriff mehr |
| 404 | keine solche Website, kein solches Problem, keine solche Seite, kein solches Audit oder kein solcher Pfad |
| 409 | etwas ist schon geplant oder läuft (eine erneute Prüfung, ein Audit, derselbe Agentic-Browsing-Lauf), oder die Website hat keinen WordPress-Connector, der schreiben kann |
| 429 | Stundengrenze erreicht (1.200 Anfragen pro Schlüssel und Stunde), das tägliche Budget für Geschwindigkeitstests ist aufgebraucht, oder heute wurden schon 3 Audits gestartet |
| 503 | die API oder diese Funktion ist gerade abgeschaltet |
Ein Schlüssel handelt als die Person, die ihn erstellt hat. Verlässt diese Person den Workspace oder wird sie Kundenbetrachter, funktioniert der Schlüssel nicht mehr.
Häufige Fragen
Gibt es ein SDK?
Noch nicht. Das OpenAPI-Dokument unter /api/v1/openapi.json funktioniert mit den üblichen Generatoren (openapi-generator, Kiota, oazapfts), wenn Sie typisierte Clients möchten.
Kann ich über die API Daten schreiben?
Es gibt einige Schreibvorgänge, jeder mit eigenem Scope: eine erneute Prüfung starten oder die Agentic-Browsing-Prüfung neu ausführen (issues:recheck), ein vollständiges Audit starten (audits:run) und neue SEO-Titel, Beschreibungen, Canonicals, eine llms.txt-Datei oder Regeln für KI-Crawler genehmigen, die MonoRanks dann über den WordPress-Connector schreibt (actions:apply). Jeder genehmigte Schreibvorgang lässt sich in der App 30 Tage lang rückgängig machen. Alles andere ist nur lesend.
Was ist mit den öffentlichen Endpunkten?
GET /api/v1/plans und GET /api/v1/changelog brauchen keinen Schlüssel. Die Website nutzt sie, um Preise und Versionshinweise zu zeigen.