Proxy URL
Use the StarTree Pinot Proxy URL in place of the broker URL:broker.XXXX is your regular broker host.
The Pinot Proxy routes query requests to brokers while preserving broker-tenant isolation. A table can be mapped to one broker tenant, multiple tables can share a broker tenant, and one broker can serve multiple tenants.

Request Routing
The proxy routes a query to a broker only when that broker can serve every table used by the query. If a multi-table query references tables that are not served by one common broker, the query fails. In the diagram above:- A
Table 1 JOIN Table 2query can route to Broker 1 or Broker 2. - A
Table 1 JOIN Table 3query can route only to Broker 2. - A
Table 1 JOIN Table 4query cannot be routed.
FORWARD_TABLE header.
- For multi-table queries, pass one
FORWARD_TABLEheader per table. - If you use databases, use
<database>.<table>. - Do not include the
_OFFLINEor_REALTIMEsuffix unless the endpoint explicitly asks for a typed table name. - Keep the headers consistent with the SQL. The proxy trusts the headers for routing, so an incorrect header can route to a broker that cannot serve the query.
Header-Routed Query
Query Endpoints
Use these endpoints for normal query execution through the proxy:Standard SQL
Multi-Stage Query Endpoint
Data Access Layer Query
Paginated Query Results
For large result sets, enable proxy pagination onPOST /query/sql by adding doPaginate=true. The proxy forwards the request to the broker’s StarTree pagination namespace and returns a requestId that can be used to fetch result pages.
Cursor Response Store
The proxy also forwards Pinot cursor response-store APIs.
Example:
Routing And Debug APIs
Use routing and debug endpoints only for validation, incident response, or with StarTree support guidance. They expose broker routing state and can change routing state when usingPUT or DELETE.
Examples:
Health And Controller Pass-Through
Check proxy health with:Usage Considerations
- Use
FORWARD_TABLEheaders for high-throughput applications to avoid repeated SQL parsing at the proxy. - Pass every table used by a join as a separate
FORWARD_TABLEheader. - Keep customer applications on
/query/sql,/query, or cursor endpoints. Reserve debug and routing mutation APIs for operational workflows. - When using databases, include the database-qualified table name in
FORWARD_TABLE. - Use typed table names such as
orders_OFFLINEonly for APIs that explicitly ask for a table name with type.

