HTTP status code · Success (2xx)
207 Multi-Status
207 Multi-Status means the response body holds separate status codes for several operations, because one code cannot describe them all. It comes from WebDAV (RFC 4918), where a PROPFIND or a bulk COPY returns an XML multistatus document with a status per resource.
| Class | 2xx, Success |
|---|---|
| Defined in | RFC 4918 §11.1 |
| Cacheable by default | Only with explicit Cache-Control or Expires |
| Safe to retry | Retry only the operations whose own status in the body failed |
| Relevant headers |
|
What 207 means
RFC 4918, sections 11.1 and 13, define the body: a DAV:multistatus root with one DAV:response per resource, each holding an href and either a status line or propstat blocks. The top-level 207 says nothing about whether the parts succeeded; a client has to read every entry, where it may find 200, 403, 423 Locked or 424 Failed Dependency.
Some JSON APIs borrow 207 for batch endpoints. That is not standardized: the JSON shape is whatever the API documents, so generic clients cannot interpret it.
When to use it
- WebDAV servers answering PROPFIND, PROPPATCH, or COPY, MOVE and DELETE on collections with mixed results.
- Batch APIs where some items succeed and others fail, as long as clients know the body format.
How to send 207
The status of each part lives in the body, so the example shows the XML shape once instead of repeating it per framework.
app.delete('/files/', (req, res) => {
res.status(207).type('application/xml').send(`<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>/files/a.txt</D:href>
<D:status>HTTP/1.1 200 OK</D:status>
</D:response>
<D:response>
<D:href>/files/locked.txt</D:href>
<D:status>HTTP/1.1 423 Locked</D:status>
</D:response>
</D:multistatus>`);
});Commonly confused with
- 207 vs 200
- 200 reports one outcome for the whole request; 207 means you must look inside the body for each item's outcome.
- 207 vs 208
- 208 Already Reported appears only inside a 207 body, marking members that were listed earlier in the same response.
Frequently asked questions
- Does a 207 response mean everything succeeded?
- No. It only says the body has several results. Each DAV:response carries its own status, and any of them can be an error such as 403 or 423.
- Can I use 207 in a JSON REST API?
- You can, but outside WebDAV there is no standard body format, so document it clearly. Many APIs instead return 200 with a per-item results array.
- Which spec defines 207 Multi-Status?
- RFC 4918, the WebDAV specification, in section 11.1, with the body format in section 13. It was first introduced in RFC 2518 in 1999.
Last reviewed by Arielton Oberek.