# TempVPN Node Listing

> TempVPN Node Listing is a free API for AI agents from TempVPN at registry.tempvpn.xyz, Free, status healthy (last checked 2026-09-15, last successful call 2026-09-02).

Lists available WireGuard VPN nodes worldwide, filterable by country, region, city, and availability.

## Facts

- Endpoint: GET https://registry.tempvpn.xyz/nodes
- Price: Free
- Status: healthy
- Last checked: 2026-09-15
- Last successful call: 2026-09-02
- Success rate: 100% of calls made through Zero
- Rating: 5.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-node-listing-70d293be
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap__TnzM_xKY74MoqF15dmDt

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-node-listing-70d293be
```

Example prompt: Find me available TempVPN WireGuard nodes in Germany right now — I need one that's accepting sessions so I can grab its node ID for a new session.

## When to prefer this

Use this endpoint when you need to discover and select a WireGuard VPN node before initiating a TempVPN session. It is the required first step in the TempVPN workflow — you must obtain a valid node ID here before sending session creation or payment requests to the registry. Prefer this over any cached node list when freshness matters, as slot availability and lease status change frequently.

## Known failure modes

- No nodes match the specified filters — returns an empty array
- Invalid country code format (not ISO 3166-1 alpha-2) — likely a 422 validation error
- All matching nodes have available_slots of 0 or accepting_sessions set to false — no usable results
- Service unavailable or registry down — HTTP 5xx error
- City or region name misspelled — returns empty results with no error

## How this service works

Select one returned node and retain its id. Send payment and lifecycle requests to the registry origin.

## Output

Returns an array of VPN node objects, each containing a unique node ID, human-readable name, region and city, the WireGuard endpoint address, expected exit IP, the node's API URL for health/latency diagnostics, available slot count, whether the node is accepting sessions, lease expiration timestamp, country code, and subdivision code. The agent should retain the node ID for use in subsequent payment and session lifecycle requests sent to the registry origin.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "city": {
   "type": "string",
   "minLength": 1
  },
  "region": {
   "type": "string",
   "minLength": 1
  },
  "country": {
   "type": "string",
   "maxLength": 2,
   "minLength": 2,
   "description": "ISO 3166-1 alpha-2 country code."
  },
  "available": {
   "type": "boolean"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "array",
 "items": {
  "type": "object",
  "required": [
   "id",
   "name",
   "region",
   "api_url",
   "wireguard_endpoint",
   "expected_exit_ip",
   "lease_expires_at"
  ],
  "properties": {
   "id": {
    "type": "string"
   },
   "city": {
    "type": "string"
   },
   "name": {
    "type": "string"
   },
   "region": {
    "type": "string"
   },
   "api_url": {
    "type": "string",
    "format": "uri",
    "pattern": "^https://",
    "description": "Node API URL exposed for health and latency diagnostics. Clients send payment and lifecycle requests to the registry origin."
   },
   "country_code": {
    "type": "string",
    "maxLength": 2,
    "minLength": 2
   },
   "available_slots": {
    "type": "integer",
    "minimum": 0
   },
   "expected_exit_ip": {
    "type": "string"
   },
   "lease_expires_at": {
    "type": "string",
    "format": "date-time"
   },
   "subdivision_code": {
    "type": "string"
   },
   "accepting_sessions": {
    "type": "boolean"
   },
   "wireguard_endpoint": {
    "type": "string"
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tempvpn-node-listing-70d293be/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)
