HTTP 300 — Multiple Choices
HTTP 300 offers the client a menu: the resource has several representations or locations, and the response body lists them so the user agent — or the user — can pick one.
When 300 shows up
- Content negotiation endpoints exposing format or language variants.
- Legacy URL spaces maintained in more than one location.
Mocking a 300 response
A response with this status can be faked end to end with a local mock rule — no backend changes needed. The configuration below mirrors the rule fields the ApiSimul editor uses (method, path, status, delay in milliseconds, response body):
{
"method": "GET",
"path": "/files/report",
"status": 300,
"delay": 210,
"enabled": true,
"body": null
}Dynamic placeholders such as {{random.name}}, {{string.uuid}} or {{number.int 1 100}} can appear inside the body to vary each response, which keeps client-side list rendering and retry logic honest during development.
Frequently asked questions
What does HTTP 300 mean?
There is more than one possible answer, and the choice is left to the client. The body typically enumerates the options with their locations.
How can I test a 300 response without a real backend?
Define a mock rule with the method and path your client requests and set the status to 300. The example configuration above returns this response after the listed delay, so the client exercises its 300 handling exactly as it would against a live server.
Related status codes
Need the response in your own project? Spin up rules for any status with the ApiSimul mock server, or browse every status code page.