208 Already Reported

HTTP response status code 208 Already Reported indicates a resource has already been enumerated in a previous part of the 207 response. Servers use this code to avoid repeating information about a resource with multiple bindings, preventing both redundant data and infinite loops.

Usage

When a client receives 208 Already Reported inside a 207 multi-status body, the resource was already described earlier in the same response. No additional details are provided for the duplicate entry.

This status code exists specifically for WebDAV Binding Extensions. A resource bound to multiple locations within the same collection appears once in full and once as 208 Already Reported, breaking potential recursion when a Depth: infinity request encounters a resource referencing itself.

WebDAV Only

The 208 Already Reported status code appears exclusively inside 207 multi-status response bodies. A server never sends 208 as a top-level HTTP response status.

Example

The client sends a PROPFIND request with Depth: infinity to enumerate the /main/ collection. The /main/dependent resource is bound to the same underlying resource as /main/ itself.

The server returns the full details for /main/ first, then returns 208 Already Reported for /main/dependent to break the recursive loop.

Request

PROPFIND /main/ HTTP/1.1
Host: www.example.re
Depth: infinity
DAV: bind
Content-Type: application/xml; charset="utf-8"
Content-Length: 139

<?xml version="1.0" encoding="utf-8" ?>
<d:propfind xmlns:d="DAV:">
  <d:prop>
    <d:name/>
    <d:link/>
  </d:prop>
</d:propfind>

Response

HTTP/1.1 207 Multi-Status
Content-Type: application/xml; charset="utf-8"
Content-Length: 568

<?xml version="1.0" encoding="utf-8" ?>
<d:multistatus xmlns:d="DAV:">
  <d:response>
    <d:href>http://example.re/main/</d:href>
    <d:propstat>
      <d:prop>
        <d:name>Main Resource</d:name>
        <d:resource-id>
          <href>urn:uuid:1234-0000</href>
        </d:resource-id>
      </d:prop>
      <d:status>HTTP/1.1 200 OK</d:status>
    </d:propstat>
  </d:response>
  <d:response>
    <d:href>
      http://example.re/main/dependent
    </d:href>
    <d:propstat>
      <d:prop>
        <d:name>Main Resource</d:name>
        <d:resource-id>
          <href>urn:uuid:1234-0000</href>
        </d:resource-id>
      </d:prop>
      <d:status>
        HTTP/1.1 208 Already Reported
      </d:status>
    </d:propstat>
  </d:response>
</d:multistatus>

Code references

.NET

HttpStatusCode.AlreadyReported

Rust

http::StatusCode::ALREADY_REPORTED

Rails

:already_reported

Go

http.StatusAlreadyReported

Symfony

Response::HTTP_ALREADY_REPORTED

Python3.5+

http.HTTPStatus.ALREADY_REPORTED

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_ALREADY_REPORTED

Angular

@angular/common/http/HttpStatusCode.AlreadyReported

Takeaway

HTTP response status code 208 Already Reported tells the client a resource was already enumerated earlier in the same 207 response body. This prevents duplicate data and breaks infinite loops caused by recursive bindings in WebDAV collections.

See also

Last updated: March 11, 2026