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:

http
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.

Environments: Use 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

FieldTypeRequiredDescription
namestringYesUnique pipeline name within the project
sqlstringYesSQL view definitions (UTF-8 text)
connectorsarrayYesArray of connector config objects
outputsarrayYesOutput binding definitions
descriptionstringNoOptional human-readable description
json
{
  "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

json
{
  "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

json
{ "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.

ParameterDescription
pipelinePipeline name or ID
viewSQL view name (the CREATE VIEW name)
keyValue of the key column declared in the output binding
bash
curl -H "Authorization: Bearer fldr_live_..." \
  "https://api.felderahq.com/v1/features/txn-features/card_velocity/card_9182"

Response: 200 OK

json
{
  "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 paramDefaultDescription
limit1000Results per page (max 10000)
cursornullPagination cursor from previous response
formatjsonjson or jsonlines

Configure Connectors

POST /v1/pipelines/:id/stop

json
{
  "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"]
  }
}
Postgres CDC setup: Run 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.