# 207 Multi-Status

> https://http-status.org/docs/207

**Family:** 2xx Success

## Rationale

Multiple operations with mixed success/failure results (WebDAV).

## In Plain Terms

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

## Description

The HTTP 207 Multi-Status status code is a WebDAV response that carries per-resource or per-property results inside an XML body when one top-level status code would hide important detail.

## Server Perspective

### Usage
- 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

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

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

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

### 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

## Client Perspective

### Pitfalls
- Do not read 207 as 'all good'; parse the body before deciding what actually succeeded

## Examples

### WebDAV bulk property update

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

**Request:**
```
PROPPATCH https://api.example.test/folder/
```

**Response:**
```
207 Multi-Status
Content-Type: application/xml; charset=utf-8

<multistatus xmlns="DAV:">...</multistatus>
```

### Bulk file operation results

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

**Request:**
```
COPY https://api.example.test/source/
Destination: https://api.example.test/destination/
```

**Response:**
```
207 Multi-Status
Content-Type: application/xml; charset=utf-8

<multistatus xmlns="DAV:">...</multistatus>
```

## Related Codes

- [200 OK](/docs/200.md)
- [206 Partial Content](/docs/206.md)
- [208 Already Reported](/docs/208.md)
- [422 Unprocessable Content](/docs/422.md)
- [508 Loop Detected](/docs/508.md)

