Skip to main content
El API Gateway Blueprint envía un evento de uso a Dodo Payments por cada llamada a la API que gestione tu servicio, y un medidor Count convierte esos eventos en un cargo por llamada para cada cliente. Úsalo para hacer un seguimiento del uso de los endpoints de la API, informar sobre los límites de velocidad y facturar el uso de la API. Se incluye en el paquete npm @dodopayments/ingestion-blueprints como trackAPICall(), que envía un evento por llamada, y createBatch(), que pone en cola los eventos cuando hay grandes volúmenes de solicitudes.

Casos de uso

El API Gateway Blueprint es adecuado para estos escenarios:

API-as-a-Service

Haz un seguimiento de las llamadas por cliente en una plataforma de API y cobra según el número de llamadas.

Rate Limiting

Registra el volumen de llamadas de cada cliente para informar sobre los límites de velocidad basados en el uso. El blueprint registra el uso, pero no aplica los límites.

Performance Monitoring

Registra los tiempos de respuesta y los códigos de estado con cada evento, de modo que las tasas de error aparezcan junto a los datos de facturación.

Multi-Tenant SaaS

Factura a los clientes por su consumo de la API en diferentes endpoints.
Cada evento necesita el ID de cliente de Dodo Payments del cliente al que facturas, que comienza por cus_. Guárdalo con el registro del usuario cuando crees el cliente y pásalo como customerId.

Inicio rápido

Para hacer un seguimiento de las llamadas a la API, instala el paquete, crea un medidor y envía un evento por cada llamada.
1

Install the SDK

Instala el paquete Dodo Payments Ingestion Blueprints:
2

Get Your API Keys

Crea una clave de API de Dodo Payments en Developer → API Keys dentro del panel de Dodo Payments y guárdala en la variable de entorno DODO_PAYMENTS_API_KEY. Usa una clave de modo de prueba mientras desarrollas. Una clave de modo de prueba solo funciona con test_mode.
3

Create a Meter

En el panel de Dodo Payments, ve a Products → Meters y haz clic en Create Meter. Configura estos campos:
  • Meter Name: un nombre descriptivo, como API Calls.
  • Event Name: api_call o el nombre que elijas. Debe coincidir exactamente con eventName en tu código (distingue entre mayúsculas y minúsculas).
  • Aggregation Type: Count, para facturar según el número de llamadas.
  • Measurement Unit: la unidad que se muestra en las facturas, como calls.
Para contar solo algunas llamadas, activa Enable Event Filtering y añade condiciones sobre claves de metadatos como endpoint, method o status_code.
4

Track API Calls

Crea una instancia de Ingestion con tu clave de API y el nombre del evento, y luego elige un patrón: un evento por llamada, un lote para grandes volúmenes o middleware de Express.js que haga un seguimiento de cada solicitud. En el middleware, req.user procede de tu middleware de autenticación y su id debe ser un ID de cliente de Dodo Payments. Las solicitudes sin un usuario autenticado se envían con el ID de cliente anonymous, que no coincide con ningún cliente.

Configuración

Configuración de ingestión

Pasa estas opciones a new Ingestion():
string
requerido
Tu clave de API de Dodo Payments del panel.
string
Modo de entorno: test_mode o live_mode. El valor predeterminado es test_mode. En cambio, los SDK de Dodo Payments usan live_mode de forma predeterminada, así que establece live_mode explícitamente en producción.
string
requerido
Nombre del evento que coincide con Event Name de tu medidor (distingue entre mayúsculas y minúsculas). Todos los eventos que envíe esta instancia lo utilizarán.

Opciones para hacer un seguimiento de llamadas a la API

Pasa estas opciones a trackAPICall() y batch.add():
string
requerido
El ID de cliente de Dodo Payments al que facturar la llamada, por ejemplo, cus_123.
object
Metadatos opcionales sobre la llamada a la API, como el endpoint, el método, el código de estado y el tiempo de respuesta. Cada valor debe ser una cadena, un número o un booleano. La API rechaza objetos anidados, arrays y valores null.

Configuración de lotes

createBatch(ingestion, options) pone los eventos en cola en memoria y devuelve un objeto con tres métodos: add() pone un evento en cola, flush() envía los eventos en cola y cleanup() los envía y detiene el temporizador. Un vaciado envía una solicitud de ingestión por evento, en paralelo.
number
Número de eventos en cola que activa un vaciado inmediato. Valor predeterminado: 100.
number
Milisegundos que se deben esperar después del add() más reciente antes de vaciar el lote. Cada add() reinicia el temporizador. Valor predeterminado: 5000 (5 segundos).

Prácticas recomendadas

Usa el procesamiento por lotes para un volumen alto: Para aplicaciones con mucho tráfico, usa createBatch(). batch.add() devuelve inmediatamente, por lo que el seguimiento no añade latencia a tu gestor de solicitudes.
Un lote mantiene los eventos en memoria hasta que se vacía y no reintenta los eventos cuyo envío falla. Un vaciado automático registra el error con console.error. Una llamada a flush() o cleanup() lo lanza.
Limpia los lotes al apagar la aplicación: llama a batch.cleanup() cuando la aplicación se cierre para que los eventos pendientes se vacíen en lugar de perderse.
Última modificación el 26 de septiembre de 2026