Utilo

HTTP 208 Already Reported – Free, Online, Private

208 Already Reported tells a WebDAV client this binding was already listed in the same multi-status.

What HTTP 208 means

208 appears inside WebDAV binding responses. It says the resource has already been enumerated in the current result, so the server will not expand it again. That prevents a cycle of bindings from producing an infinite report. It is not a general 'duplicate request' status for ordinary APIs. You will almost never return it from a JSON service.

208 Already Reported belongs to the 2xx successful class. Clients that only look at the class will group it with its neighbors. Clients that care about the exact code should use the narrower rule on this page, because the class is only the first digit.

When you see HTTP 208

When you see HTTP 208 Already Reported, stop on that exact status line. 208 Already Reported tells a WebDAV client this binding was already listed in the same multi-status. The trace that usually produces it: A depth listing walked a binding it had already emitted. The 2xx successful class only tells you the first digit. A neighbor in that class is a different fault, and the fix on this page does not transfer to it.

Use 208 inside a WebDAV 207 body when a binding was already reported. Do not use it to deduplicate a POST. Idempotency for a create is 200 or 201 with the existing resource, or 409, depending on the contract. 208 is about a traversal, not about a write.

How to fix HTTP 208

To fix HTTP 208, change the condition that made the server choose Already Reported. If you are walking a WebDAV tree, skip members marked 208. If you are not a WebDAV client and you see 208, treat it as an unexpected status and read the API's documentation rather than retrying. Do not retry in order to get a body. The server is telling you the body was already delivered in this result. If the log line is a different code, leave this page. The mix-up people make with 208 is this one: 409 Conflict is a write collision. 208 is a traversal note. They are not interchangeable.

  • A client did not understand 208 and treated the member as an error.
  • A non-WebDAV API returned 208 for a duplicate payment and the caller retried forever.
  • A cycle in bindings would have looped without 208, and with it the listing stopped.

An access log that only stores 208 is not enough to tell these apart. Keep the method, the path, and a request id. Do not keep the Authorization header or a request body that might be a token. The status explains the outcome. It is not a place to echo secrets back to the client either.

Example response

HTTP 208 Already ReportedHTTP/1.1 208 Already Reported

In practice 208 is a status line inside a 207 multistatus element more often than it is the top-level HTTP status. The meaning is the same: stop, you have already seen this resource in this response. There is no new representation.

What the client should do

If you are walking a WebDAV tree, skip members marked 208. If you are not a WebDAV client and you see 208, treat it as an unexpected status and read the API's documentation rather than retrying.

Do not cache 208 as the representation of the resource. The representation was reported elsewhere in the same response.

Do not retry in order to get a body. The server is telling you the body was already delivered in this result.

Codes people confuse with HTTP 208

409 Conflict is a write collision. 208 is a traversal note. They are not interchangeable.

Frequently asked questions

Is 208 a duplicate-POST status?

No. It belongs to WebDAV binding reports. Use your API's idempotency rules for duplicate writes.

Where does 208 usually appear?

Inside a 207 Multi-Status body, on a member that was already listed.

Should the client fetch the resource again?

No. The point is that it was already reported.

Is it an error?

No. It stops a cycle. The listing is still a success.

What should I do first when I see HTTP 208?

Read the status as 208 Already Reported specifically. 208 Already Reported tells a WebDAV client this binding was already listed in the same multi-status. Then check the cause that matches the request you sent, starting with: A depth listing walked a binding it had already emitted.