BerriAI/litellm · error · ManagementProblem
urn:litellm:error:duplicate-query-parameter
urn:litellm:error:duplicate-query-parameter
Error message
Repeated query parameter(s): {', '.join(duplicates)}. Each may appear once; use a comma-separated list for multiple sort keys or filter values. What it means
Error "Repeated query parameter(s): {', '.join(duplicates)}. Each may appear once; use a comma-separated list for multiple sort keys or filter values." thrown in BerriAI/litellm.
Source
Thrown at litellm/proxy/management_endpoints/management_v1/list_framework.py:522
async def handle_list(
spec: ListSpec[TRow, TOut],
executor: ListExecutor[TRow],
request: Request,
caller: UserAPIKeyAuth,
) -> ListResponse[TOut]:
"""Plan, execute, count, serialize, envelope. Failures reach the client as RFC 9457 problems."""
plan: Final = build_query_plan(spec=spec, params=request.query_params, caller=caller)
if isinstance(plan, ProblemDetail):
raise ManagementProblem(plan)
# Checked here rather than in build_query_plan because a Mapping[str, str] cannot
# represent a repeat: query_params.get() silently keeps the last one, so ?page=1&page=999
# would page from 999 without the caller ever being told which value won.
duplicates: Final = _duplicate_params(request)
if duplicates:
raise ManagementProblem(
_problem(
"duplicate-query-parameter",
"Duplicate query parameter",
400,
f"Repeated query parameter(s): {', '.join(duplicates)}. Each may appear once; "
f"use a comma-separated list for multiple sort keys or filter values.",
)
)
total_count: Final = await executor.count(plan.where)
rows: Final = await executor.find_many(plan)
total_pages: Final = ceil(total_count / plan.take)
page: Final = plan.skip // plan.take + 1
return ListResponse[TOut](
data=tuple(spec.serialize(row) for row in rows),
meta=ListMeta(
total_count=total_count,
page=page,View on GitHub (pinned to 77b7c6c40c)
Solutions
- Pass each query parameter only once; combine multiple values as a comma-separated list.
- Remove the duplicate parameter occurrences from the request URL.
When it happens
Trigger: Thrown at litellm/proxy/management_endpoints/management_v1/list_framework.py:522 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/9aeb74899341160c.
Report an issue: GitHub.