Skip to main content
Der API Gateway Blueprint sendet für jeden API-Aufruf, den Ihr Service verarbeitet, ein Nutzungsereignis an Dodo Payments. Ein Count-Meter wandelt diese Ereignisse für jeden Kunden in eine Gebühr pro Aufruf um. Verwenden Sie ihn, um die Nutzung von API-Endpunkten zu erfassen, Rate Limits zu informieren und API-Nutzung abzurechnen. Er ist im npm-Paket @dodopayments/ingestion-blueprints als trackAPICall() enthalten, das ein Ereignis pro Aufruf sendet, sowie als createBatch(), das Ereignisse bei hohen Anfragevolumen in eine Warteschlange stellt.

Anwendungsfälle

Der API Gateway Blueprint eignet sich für folgende Szenarien:

API-as-a-Service

Erfassen Sie auf einer API-Plattform die Aufrufe pro Kunde und rechnen Sie anhand der Anzahl der Aufrufe ab.

Rate Limiting

Erfassen Sie das Aufrufvolumen jedes Kunden, um nutzungsbasierte Rate Limits zu bestimmen. Der Blueprint erfasst die Nutzung, setzt aber keine Limits durch.

Performance Monitoring

Erfassen Sie Antwortzeiten und Status codes mit jedem Ereignis, damit Fehlerraten neben den Abrechnungsdaten angezeigt werden.

Multi-Tenant SaaS

Stellen Sie Kunden ihre API-Nutzung über verschiedene Endpunkte hinweg in Rechnung.
Jedes Ereignis benötigt die Dodo Payments-Kunden-ID des Kunden, dem Sie die Kosten in Rechnung stellen. Diese beginnt mit cus_. Speichern Sie sie beim Erstellen des Kunden zusammen mit Ihrem Benutzerdatensatz und übergeben Sie sie als customerId.

Schnellstart

Um API-Aufrufe zu erfassen, installieren Sie das Paket, erstellen Sie einen Meter und senden Sie für jeden Aufruf ein Ereignis.
1

Install the SDK

Installieren Sie das Dodo Payments Ingestion Blueprints-Paket:
2

Get Your API Keys

Erstellen Sie unter Developer → API Keys im Dodo Payments-Dashboard einen Dodo Payments API-Schlüssel und speichern Sie ihn in der Umgebungsvariable DODO_PAYMENTS_API_KEY. Verwenden Sie während der Entwicklung einen Testmodus-Schlüssel. Ein Testmodus-Schlüssel funktioniert nur mit test_mode.
3

Create a Meter

Öffnen Sie im Dodo Payments-Dashboard Products → Meters und klicken Sie auf Create Meter. Legen Sie die folgenden Felder fest:
  • Meter Name: ein beschreibender Name, zum Beispiel API Calls.
  • Event Name: api_call oder ein von Ihnen gewählter Name. Er muss exakt (unter Beachtung der Groß- und Kleinschreibung) mit eventName in Ihrem Code übereinstimmen.
  • Aggregation Type: Count, um nach der Anzahl der Aufrufe abzurechnen.
  • Measurement Unit: die auf Rechnungen angezeigte Einheit, zum Beispiel calls.
Um nur bestimmte Aufrufe zu zählen, aktivieren Sie Enable Event Filtering und fügen Sie Bedingungen für Metadaten-Schlüssel wie endpoint, method oder status_code hinzu.
4

Track API Calls

Erstellen Sie eine Ingestion-Instanz mit Ihrem API-Schlüssel und dem Ereignisnamen und wählen Sie anschließend ein Muster: ein Ereignis pro Aufruf, einen Batch für hohe Volumen oder Express.js-Middleware, die jede Anfrage erfasst. In der Middleware stammt req.user aus Ihrer Authentication-Middleware, und id muss eine Dodo Payments-Kunden-ID sein. Anfragen ohne angemeldeten Benutzer werden mit der Kunden-ID anonymous gesendet, die keinem Kunden entspricht.

Konfiguration

Ingestion-Konfiguration

Übergeben Sie diese Optionen an new Ingestion():
string
erforderlich
Ihr Dodo Payments API-Schlüssel aus dem Dashboard.
string
Umgebungsmodus: test_mode oder live_mode. Der Standardwert ist test_mode. Die Dodo Payments SDKs verwenden dagegen standardmäßig live_mode. Legen Sie daher in der Produktion live_mode explizit fest.
string
erforderlich
Ereignisname, der mit dem Event Name Ihres Meters übereinstimmt (unter Beachtung der Groß- und Kleinschreibung). Jedes von dieser Instanz gesendete Ereignis verwendet ihn.

Optionen zum Erfassen von API-Aufrufen

Übergeben Sie diese Optionen an trackAPICall() und batch.add():
string
erforderlich
Die Dodo Payments-Kunden-ID, der der Aufruf in Rechnung gestellt werden soll, zum Beispiel cus_123.
object
Optionale Metadaten zum API-Aufruf, zum Beispiel Endpunkt, Methode, Status code und Antwortzeit. Jeder Wert muss eine Zeichenfolge, eine Zahl oder ein Boolean sein. Die API lehnt verschachtelte Objekte, Arrays und null-Werte ab.

Batch-Konfiguration

createBatch(ingestion, options) stellt Ereignisse im Arbeitsspeicher in eine Warteschlange und gibt ein Objekt mit drei Methoden zurück: add() stellt ein Ereignis in die Warteschlange, flush() sendet die Ereignisse aus der Warteschlange und cleanup() sendet sie und stoppt den Timer. Ein Flush sendet parallel eine Ingest-Anfrage pro Ereignis.
number
Anzahl der Ereignisse in der Warteschlange, die einen sofortigen Flush auslöst. Standardwert: 100.
number
Anzahl der Millisekunden, die nach dem letzten add() gewartet wird, bevor der Batch geflusht wird. Jeder Aufruf von add() startet den Timer neu. Standardwert: 5000 (5 Sekunden).

Best Practices

Batch-Verarbeitung bei hohem Volumen verwenden: Verwende für Anwendungen mit hohem Datenverkehr createBatch(). batch.add() wird sofort zurückgegeben, sodass das Tracking keine Latenz zu deinem Request-Handler hinzufügt.
Ein Batch hält Ereignisse im Arbeitsspeicher, bis er geflusht wird, und wiederholt das Senden fehlgeschlagener Ereignisse nicht. Ein automatischer Flush protokolliert den Fehler mit console.error. Ein Aufruf von flush() oder cleanup() löst den Fehler aus.
Batches beim Herunterfahren bereinigen: Rufen Sie beim Herunterfahren Ihrer Anwendung batch.cleanup() auf, damit ausstehende Ereignisse geflusht werden und nicht verloren gehen.
Zuletzt geändert am 26. September 2026