Skip to main content

Vera Request Protocol (VRP)

Early Draft

This specification is at an early draft stage. Ideas are open for change and debate. A lot of the content was developed with the help of Claude AI.

Vera Request Protocol (VRP)​

Overview​

The Vera Request Protocol defines the HTTP headers the Vera browser sends with every request, and how publishers can respond to them. It builds entirely on standard HTTP, no proprietary protocol, no new infrastructure.

Request Headers​

GET /article/federal-election-analysis HTTP/1.1
Host: some-publisher.news
User-Agent: Vera/1.0 (Chromium/124; Linux x86_64)
X-Vera-Token: eyJhbGciOiJFUzI1NiJ9...
X-Vera-Verify: vv_live_9f3a2b4c8d1e...
X-Vera-Client-Version: 1.2.4
Accept: text/html, application/json

Header Reference​

HeaderRequiredDescription
User-Agent✅Identifies Vera. Format: Vera/{version} (Chromium/{version}; {platform})
X-Vera-TokenWhen logged inSigned JWT from the identity provider. Contains subscription status, PPR balance, consent scope. No name, no email address.
X-Vera-VerifyWhen availableNetwork verification signal. Proves network-layer identity (telecom carrier).
X-Vera-Client-Version✅Semantic version of the Vera browser. For publisher-side feature detection.

User-Agent Format​

Vera/1.0 (Chromium/124; Linux x86_64)
Vera/1.2 (Chromium/126; Windows NT 10.0)
Vera/1.0 (Chromium/124; iPhone; CPU iOS 17)

Parsing helper:

def is_vera_browser(user_agent: str) -> bool:
return user_agent.startswith("Vera/")

def get_vera_version(user_agent: str) -> str | None:
if not is_vera_browser(user_agent):
return None
return user_agent.split("/")[1].split(" ")[0]

Publisher Response Options​

Vera headers presentPublisher responseUser experience
NoneStandard HTMLStandard web experience; no Vera-specific content served
User-Agent + X-Vera-Client-VersionVera template (no consent banners)Clean reading experience
User-Agent + token (active sub)Vera template + full accessFull article, no dialog
User-Agent + token (no sub)402 Payment RequiredNative Vera payment dialog