Model.delete_events() method or the Delete Events REST API.
Deleting events with the Python client requires
fiddler-client 3.13.0 or later. On earlier client versions, use the REST API directly. See the Python SDK changelog for release details.- Complying with data privacy regulations (GDPR, CCPA, etc.)
- Removing erroneously published data
- Correcting data inaccuracies
Deletion Methods
Fiddler supports two filtering methods for deletion (only one method can be used per request):Delete by Event ID
Delete specific inference events by providing their unique identifiers. The event ID corresponds to theevent_id_col specified during Model onboarding.
Event IDs are designed to be unique. If duplicate
event_id values have been published, deleting by event ID will remove all events matching those IDs from the raw events table. Aggregated metrics are not recalculated for event ID-based deletions — requests that combine event_ids with update_metrics=True are rejected. See event deduplication for avoiding duplicate events. You can delete up to 10,000 events per request. If you need to delete more events in one request, please contact Fiddler support.Delete by Timestamp Range
Delete events that fall within a designated time range by specifying start and end timestamps. The filtering is based on the timestamp column (event_ts_col) defined during Model onboarding. Deletions are processed in batches (default batch size: 100K events) to ensure efficiency and resilience.
Both timestamps must be aligned to hour boundaries (for example, 2025-11-17T01:00:00Z), and the range applies as start_time ≤ t < end_time.
Ensure that the
max_memory_usage setting in ClickHouse is configured to handle the number of events specified by the batch size (controlled by the EVENT_DELETION_BATCH_SIZE environment variable). You can delete up to 100 million events per day using this endpoint. If you require a higher daily deletion limit, please contact Fiddler support.Impact on Monitoring Metrics
When deleting inference data with the time range filter, you can control how the deletion affects your monitoring metrics using theupdate_metrics parameter:
- Preserve existing aggregated metrics (default):
update_metrics=False - Recalculate metrics to reflect the data removal:
update_metrics=True
update_metrics applies only to time range deletions. Event ID-based deletions do not recalculate aggregated metrics, and requests that set update_metrics=True together with event_ids are rejected.
Important Considerations
- Deletions are permanent and cannot be undone
- Pre-production (baseline) datasets do not support row-level deletion
- Large-scale deletions may temporarily impact data ingestion performance.
- By default, the event deletion API allows up to 30 requests per day.
- If the rate limit is exceeded, the API will return a
429 Too Many Requestsresponse, along with rate limiting headers:X-RateLimit-Limit– The maximum number of allowed requests in the current window.X-RateLimit-Remaining– The number of remaining requests in the current window.Retry-After– The number of seconds to wait before retrying, or the HTTP date when the rate limit resets.X-RateLimit-Reset– The UTC epoch time (seconds) when the current rate limiting window resets.
Deleting Events with the Python Client
UseModel.delete_events() to delete events directly from the Python client (fiddler-client 3.13.0+). Deletion runs asynchronously on the server: the method returns a Job you can wait on or poll for completion.
Example: Deleting Events by Timestamp Range
Example: Deleting Events by Event ID
- Provide either a time range or a list of event IDs in a single request — not both.
start_timeandend_timemust be provided together. Naive datetimes (without timezone information) are rejected; non-UTC values are normalized to UTC.- A call with no filter is rejected, to avoid accidentally deleting all events for a model.
Deleting Events with the REST API
The Delete Events REST API (DELETE /v3/events) accepts the following parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
| model_id | UUID | - | Unique identifier for the model from which production events are deleted. |
| time_range | Optional[dict] | - | Dictionary with start_time (inclusive) and end_time (exclusive) in UTC, both aligned to the hour (format: 'YYYY-MM-DD HH:00:00'). Specify timestamps so that the entire range covers complete hours—do not use minutes or seconds. The range filter applies as start_time ≤ t < end_time. |
| event_ids | Optional[list] | - | List of event_ids to be deleted. |
| update_metrics | Optional[bool] | False | Determines if the monitoring metrics are recalculated to reflect the changes. Supported for time range deletions only. |
Example: Deleting Inference Events by Timestamp Range
Example: Deleting Inference Events by Event IDs
📘 Please delete events with caution when update_metrics=True. We recommend not deleting events while there is an ongoing publish or update operation within the same data range.