Best Practices

Learn best practices for using Limitry

Follow these best practices to get the most out of Limitry.

Idempotency

Always use idempotency keys when tracking events to prevent duplicates.

await client.track.trackUsage({
  customerId: 'customer_123',
  eventType: 'model_call',
  idempotencyKey: `req_${requestId}`, // Unique per request
  // ... other fields
});
await client.track.track_usage(
    customer_id="customer_123",
    event_type="model_call",
    idempotency_key=f"req_{request_id}",  # Unique per request
    # ... other fields
)

Error Handling

Handle errors gracefully and implement retries.

try {
  await client.track.trackUsage({ /* ... */ });
} catch (error) {
  if (error.status === 429) {
    // Rate limited, retry after delay
  } else {
    // Log error but don't block request
    console.error('Failed to track usage:', error);
  }
}
try:
    await client.track.track_usage(...)
except Exception as error:
    if error.status == 429:
        # Rate limited, retry after delay
        pass
    else:
        # Log error but don't block request
        print(f"Failed to track usage: {error}")

Batch Operations

Use batch endpoints when tracking multiple events.

await client.events.batch({
  events: [
    { customerId: 'customer_123', eventType: 'model_call', /* ... */ },
    { customerId: 'customer_123', eventType: 'model_call', /* ... */ },
  ],
});
await client.events.batch(
    events=[
        {"customer_id": "customer_123", "event_type": "model_call", ...},
        {"customer_id": "customer_123", "event_type": "model_call", ...},
    ],
)

Next Steps

On this page