# 510 Not Extended

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

**Family:** 5xx Server Error

## Rationale

Further extensions to the request are required for it to be fulfilled.

## In Plain Terms

Your request needs additional extensions or features that haven't been negotiated or enabled yet.

## Description

The HTTP 510 Not Extended status code indicates that further extensions to the request are required for the server to fulfill it. This status code is rarely used in practice.

## Server Perspective

### Usage
- Return 510 for explicit extension-policy failures, especially in systems that rely on mandatory HTTP extensions
- Use it when the request must be extended or renegotiated before the server can process it
- A mandatory HTTP extension declared or required by the request is not supported
- The server cannot process the request unless additional extension information is supplied
- Specialized extension-based protocols built on HTTP require explicit negotiation

### Implementation
- Describe which extension or extension declaration is missing or unsupported so advanced clients can recover
- Validate that the failure is about extension policy, not a generic unsupported method or malformed request

### Common Headers
- No status-specific header is required; if your extension model uses hop-by-hop metadata, document the expected Connection behavior clearly

### Body
- A body is recommended; identify the required or unsupported extension and the expected negotiation contract

### Pitfalls
- Do not use 510 for mainstream API feature gaps that are better represented as 400, 404, 405, or 501
- Do not assume intermediaries preserved extension-related hop-by-hop headers unless you validated that path
- Standard HTTP operations (use other appropriate codes)
- Method not implemented (use 501 Not Implemented)
- Feature not available for reasons unrelated to HTTP extension policy (use 501 Not Implemented or another more specific status)

## Client Perspective

### Pitfalls
- Do not treat 510 like a temporary outage
- Do not keep resending the same mandatory extension request without verifying server support

## Examples

### Missing required extension

Server requires specific HTTP extension to be negotiated first

**Request:**
```
GET https://api.example.test/resource
```

**Response:**
```
510 Not Extended
Content-Type: application/json

{
  "error": "not_extended"
}
```

## Related Codes

- [400 Bad Request](/docs/400.md)
- [501 Not Implemented](/docs/501.md)
- [505 HTTP Version Not Supported](/docs/505.md)

