The HTTP SUBSCRIBE Method
draft-prakash-http-subscribe-00
This document is an Internet-Draft (I-D).
Anyone may submit an I-D to the IETF.
This I-D is not endorsed by the IETF and has no formal standing in the
IETF standards process.
| Document | Type | Active Internet-Draft (individual) | |
|---|---|---|---|
| Author | Amit Prakash | ||
| Last updated | 2026-07-03 | ||
| RFC stream | (None) | ||
| Intended RFC status | (None) | ||
| Formats | |||
| Stream | Stream state | (No stream defined) | |
| Consensus boilerplate | Unknown | ||
| RFC Editor Note | (None) | ||
| IESG | IESG state | I-D Exists | |
| Telechat date | (None) | ||
| Responsible AD | (None) | ||
| Send notices to | (None) |
draft-prakash-http-subscribe-00
HTTP Working Group (httpbis) A. Prakash
Internet-Draft Boeing
Intended status: Standards Track 4 July 2026
Expires: 5 January 2027
The HTTP SUBSCRIBE Method
draft-prakash-http-subscribe-00
Abstract
This document defines the HTTP SUBSCRIBE request method. The
SUBSCRIBE method allows a client to establish a long-lived, safe
connection to a resource to receive real-time updates and event
streams. It enables servers to push data to clients using standard
HTTP structures (such as HTTP/2 or HTTP/3 streams) while supporting a
request body for subscription parameters, avoiding the protocol-
switching overhead of WebSockets and the URL limitations of Server-
Sent Events (SSE) via GET.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on 5 January 2027.
Copyright Notice
Copyright (c) 2026 IETF Trust and the persons identified as the
document authors. All rights reserved.
Prakash Expires 5 January 2027 [Page 1]
Internet-Draft HTTP SUBSCRIBE July 2026
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components
extracted from this document must include Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. The SUBSCRIBE Method . . . . . . . . . . . . . . . . . . . . 3
3.1. Request Semantics . . . . . . . . . . . . . . . . . . . . 3
3.2. Response Semantics . . . . . . . . . . . . . . . . . . . 4
4. Client and Server Behavior . . . . . . . . . . . . . . . . . 4
4.1. Client Behavior . . . . . . . . . . . . . . . . . . . . . 4
4.2. Server Behavior . . . . . . . . . . . . . . . . . . . . . 5
5. Caching Considerations . . . . . . . . . . . . . . . . . . . 5
6. Security Considerations . . . . . . . . . . . . . . . . . . . 5
6.1. Connection Exhaustion (DoS) . . . . . . . . . . . . . . . 5
6.2. Authentication and Authorization . . . . . . . . . . . . 6
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 6
8.1. Normative References . . . . . . . . . . . . . . . . . . 6
8.2. Informative References . . . . . . . . . . . . . . . . . 6
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 7
1. Introduction
Modern web applications require efficient, low-latency, and real-time
communication channels from the server to the client. Examples
include chat applications, stock market tickers, collaborative
document editing, and live dashboards.
Historically, real-time push has been achieved using three primary
workarounds:
1. *Long Polling:* Recreating HTTP requests continuously. This is
highly inefficient and creates substantial connection overhead.
2. *WebSockets:* Upgrades the connection from HTTP to a separate
bidirectional TCP-based protocol. While efficient, it bypasses
HTTP intermediaries (like load balancers, reverse proxies, and
Web Application Firewalls), breaks semantic caching, complicates
authentication, and often struggles with strict enterprise
firewalls.
Prakash Expires 5 January 2027 [Page 2]
Internet-Draft HTTP SUBSCRIBE July 2026
3. *Server-Sent Events (SSE):* Utilizes standard HTTP GET requests
with text/event-stream responses. However, because GET requests
do not support a request body, clients must pass subscription
parameters (such as filter expressions, selected fields, or
authentication tokens) within the URL query string. This leads
to problems with URL length limits, logging of sensitive data,
and overall architectural rigidity.
This specification introduces the SUBSCRIBE method to address these
issues. SUBSCRIBE is a safe HTTP method that allows the client to
send subscription parameters in the request body while establishing a
long-lived, server-push event stream.
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
3. The SUBSCRIBE Method
The SUBSCRIBE method is used to request a persistent, real-time event
stream from a target resource.
* *Safe:* Yes. A SUBSCRIBE request is read-only; it MUST NOT modify
the state of the target resource on the server.
* *Idempotent:* Yes. Multiple identical SUBSCRIBE requests will
yield identical event stream configurations.
* *Request Body:* Allowed. The request body contains subscription
parameters (e.g., query filters, requested fields, backfill start
time, or sub-topics).
* *Response Body:* Allowed. The response body is a long-lived
stream of events or data updates.
3.1. Request Semantics
Clients send a SUBSCRIBE request to the target URI. The request body
SHOULD specify the parameters of the subscription. For example, a
JSON payload may describe a topic filter:
Prakash Expires 5 January 2027 [Page 3]
Internet-Draft HTTP SUBSCRIBE July 2026
SUBSCRIBE /events/trades HTTP/1.1
Host: api.example.com
Content-Type: application/json
Accept: text/event-stream
{
"ticker": "GOOG",
"min_volume": 100,
"fields": ["price", "volume", "timestamp"]
}
3.2. Response Semantics
A successful response is indicated by the 200 OK status code. The
response body MUST consist of a continuous stream of structured data
chunks.
To maintain the subscription, the server holds the response stream
open indefinitely.
* *HTTP/1.1:* The server MUST use chunked transfer encoding
(Transfer-Encoding: chunked) to stream data.
* *HTTP/2 and HTTP/3:* The server streams data over a single
multiplexed stream, utilizing native frame transport without
requiring chunked transfer encoding.
The response Content-Type SHOULD indicate a streaming protocol, such
as text/event-stream or application/x-ndjson.
Example response header and initial stream chunk:
HTTP/1.1 200 OK
Content-Type: text/event-stream
Cache-Control: no-cache, no-store
Connection: keep-alive
data: {"price": 175.20, "volume": 150, "timestamp": 1719999999}
data: {"price": 175.25, "volume": 500, "timestamp": 1720000005}
4. Client and Server Behavior
4.1. Client Behavior
A client initiates a subscription by issuing a SUBSCRIBE request.
The client MUST be prepared to read the response body incrementally
as data chunks arrive.
Prakash Expires 5 January 2027 [Page 4]
Internet-Draft HTTP SUBSCRIBE July 2026
If the client wishes to terminate the subscription, it MUST close the
transport-level stream (or connection).
4.2. Server Behavior
Upon receiving a SUBSCRIBE request, the server:
1. MUST parse and validate the request body and headers.
2. MUST verify authorization for the requested subscription.
3. On success, MUST send response headers (e.g., 200 OK) and keep
the stream active.
4. MUST push events to the stream as they occur.
5. SHOULD periodically transmit keep-alive/heartbeat chunks (such as
empty comments in text/event-stream) to prevent intermediary
timeouts.
If the request is invalid or unauthorized, the server MUST return an
appropriate 4xx or 5xx status code and close the connection
immediately.
5. Caching Considerations
Because SUBSCRIBE responses represent dynamic, real-time streams of
events, they MUST NOT be cached by shared caches or HTTP
intermediaries.
Servers MUST include a Cache-Control: no-cache, no-store header in
the response. Intermediaries MUST immediately forward both the
request and response stream without buffering.
6. Security Considerations
6.1. Connection Exhaustion (DoS)
Long-lived connections consume file descriptors and memory.
Malicious clients could open thousands of subscriptions to deplete
server resources (Denial of Service).
Servers SHOULD:
* Enforce limits on the number of concurrent subscriptions per
client/IP address.
Prakash Expires 5 January 2027 [Page 5]
Internet-Draft HTTP SUBSCRIBE July 2026
* Support HTTP/2 and HTTP/3 to multiplex subscriptions over a
minimal number of TCP/QUIC connections.
* Implement aggressive timeouts for clients that do not read stream
chunks.
6.2. Authentication and Authorization
Subscriptions often contain sensitive live data. Because connections
are long-lived, token expiration (e.g., OAuth tokens) must be
handled. Servers SHOULD validate token longevity during the initial
request handshake. If a token expires while a stream is active, the
server MAY push an expiration event and close the connection, forcing
the client to re-authenticate and re-subscribe.
7. IANA Considerations
IANA is requested to register the SUBSCRIBE method in the "HTTP
Method Registry" under the Hypertext Transfer Protocol (HTTP)
Parameters registry:
* *Method Name:* SUBSCRIBE
* *Safe:* Yes
* *Idempotent:* Yes
* *Reference:* This document
8. References
8.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
Ed., "HTTP Semantics", STD 97, RFC 9110,
DOI 10.17487/RFC9110, June 2022,
<https://www.rfc-editor.org/info/rfc9110>.
8.2. Informative References
Prakash Expires 5 January 2027 [Page 6]
Internet-Draft HTTP SUBSCRIBE July 2026
[RFC5789] Dusseault, L. and J. Snell, "PATCH Method for HTTP",
RFC 5789, DOI 10.17487/RFC5789, March 2010,
<https://www.rfc-editor.org/info/rfc5789>.
[RFC10008] IETF, "The HTTP QUERY Method", June 2026.
Author's Address
Amit Prakash
Boeing
Email: amitbcet2k15@gmail.com
Prakash Expires 5 January 2027 [Page 7]