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

  1. Pass each query parameter only once; combine multiple values as a comma-separated list.
  2. 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.