# TempVPN Stream — Metered WireGuard VPN Session

> TempVPN Stream — Metered WireGuard VPN Session is a paid API for AI agents from TempVPN at registry.tempvpn.xyz, paid per call via MPP, $0.01/call, status healthy (last checked 2026-09-13, last successful call 2026-09-02).

Creates or resumes a node-bound, per-minute-billed WireGuard VPN streaming session with SSE-based lifecycle events and MPP payment integration.

## Facts

- Endpoint: POST https://registry.tempvpn.xyz/sessions/stream
- Price: $0.01/call
- Payment: MPP
- Status: healthy
- Last checked: 2026-09-13
- Last successful call: 2026-09-02
- Success rate: 100% of calls made through Zero
- Rating: 3.0 / 5 from 1 review
- Activations on Zero: 1
- Provider: TempVPN
- Docs: https://registry.tempvpn.xyz/docs
- Website: https://registry.tempvpn.xyz
- Tags: networking, privacy, tempo, vpn, wireguard, web
- Canonical page: https://www.zero.xyz/c/tempvpn-stream-metered-wireguard-vpn-session-f10ec4f5
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_6sLKT4A-jdC9I3DvwXAjj

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability tempvpn-stream-metered-wireguard-vpn-session-f10ec4f5 -d '<json body>'
```

Example prompt: Connect me to TempVPN node abc123 using my WireGuard public key dGVzdGtleXRlc3RrZXl0ZXN0a2V5dGVzdGtleXQ= for up to 300 seconds — I need a metered VPN stream billed per minute.

## When to prefer this

Choose this endpoint when you need a metered, pay-as-you-go WireGuard VPN stream billed at $0.01 per 60-second interval rather than a fixed prepaid session. Prefer this over the fixed Sessions endpoint when session duration is uncertain or you want fine-grained per-minute cost control. This endpoint is the right choice when you need real-time SSE lifecycle events (vpn-session config, paid-interval, payment-need-voucher, payment-receipt) and MPPX Session v2 voucher/top-up/close management on a specific node.

## Known failure modes

- Invalid or malformed client_public_key (not valid base64 WireGuard key format) — request rejected
- node_id does not exist or is offline — node unavailable error
- duration_seconds not a positive multiple of 60 — validation error
- Insufficient payment / voucher not received — payment-need-voucher event pauses stream
- Client disconnect terminates the stream prematurely
- Session credentials are node-bound and non-portable — cannot transfer to another node
- Top-up or close operations sent without authentication — rejected

## How this service works

Separate node-bound metered product. The registry is the public payment and control origin; the selected node executes the stream and WireGuard peer. A JSON-body POST returns an MPP Session v2 Challenge when unpaid and an SSE control stream after valid funding. Parse the response as Server-Sent Events (`event:` followed by JSON `data:`), never as a one-shot JSON response. The first `message` event has type `vpn-session` and supplies WireGuard configuration; its following `message` event has type `paid-interval` for the first 60-second unit consumed at open. Further `paid-interval` messages arrive every 60 seconds while live. `payment-need-voucher` pauses access until a higher cumulative voucher or top-up is accepted. `payment-receipt` is the final event for normal expiry or close. All atomic payment amounts are decimal strings. The stream ends after its final receipt or a client disconnect. An authenticated empty POST with the same request fields in its query sends a Session v2 voucher, top-up, resume, or close operation; this is the canonical MPPX Session manager transport. Streaming credentials are not portable fixed-session balances.

## Output

On unpaid requests, returns an MPP Session v2 Challenge for payment. After valid funding, returns a Server-Sent Events (SSE) control stream. The first SSE message (type 'vpn-session') delivers WireGuard peer configuration. Subsequent 'paid-interval' events arrive every 60 seconds while the session is live. 'payment-need-voucher' events pause access pending top-up. 'payment-receipt' is the terminal event for normal expiry or explicit close. All payment amounts are decimal strings.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "node_id",
  "client_public_key",
  "duration_seconds"
 ],
 "properties": {
  "node_id": {
   "type": "string",
   "minLength": 1,
   "description": "ID of the node that will own this non-portable streaming session."
  },
  "duration_seconds": {
   "type": "integer",
   "format": "uint64",
   "minimum": 60,
   "multipleOf": 60,
   "description": "Safety cap in seconds as a positive multiple of 60. Streaming usage costs $0.01 per minute."
  },
  "client_public_key": {
   "type": "string",
   "pattern": "^[A-Za-z0-9+/]{43}=$",
   "maxLength": 44,
   "minLength": 44,
   "description": "Canonical base64-encoded 32-byte WireGuard public key."
  }
 },
 "additionalProperties": false
}
```

## Response schema (JSON Schema)

```json
{
 "type": "string",
 "description": "SSE-framed event stream. Parse each event: and JSON data: field."
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tempvpn-stream-metered-wireguard-vpn-session-f10ec4f5/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from registry.tempvpn.xyz](https://www.zero.xyz/host/registry.tempvpn.xyz/llms.txt)
