{"record":{"id":"849b54fed57b28d9","repo":"getredash/redash","slug":"page-size-is-out-of-range-1-250","errorCode":null,"errorMessage":"Page size is out of range (1-250).","messagePattern":"Page size is out of range \\(1-250\\)\\.","errorType":"http","errorClass":null,"httpStatus":400,"severity":"error","filePath":"redash/handlers/base.py","lineNumber":90,"sourceCode":"        rv = fn(*args, **kwargs)\n        if rv is None:\n            abort(404)\n    except NoResultFound:\n        abort(404)\n    return rv\n\n\ndef paginate(query_set, page, page_size, serializer, **kwargs):\n    count = query_set.count()\n\n    if page < 1:\n        abort(400, message=\"Page must be positive integer.\")\n\n    if (page - 1) * page_size + 1 > count > 0:\n        abort(400, message=\"Page is out of range.\")\n\n    if page_size > 250 or page_size < 1:\n        abort(400, message=\"Page size is out of range (1-250).\")\n\n    results = query_set.paginate(page, page_size)\n\n    # support for old function based serializers\n    if isclass(serializer):\n        items = serializer(results.items, **kwargs).serialize()\n    else:\n        items = [serializer(result) for result in results.items]\n\n    return {\"count\": count, \"page\": page, \"page_size\": page_size, \"results\": items}\n\n\ndef org_scoped_rule(rule):\n    if settings.MULTI_ORG:\n        return \"/<org_slug>{}\".format(rule)\n\n    return rule\n","sourceCodeStart":72,"sourceCodeEnd":108,"githubUrl":"https://github.com/getredash/redash/blob/ca79fe988d81cdac9675b412f3dfcab107bc1fbc/redash/handlers/base.py#L72-L108","documentation":"Raised by paginate() in redash/handlers/base.py when page_size is greater than 250 or less than 1. Redash caps list endpoints at 250 items per page to bound response size and database load.","triggerScenarios":"Calling a list endpoint with ?page_size=0, a negative page_size, or ?page_size=500. Also omitting page_size where a caller defaults it to 0.","commonSituations":"Porting a client from an API with different limits (e.g. 1000 per page); setting page_size equal to the total count to fetch everything in one request.","solutions":["Set page_size between 1 and 250 inclusive.","To fetch a large dataset, loop over pages of 250 using the page parameter rather than increasing page_size.","Add client-side validation clamping page_size to 1-250."],"exampleFix":"# before\nresp = client.get('/api/queries?page=1&page_size=1000')\n\n# after\nresp = client.get('/api/queries?page=1&page_size=250')","handlingStrategy":"validation","validationCode":"page_size = min(max(int(page_size_arg), 1), 250)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Hard-code 250 as the client-side max page size for Redash list endpoints.","Implement a paging loop instead of trying to fetch everything at once."],"tags":["pagination","bad-request","redash","api","limit"],"backgroundTag":"pagination-page-size-limit","analyzedSha":"ca79fe988d81cdac9675b412f3dfcab107bc1fbc","analyzedAt":"2026-08-28T18:32:34.637Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}