Zum Seiteninhalt springen
Docs
Make Agent Fast Dokumentation

Scopes und Fehler

Vergeben Sie minimale Berechtigungen und behandeln Sie jeden stabilen öffentlichen API-Fehlercode.

Auf einen Blick

Vergeben Sie minimale Berechtigungen und behandeln Sie jeden stabilen öffentlichen API-Fehlercode.

API-AnfragepfadSchlüssel mit Bereich → versionierte Ressource → signierte Antwort
App / SDKBearer-Schlüsselmaf_live_…/api/v1/…RessourceJSON
33 ScopesStabile CodesRequest-IDs

Jede Operation der öffentlichen API erfordert einen expliziten Scope. Ein gültiger Zugangsschlüssel ohne diesen Scope erhält 403 insufficient_scope; er wird nie stillschweigend auf einen umfassenderen Zugriff erweitert.

Scope-Referenz#

ScopeErlaubt
account:readDas authentifizierte Konto, den Tarif, die Berechtigungen und die Guthabenübersicht lesen
tickets:readSupport-Tickets und deren Nachrichten lesen
tickets:writeTickets aktualisieren, Team-Mitglieder zuweisen und interne Notizen oder Antworten an Kunden hinzufügen
team:readTeam-Mitglieder, ausstehende Einladungen und zulässige Audit-Ereignisse lesen
team:writeEinladungen erstellen oder widerrufen und Rollen von Team-Mitgliedern (außer Owner) verwalten
integrations:readAutorisierte GitHub-App-Installationen und Repositories einsehen
integrations:writeIntegrationsänderungen vorbereiten und Entwurfs-Pull-Requests erstellen
sites:readSites auflisten und abrufen
sites:writeSites erstellen, aktualisieren, veröffentlichen, depublizieren und löschen
agents:readAgent-Einstellungen lesen
agents:writeVerhalten, Sprache, Stimme und Einbettungseinstellungen des Agents aktualisieren
knowledge:readSources und FAQs auflisten
knowledge:writeSources und FAQs erstellen, aktualisieren und löschen
conversations:readKonversationen auflisten und deren Nachrichten abrufen
conversations:writeEine Konversation übernehmen: als Unternehmen auf einen Besucher antworten, den Agent in dieser Konversation pausieren und sie wieder zurückgeben
leads:readErfasste Leads auflisten
leads:writeLeads erstellen, aktualisieren, qualifizieren und in die Opportunity-Pipeline übernehmen
pipeline:readPhasen, Accounts, Opportunities, Aktivitäten, Attribution und den CRM-Synchronisierungsstatus lesen
pipeline:writePhasen konfigurieren; Opportunities und Accounts erstellen oder aktualisieren; CRM-Ergebnisse importieren oder erneut versuchen
analytics:readAnalyseereignisse einer Site lesen
connectors:readDen Status von Connectors auflisten, ohne Geheimnisse zurückzugeben
connectors:writeConnectors erstellen, aktualisieren, aktivieren, deaktivieren und entfernen
domains:readEntfernt. Nur aus Kompatibilitätsgründen beibehalten; jede /domains-Route gibt 409 zurück, da keine benutzerdefinierten Domains angeboten werden
domains:writeEntfernt. Nur aus Kompatibilitätsgründen beibehalten; jede /domains-Route gibt 409 zurück
broadcasts:readBroadcasts und deren Zustellstatus auflisten
broadcasts:writeEntwürfe erstellen und den Versand eines Broadcasts in die Warteschlange stellen
notifications:readBenachrichtigungen für Owner auflisten
notifications:writeBenachrichtigungen als gelesen oder ungelesen markieren
monetization:readMonetarisierungsprodukte auflisten
monetization:writeProdukte erstellen, aktualisieren, aktivieren, deaktivieren und löschen
usage:readGemessene Nutzungsereignisse lesen
webhooks:readWebhook-Endpunkte und deren Zustellstatus auflisten
webhooks:writeWebhook-Endpunkte erstellen und löschen

Verwenden Sie für Reporting-Jobs Lese-Scopes. Fügen Sie einen Schreib-Scope nur hinzu, wenn die Integration diese Änderung tatsächlich durchführt. Ein Lead-Export benötigt beispielsweise normalerweise sites:read und leads:read, nicht jedoch sites:write oder agents:write.

Scope-Fehler#

{
  "error": {
    "code": "insufficient_scope",
    "message": "The API key does not grant the required scope.",
    "details": { "required": ["sites:write"] },
    "request_id": "6c0b2f2e-..."
  }
}

Fügen Sie den fehlenden Scope dem Schlüssel unter Einstellungen → Entwickler → Bearbeiten hinzu, oder erstellen Sie einen Ersatzschlüssel und aktualisieren Sie das Server-Secret. Beim Bearbeiten werden Name und Scopes des Schlüssels direkt geändert; Ablaufdatum und Token bleiben gleich. Über OAuth ausgestellte Schlüssel können nicht bearbeitet werden; verbinden Sie die Anwendung erneut, um die erteilten Berechtigungen zu ändern.

