300

Multiple Choices

Overview

300 Multiple Choices means the requested resource has several possible representations, and the client or user must pick one. The server sends it when content negotiation alone cannot automatically choose a single option, so it presents a list of candidates.

For example, when a document exists in multiple languages, formats (HTML/PDF), or resolutions, the server lists the choices in the body or Link headers and lets the user select.

When it happens

Request / Response example

Request
GET /manual HTTP/1.1
Host: docs.example.com
Accept: text/html
Response
HTTP/1.1 300 Multiple Choices
Content-Type: text/html
Link: </manual.en.html>; rel=alternate; hreflang=en
Link: </manual.ko.html>; rel=alternate; hreflang=ko

<ul><li><a href="/manual.en.html">English</a></li><li><a href="/manual.ko.html">한국어</a></li></ul>

In code

app.get('/manual', (req, res) => {
  res.status(300).json({
    choices: ['/manual.en.html', '/manual.ko.html']
  });
});

Notes

Related status codes

Related headers

Specification