207

Multi-Status

2xx Success

ELI5

I did multiple things for you - some worked, some didn't. Here's a detailed report of what happened to each item.

Server perspective

Use 207 mainly in WebDAV when one request needs to report separate statuses for multiple resources or properties.

When to use

  • Return 207 for PROPFIND, PROPPATCH, or other WebDAV operations with mixed per-item outcomes
  • Use it when one top-level status code would lose too much detail
  • WebDAV bulk operations with mixed results
  • PROPFIND operations returning multiple resource properties
  • File system operations affecting multiple files/folders
  • Binding-aware collection traversals where descendants can have different outcomes
  • Bulk property updates with partial success

How to respond

  • Return a DAV:multistatus XML body with per-resource or per-property results
  • Be explicit about which resource each embedded status applies to

Headers to consider

  • No status-specific header is required; set Content-Type for the DAV multi-status body.

Response body

  • Include an XML multi-status document that enumerates the detailed outcomes

Server-side pitfalls

  • Do not use 207 as a vague batch-success shortcut outside clients that understand the format
  • Do not rely on the top-level 207 alone; the real detail lives in the body
  • Single-resource operations with a single clear outcome
  • Typical REST APIs where a normal resource representation or job resource communicates better
  • Cases where the client cannot parse WebDAV multi-status XML

Examples

WebDAV bulk property update

Request:PROPPATCH https://api.example.test/folder/
Response:207 Multi-Status # Headers Content-Type: application/xml; charset=utf-8 # Body <multistatus xmlns="DAV:">...</multistatus>

The server reports per-resource outcomes because one overall status code would hide important detail.

Bulk file operation results

Request:COPY https://api.example.test/source/ # Headers Destination: https://api.example.test/destination/
Response:207 Multi-Status # Headers Content-Type: application/xml; charset=utf-8 # Body <multistatus xmlns="DAV:">...</multistatus>

The response body gives a per-resource report instead of pretending the whole batch had one simple outcome.

References

Related Status Codes