Delete trace annotations in a project that match the supplied filter.
Hard-delete trace annotations within the named project that match the supplied filter.
- The request must either supply both
start_timeANDend_timeto bound the delete to a[start_time, end_time)time window, OR setdelete_all=trueto acknowledge an unbounded sweep. A request that satisfies neither is rejected with 422. name,identifier, andannotator_kindare optional narrowing filters; on their own they do NOT authorize the request — they only narrow within an already-authorized request (bounded time range ordelete_all=true).- All supplied filters are combined with AND.
nameandidentifier, when present, must be non-empty. start_timeis inclusive (>=);end_timeis exclusive (<). When both are supplied,start_timemust be strictly earlier thanend_time(else 422). A half-bounded range (only one of the two) does NOT satisfy the gate and is rejected unlessdelete_all=trueis also set. Naive datetimes are interpreted as UTC.- The endpoint is idempotent: a request that matches no rows still returns 204.
- When authentication is enabled, non-admin callers can only delete rows
they own (
user_id == current_user.id); admins delete all matching rows.
Path Parameters
The project identifier: either project ID or project name. If using a project name as the identifier, it cannot contain slash (/), question mark (?), or pound sign (#) characters.
Query Parameters
Optional annotation name. When provided, must be non-empty and narrows the delete to annotations of that name.
1Optional annotation identifier. When provided, must be non-empty and narrows the delete to annotations with that identifier.
1Optional annotator kind. When provided, narrows the delete to annotations produced by this annotator kind.
LLM, CODE, HUMAN Optional inclusive lower bound on created_at (>=). Naive datetimes are interpreted as UTC.
Optional exclusive upper bound on created_at (<). Naive datetimes are interpreted as UTC.
Opt-in flag that authorizes the request without a bounded [start_time, end_time) time window. When false (default) or absent, the request must supply both start_time AND end_time to bound the delete. When true, the time-range bound is waived and any other filters (name, identifier, annotator_kind) still narrow the delete within the project — e.g. delete_all=true&name=X deletes all annotations named X regardless of time.
Response
Successful Response

