BerriAI/litellm · error · HTTPException

Organization={organization_id} not found

Error message

Organization={organization_id} not found

What it means

Lookup guard inside the org delete loop: one of the organization_ids in the batch has no matching org row when its resources are being cleaned up, so the delete is aborted with 404 for that id. Partial deletes of earlier ids in the loop may already have occurred.

Source

Thrown at litellm/proxy/management_endpoints/organization_endpoints.py:947

        )

    deleted_orgs: Final = []
    for organization_id in data.organization_ids:
        # delete all teams in the organization
        await _table(TeamRepository(prisma_client)).delete_many(where={"organization_id": organization_id})
        # delete all members in the organization
        await _table(OrganizationMembershipRepository(prisma_client)).delete_many(
            where={"organization_id": organization_id}
        )
        # delete all keys in the organization
        await _table(VerificationTokenRepository(prisma_client)).delete_many(where={"organization_id": organization_id})
        # delete the organization
        deleted_org = await _table(OrganizationRepository(prisma_client)).delete(
            where={"organization_id": organization_id},
            include={"members": True, "teams": True, "litellm_budget_table": True},
        )
        if deleted_org is None:
            raise HTTPException(
                status_code=404,
                detail={"error": f"Organization={organization_id} not found"},
            )
        deleted_orgs.append(deleted_org)

    return deleted_orgs


@router.get(
    "/organization/list",
    tags=["organization management"],
    dependencies=[Depends(user_api_key_auth)],
    response_model=list[LiteLLM_OrganizationTableWithMembers],
)
async def list_organization(
    org_id: str | None = fastapi.Query(default=None, description="Filter organizations by exact organization_id match"),
    org_alias: str | None = fastapi.Query(
        default=None,

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Verify the organization_id exists via /organization/list.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at litellm/proxy/management_endpoints/organization_endpoints.py:947 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/c2da446f1521d7ae. Report an issue: GitHub.