Reference guide · http-status · Published 2026-08-16 · 3 min read
HTTP 207 multi status explained
HTTP 207 Multi-Status explained: when a batch request returns many statuses, how the WebDAV body works, and how to handle it as a client.
- ·What 207 means
- ·WebDAV popularity
- ·Read and retry
HTTP 207 Multi-Status is a batch result: a single response that packs multiple independent outcomes into a structured body. It was created for WebDAV (PROPFIND, PROPPATCH, COPY, MOVE), where one request acts on several resources at once, and for that reason it is the response you will almost never meet on a normal website. Your site will not return one, and almost nobody hits it from a browser. Where it matters is API and tooling code that speaks WebDAV.
What 207 means
A 207 tells the client: the request bundled N sub-operations, and each one has its own status, which may differ. The HTTP status line alone cannot say the batch half-succeeded, so the body carries a <multistatus> XML document in the WebDAV shape:
<?xml version="1.0" encoding="utf-8"?>
<d:multistatus xmlns:d="DAV:">
<d:response>
<d:href>/files/a.txt</d:href>
<d:propstat>
<d:prop><d:getetag>"5d3-2e5"</d:getetag></d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>/files/b.txt</d:href>
<d:status>HTTP/1.1 507 Insufficient Storage</d:status>
</d:response>
</d:multistatus>
Why you will not see it on a website
The success family of statuses in a browser is locked to 200; a server that answers 207 wants its own reader. Web pages and CDNs do not emit 207, because there is no web request where one response has to narrate many resources. Where it appears is WebDAV-based sync clients, document management servers, and calendars over CalDAV (which build on WebDAV).
If your API or tooling returns 207
- Read the whole body, not the status. A 207 response can contain a few 200s and one 507; a client that treats "207 means failed" or "207 means fine" misreports the batch.
- Pick the real verdict per response. Keep the per-resource
propstat/statusand surface the resource and its result, not a single "the sync worked". - Batch semantics: a
COPYof ten files where the first succeeds and the ninth fails is a legitimate 207; a tool that retries the batch should retry only the failed<href>unless the operation is atomic. - Map to MIME if you build a WebDAV server: 207 must not be sent for a response that is not a
multistatusbody, and a 207 without the body is malformed.
The start of many codes
Putting 2xx semantics over a body applies to more than WebDAV; the family rule is what a response means per resource:
| Status | One resource | Body | Real-world use |
|---|---|---|---|
| 200 | Yes | The content | Website, API hit |
| 206 | One resource, a range | Partial bytes | Video, page break |
| 207 | Many resources | multistatus list | WebDAV batch |
So a 207 with a list is not a bug: it is the batch contract, the same way a 206 is the range contract.
When to involve a professional
If your CMS or file-management plugin suddenly logs a 207 from a WebDAV client, check the client and the storage, not the site. A storage backend that answers 507 Insufficient Storage inside the 207 means the provider quota is the blocker, not a PHP error.