Fehlerstruktur#

Alle API-Fehler verwenden dieselbe Struktur auf oberster Ebene:

type ApiError = {
  error: {
    code: string;
    message: string;
    details?: unknown;
    request_id: string;
  };
};

Verzweigen Sie anhand von error.code, nicht anhand der englischen message. Meldungen können ohne Versionswechsel verbessert werden. Protokollieren Sie error.request_id und den Response-Header x-request-id zusammen mit Operationsname, Status und Wiederholungsversuch – protokollieren Sie jedoch niemals den Authorization-Header oder geheime Anfragedaten.

Referenz zu Status und Codes#

HTTPStabiler CodeBedeutungÜbliche Reaktion
400invalid_requestDie Validierung ist fehlgeschlagen oder ein Feld wird nicht unterstütztKorrigieren Sie die Felder in details; wiederholen Sie die Anfrage nicht mit unveränderten Eingaben
400invalid_jsonDer Body ist kein JSON-Objekt oder enthält ungültiges JSONSerialisieren Sie genau ein gültiges JSON-Objekt
401authentication_requiredDer Bearer-Header fehltHängen Sie einen serverseitigen Zugangsschlüssel an
401invalid_api_keyDer Schlüssel ist ungültig, abgelaufen oder widerrufen, oder sein Owner existiert nicht mehrErsetzen oder rotieren Sie den Schlüssel
403subscription_requiredDer Owner hat keinen aktiven kostenpflichtigen TarifStellen Sie das Abonnement wieder her, bevor Sie es erneut versuchen
403insufficient_scopeDem Zugangsschlüssel fehlt der Scope der OperationErstellen Sie einen Ersatzschlüssel mit minimalen Berechtigungen
403account_pausedDer API-Zugriff für das Konto ist pausiertSetzen Sie den API-Zugriff fort oder wenden Sie sich an den Kontoinhaber
404not_foundEndpunkt oder eigene Ressource wurde nicht gefundenPrüfen Sie den Pfad und die zum Mandanten gehörende ID
409conflictDer aktuelle Zustand der Ressource verhindert die AktionLesen Sie den aktuellen Zustand, bevor Sie es erneut versuchen
413payload_too_largeDer JSON-Body überschreitet das Anfragelimit von 256 KBSenden Sie einen kleineren Body; teilen Sie große Inhalte auf mehrere Anfragen auf
415invalid_requestDer Body der Mutation ist nicht application/jsonSenden Sie Content-Type: application/json
429rate_limit_exceededDas Ein-Minuten-Kontingent des Tarifs für den Schlüssel ist aufgebrauchtWarten Sie die Zeit aus Retry-After ab und wenden Sie Jitter an
500internal_errorDie Anfrage konnte nicht abgeschlossen werdenWiederholen Sie sichere oder idempotente Operationen und melden Sie die Request-ID
503outcome_unknownEine Mutation wurde möglicherweise abgeschlossen, aber ihr Ergebnis konnte nicht erfasst werden; details.retryable ist falseNicht wiederholen. Lesen Sie die Ressource, um zu prüfen, ob die Änderung erfolgt ist; derselbe Idempotency-Key liefert weiterhin dieses Ergebnis

Ressourcen außerhalb des Kontos des Zugangsschlüssel-Owners können 404 zurückgeben, damit nicht offengelegt wird, ob die ID eines anderen Mandanten existiert.

Validierungsdetails#

Die Feldvalidierung gibt Pfade zurück, die Sie neben Ihren eigenen Formularfeldern anzeigen können:

{
  "error": {
    "code": "invalid_request",
    "message": "Request validation failed.",
    "details": [
      { "path": "content.headline", "message": "String must contain at least 1 character(s)" }
    ],
    "request_id": "6c0b2f2e-..."
  }
}

Bodys von Mutationen müssen JSON-Objekte sein. Arrays, leere Bodys, Formulardaten und JSON, das mit einem Text-Content-Type gesendet wird, werden abgelehnt.

Entscheidungen zu Wiederholungen#

  • Wiederholen Sie 429 nach der in Retry-After angegebenen Anzahl von Sekunden.
  • Wiederholen Sie 500 nur bei sicheren Lesevorgängen oder bei Schreibvorgängen, die mit demselben Idempotency-Key geschützt sind.
  • Wiederholen Sie das 409 der laufenden Idempotenzprüfung nach dem Header Retry-After: 2.
  • Wiederholen Sie 503 outcome_unknown niemals blind. Prüfen Sie zuerst die Ressource; verwenden Sie einen neuen Idempotency-Key erst, nachdem Sie bestätigt haben, dass die Änderung nicht erfolgt ist.
  • Wiederholen Sie 400, 401, 403, 404, 413 oder einen Zustandskonflikt nicht, bevor sich die Ursache geändert hat.

Informationen zum Backoff-Verhalten finden Sie unter Rate limits, den erforderlichen Scope für jede Operation unter API reference.