API reference
Network surfaces
The REST, PostgreSQL wire and Arrow Flight SQL interfaces, their default ports and compatible clients.
All three surfaces share one engine instance. No query logic is duplicated, and security rules are enforced identically on each.
| Surface | Protocol | Default port | Typical clients |
|---|---|---|---|
| REST API | HTTP/JSON | 8080 | SDK clients, curl, Swagger UI, the Web UI |
| PostgreSQL wire | PostgreSQL protocol v3 | 5432 | psql, pgAdmin, Tableau, Power BI, DBeaver, JDBC, ODBC |
| Arrow Flight SQL | gRPC over HTTP/2 | 8815 | Apache Arrow ADBC, Polars, Spark, pandas, DuckDB |
Authentication per surface#
| Surface | How to authenticate |
|---|---|
| REST | Authorization: Bearer <api-key>, X-Api-Key: <api-key>, or Basic auth |
| PostgreSQL wire | SCRAM-SHA-256 with your user name and password |
| Arrow Flight | gRPC metadata Authorization: Bearer <api-key> or Authorization: Basic base64(userId:password) |
Client libraries#
Official SDKs wrap the REST API for Python, .NET, Java and Node.js. See Client SDKs for installation and every sample.
.NET
using var client = new KiwiFabricClient("http://localhost:8080", apiKey);
var result = await client.QueryAsync("SELECT 1 AS one");
Java
KiwiFabricClient client = new KiwiFabricClient("http://localhost:8080", apiKey);
QueryResponse result = client.query("SELECT 1 AS one");
Node.js
const client = new KiwiFabricClient("http://localhost:8080", apiKey);
const result = await client.query("SELECT 1 AS one");
Python
with KiwiFabricClient("http://localhost:8080", api_key=api_key) as client:
result = client.query("SELECT 1 AS one")