> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.etera.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.etera.dev/_mcp/server.

# Getting Started

## Prerequisites

#### ETERA Account

Sign up at [etera.tech](https://etera.tech) for API access

#### API Key

Generate a key from the [ETERA Dashboard](https://dashboard.etera.dev/api-keys)

## Base URLs

ETERA provides three environments. Use the environment selector in the API playground to switch between them.

| Environment     | Base URL                      | Purpose                   |
| --------------- | ----------------------------- | ------------------------- |
| **Production**  | `https://api.etera.dev`       | Live traffic              |
| **Staging**     | `https://api-stage.etera.dev` | Pre-production validation |
| **Development** | `https://api-dev.etera.dev`   | Testing and development   |

---

## Your First Request

#### Set up authentication

All requests require a Bearer token in the `Authorization` header:

```bash
Authorization: Bearer YOUR_API_KEY
```

#### Search for restaurants

Let's make a real API call to search for restaurant recommendations:

**`cURL`**

```bash title="cURL"
curl -X GET "https://api.etera.dev/restaurant/search/recommendations/" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"
```

**`TypeScript`**

```typescript title="TypeScript"
const response = await fetch(
  "https://api.etera.dev/restaurant/search/recommendations/",
  {
    headers: {
      Authorization: "Bearer YOUR_API_KEY",
      "Content-Type": "application/json",
    },
  }
);

const restaurants = await response.json();
```

**`Python`**

```python title="Python"
import requests

response = requests.get(
    "https://api.etera.dev/restaurant/search/recommendations/",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json",
    },
)

restaurants = response.json()
```

#### Explore the response

The API returns restaurant data with details like name, cuisine, location, ratings, and availability. You can use these results to display recommendations in your app.

---

## URL Structure

All ETERA APIs follow a consistent URL pattern:

```
https://api.etera.dev/{vertical}/{service}/{endpoint}
```

> **Info**
>
> **Verticals:** `restaurant`, `experience`, `hotel`, `flight`
>
> **Services per vertical:** `booking`, `search`, `data`, `mcp`, `agent`

---

## Try Different Verticals

#### Restaurant

| Use Case            | Method | Endpoint                              |
| ------------------- | ------ | ------------------------------------- |
| Search restaurants  | `GET`  | `/restaurant/search/recommendations/` |
| Create a booking    | `POST` | `/restaurant/booking/bookings/`       |
| Get restaurant data | `GET`  | `/restaurant/data/`                   |
| List MCP tools      | `GET`  | `/restaurant/mcp/mcp/tools`           |
| AI agent input      | `POST` | `/restaurant/agent/ai-input`          |

#### Hotel

| Use Case       | Method | Endpoint                   |
| -------------- | ------ | -------------------------- |
| Search hotels  | `GET`  | `/hotel/search/v2/search`  |
| Create booking | `POST` | `/hotel/booking/bookings/` |
| Property data  | `GET`  | `/hotel/data/`             |
| List MCP tools | `GET`  | `/hotel/mcp/mcp/tools`     |
| AI agent input | `POST` | `/hotel/agent/ai-input`    |

#### Flight

| Use Case       | Method | Endpoint                    |
| -------------- | ------ | --------------------------- |
| Search flights | `GET`  | `/flight/search/search`     |
| Create booking | `POST` | `/flight/booking/bookings/` |
| Get airlines   | `GET`  | `/flight/data/airlines/`    |
| List MCP tools | `GET`  | `/flight/mcp/mcp/tools`     |
| AI agent input | `POST` | `/flight/agent/ai-input`    |

#### Experience

| Use Case           | Method | Endpoint                                    |
| ------------------ | ------ | ------------------------------------------- |
| Search experiences | `GET`  | `/experience/search/recommendations/search` |
| Book experience    | `POST` | `/experience/booking/bookings/`             |
| Experience data    | `GET`  | `/experience/data/`                         |
| List MCP tools     | `GET`  | `/experience/mcp/mcp/tools`                 |
| AI agent input     | `POST` | `/experience/agent/ai-input`                |

---

## Platform Services

These services operate at the root level (no vertical prefix):

| Service       | Base Path       | Description                      |
| ------------- | --------------- | -------------------------------- |
|  Auth         | `/auth`         | Authentication (OTP, OAuth, JWT) |
|  Account      | `/account`      | User profiles and settings       |
|  Payment      | `/payment`      | Stripe payment processing        |
|  Context      | `/context`      | Explore, weather, city data      |
|  Notification | `/notification` | Push and email notifications     |
|  AI           | `/ai`           | AI agent supervisor              |

---

## Next Steps

#### [Authentication](/guides/authentication)

Set up OAuth and API keys

#### [MCP Integration](/guides/mcp-integration)

Connect AI models to ETERA

#### [Environments](/guides/environments)

Dev, staging, and production details

#### [Error Handling](/guides/error-handling)

Error formats and retry strategies