> For the complete documentation index, see [llms.txt](https://docs.e6data.com/query-engine/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.e6data.com/query-engine/developers/connecting-to-the-engine/one-endpoint-three-protocols.md).

# One-endpoint / three-protocols model

How e6data exposes one authenticated endpoint speaking gRPC, HTTP REST, and the PostgreSQL wire protocol, with routing by cluster name.

Your tools connect over TLS to a single e6data endpoint. You name the cluster you want to query - you never address individual nodes - and e6data routes the request. Cluster upgrades and waking a suspended cluster happen automatically, with no change to your connection.

## The three protocols

| Protocol                 | What it is                                                                                                                                                                                                                | Best for                                                                                                                          |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Native driver (gRPC)** | The e6data [JDBC](/query-engine/developers/connecting-to-the-engine/jdbc.md) and ODBC drivers and the [Python connector](/query-engine/developers/connecting-to-the-engine/python-connector.md) - the richest feature set | SQL IDEs, Java/Python apps, notebooks                                                                                             |
| **HTTP REST v2**         | A language-agnostic, firewall-friendly HTTPS API - authenticate, submit, poll, page                                                                                                                                       | Integrations in any language ([REST API](/query-engine/developers/connecting-to-the-engine/rest-api-for-sql.md))                  |
| **PostgreSQL wire**      | Point a stock PostgreSQL client straight at e6data, nothing to download                                                                                                                                                   | Tableau, pgAdmin, psql, DBeaver ([PostgreSQL protocol](/query-engine/developers/connecting-to-the-engine/postgresql-protocol.md)) |

All three are behind one endpoint and run against the same cluster.

## Routing and concepts

* **Cluster name** is the routing key - supplied as a header on gRPC/HTTP, or encoded in the database name (`<CLUSTER>/<CATALOG>`) on the Postgres path.
* **Catalog and schema** select what you query.
* **TLS is always on.** The first query to a suspended cluster auto-resumes it (\~30–90 s) - HTTP requests wait for the resume; Postgres clients receive a `57P03` retry signal.

## Operational notes

* **HTTP/2 is required** for the gRPC and HTTP paths - use an HTTP/2-capable client and don't force curl's `--http2` flag.
* **Upgrades are transparent** - your connection string never changes.
* On the HTTP path, **reuse sessions** via `X-Session-Id` while polling and paging, and call `clearOrCancel` when finished.

## See also

* [Connecting to the engine](/query-engine/developers/connecting-to-the-engine.md)
* [JDBC](/query-engine/developers/connecting-to-the-engine/jdbc.md) · [PostgreSQL protocol](/query-engine/developers/connecting-to-the-engine/postgresql-protocol.md) · [REST API for SQL queries](/query-engine/developers/connecting-to-the-engine/rest-api-for-sql.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.e6data.com/query-engine/developers/connecting-to-the-engine/one-endpoint-three-protocols.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
