# Regions & Endpoints

## Authentication

All requests require your API key passed as a query parameter:

```
?c=<YOUR_API_KEY>
```

Don't have an API key yet? [**Request access to Nozomi →**](https://form.typeform.com/to/pGXN0ryV?utm_source=docs\&utm_medium=cta\&utm_campaign=nozomi_access\&utm_content=endpoints)

## API Paths

| Method     | Path                    | Response              |
| ---------- | ----------------------- | --------------------- |
| JSON-RPC   | `/`                     | Transaction signature |
| API v2     | `/api/sendTransaction2` | Empty body, `200 OK`  |
| Batch Send | `/api/sendBatch`        | Empty body, `200 OK`  |

## Base URLs

| Type        | URL                        | Notes                    |
| ----------- | -------------------------- | ------------------------ |
| Auto-routed | `nozomi.temporal.xyz`      | Via Cloudflare proxy     |
| Geo-DNS     | `edge.nozomi.temporal.xyz` | Routes to nearest region |

Auto-routed is recommended for most users. It will always route your request to the closest regional server.

**Example:** `https://nozomi.temporal.xyz/api/sendTransaction2?c=<YOUR_API_KEY>`

## Regional Endpoints

Pin to a specific datacenter for lowest latency if you are co-located. Each region is available as a direct connection or through Cloudflare.

Direct endpoints support both `http://` and `https://`. Cloudflare endpoints support `https://` only.

| Region      | Direct                     | Cloudflare                |
| ----------- | -------------------------- | ------------------------- |
| Pittsburgh  | `pit1.nozomi.temporal.xyz` | `pit.nozomi.temporal.xyz` |
| Newark      | `ewr1.nozomi.temporal.xyz` | `ewr.nozomi.temporal.xyz` |
| Ashburn     | `ash1.nozomi.temporal.xyz` | `ash.nozomi.temporal.xyz` |
| Los Angeles | `lax1.nozomi.temporal.xyz` | `lax.nozomi.temporal.xyz` |
| Frankfurt   | `fra2.nozomi.temporal.xyz` | `fra.nozomi.temporal.xyz` |
| Amsterdam   | `ams1.nozomi.temporal.xyz` | `ams.nozomi.temporal.xyz` |
| London      | `lon1.nozomi.temporal.xyz` | `lon.nozomi.temporal.xyz` |
| Tokyo       | `tyo1.nozomi.temporal.xyz` | `tyo.nozomi.temporal.xyz` |
| Singapore   | `sgp1.nozomi.temporal.xyz` | `sgp.nozomi.temporal.xyz` |

All servers run custom hardware modifications.

## Direct vs Cloudflare

**Direct** endpoints connect straight to the Nozomi server with no intermediary. This gives the lowest possible latency for servers and co-located infrastructure.

**Cloudflare** endpoints route through Cloudflare's network before reaching Nozomi. Residential ISPs often have better backbone connectivity to Cloudflare's edge than to individual datacenters, which can make proxied endpoints faster for users on home or mobile connections. Cloudflare also handles TLS termination at the edge, reducing handshake latency.

Use **direct** if you are running from a datacenter or VPS with good peering. Use **Cloudflare** if you are on a residential connection, have variable network quality, or are building a browser-based application.

## Best Practices

#### Send to multiple regions

For the highest landing probability, send the same transaction to **multiple regional endpoints simultaneously**. Rate limits are applied per region, so sending the same transaction to multiple regions will not count against your rate limit.

#### Frontend clients

If you are integrating Nozomi into a browser-based application:

* Send each transaction to **both a direct and a Cloudflare endpoint** at the same time. Network conditions vary across users — some will be faster through Cloudflare, others through a direct connection. Sending to both ensures the fastest path wins.
* Use **API v2** or **Batch Send** with `Content-Type: text/plain` or `application/octet-stream` to skip the CORS preflight `OPTIONS` request. Standard JSON-RPC with `Content-Type: application/json` triggers a preflight that adds 50–100ms of latency.
