API Reference
Feldera provides a REST API at http://<host>:8080/v1. Request and response bodies are JSON. Timestamps use ISO 8601 UTC.
Authentication
Feldera API calls need an API key in the Authorization header:
Authorization: Bearer fldr_live_<your_api_key>
Create API keys in the Feldera dashboard under Settings. Keys use project-level scope. Self-hosted deployments may turn off auth in runtime config.
fldr_live_ keys for production and fldr_test_ keys for development. Test-key requests are isolated to a sandboxed data store and do not consume quota.
Pipeline Control API
Pipelines are Feldera's main unit. Each combines connectors, a SQL transform, and output targets into a running computation.
New pipeline
POST /v1/pipelines
POST /v1/pipelines
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Unique pipeline name within the project |
sql | string | Yes | SQL view definitions (UTF-8 text) |
connectors | array | Yes | Array of connector config objects |
outputs | array | Yes | Output binding definitions |
description | string | No | Optional human-readable description |
{
"name": "txn-features",
"description": "Transaction velocity features for fraud model",
"sql": "CREATE VIEW card_velocity AS SELECT ...",
"connectors": [
{
"name": "transactions",
"type": "kafka",
"config": {
"bootstrap_servers": "broker:9092",
"topic": "payments.transactions",
"format": "json"
}
}
],
"outputs": [
{ "name": "card_velocity", "type": "http", "key": "card_id" }
]
}
Response: 201 Created
{
"id": "pip_7a3b2c",
"name": "txn-features",
"status": "stopped",
"created_at": "2026-07-10T09:00:00Z"
}
Run pipeline
POST /v1/pipelines/:id/start
Adds a pipeline, initially stopped.
Response: 202 Accepted
{ "id": "pip_7a3b2c", "status": "starting" }
Stop pipeline
POST /v1/pipelines/:id/stop
Response: 201 Created
Delete pipeline
DELETE /v1/pipelines/:id
POST /v1/pipelines/:id/start
Feature Query API
Lookup feature key
GET /v1/features/:pipeline/:view/:key
Launches a stopped pipeline. Feldera compiles the SQL, connects input sources, and starts incremental processing. Compilation usually takes 2-5 seconds.
| Parameter | Description |
|---|---|
pipeline | Pipeline name or ID |
view | SQL view name (the CREATE VIEW name) |
key | Value of the key column declared in the output binding |
curl -H "Authorization: Bearer fldr_live_..." \
"https://api.felderahq.com/v1/features/txn-features/card_velocity/card_9182"
Response: 200 OK
{
"card_id": "card_9182",
"txn_count_1h": 7,
"spend_1h": 412.50,
"unique_merchants_1h": 4,
"last_seen": "2026-07-10T14:22:38Z",
"_meta": {
"pipeline_lag_ms": 18,
"computed_at": "2026-07-10T14:22:45Z"
}
}
List all keys
GET /v1/features/:pipeline/:view
Response: 202 Accepted
| Query param | Default | Description |
|---|---|---|
limit | 1000 | Results per page (max 10000) |
cursor | null | Pagination cursor from previous response |
format | json | json or jsonlines |
Configure Connectors
POST /v1/pipelines/:id/stop
{
"name": "pg_orders",
"type": "postgres_cdc",
"config": {
"host": "db.internal",
"port": 5432,
"database": "commerce",
"slot_name": "feldera_slot",
"publication_name": "feldera_pub",
"tables": ["orders", "order_items"]
}
}
SELECT pg_create_logical_replication_slot('feldera_slot', 'wal2json') and CREATE PUBLICATION feldera_pub FOR TABLE orders, order_items in your Postgres instance before connecting.
Stops the pipeline cleanly. State is checkpointed to disk and resumes on the next start.