Fetcher API
The Chronon fetcher service exposes HTTP endpoints for online feature serving and schema inspection. These endpoints read from the online KV store and metadata uploaded during deploy, so they are intended for online GroupBys and Joins.
Names in path parameters are Chronon metadata names. URL-encode names that contain path separators.
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /ping | Health check endpoint. |
GET | /config | Fetcher service configuration. |
GET | /v1/joins | Lists Chronon joins marked online=True. |
GET | /v1/join/:name/schema | Returns the online fetch schema for a join. |
GET | /v1/groupby/:name/schema | Returns the online fetch schema for a GroupBy. |
GET | /v1/groupby/:name/status | Returns online GroupBy upload status. |
GET | /v1/stats/:tableName | Returns enhanced statistics for a table when stats are available. |
POST | /v1/fetch/groupby/:name | Fetches features for one GroupBy. |
POST | /v1/fetch/join/:name | Fetches features for one join. |
POST | /v1/fetch/modeltransforms/:name | Fetches model transform outputs. |
POST | /v2/fetch/join/:name | Fetches join features with the feature payload encoded as a base64 Avro string. |
Fetch Requests
The v1 fetch endpoints accept a JSON array of entity key maps. Each map is one lookup. The response preserves request order.
curl -X POST "http://localhost:9000/v1/fetch/join/quickstart.demo_v1"
-H "Content-Type: application/json"
-d '[{"user_id": "5"}, {"user_id": "7"}]'Successful v1 fetch responses use this shape:
{
"results": [
{
"status": "Success",
"entityKeys": {"user_id": "5"},
"features": {"purchase_count_30d": 12}
}
]
}Individual lookup failures are returned as result entries with "status": "Failure" and an "error" field. Request-level failures, such as invalid JSON, return an errors array.
Join Schema
GET /v1/join/:name/schema returns the Avro schemas used by online join fetching and logging.
curl "http://localhost:9000/v1/join/quickstart.demo_v1/schema" | jqResponse fields:
| Field | Description |
|---|---|
joinName | Join metadata name. |
keySchema | Avro schema for entity keys. |
valueSchema | Avro schema for fetched feature values after join derivations. |
schemaHash | Hash of the join logging schema payload. |
valueInfos | Per-feature metadata, including feature name, source group, prefix, lookup keys, and type string. |
GroupBy Schema
GET /v1/groupby/:name/schema returns the Avro schemas used by online GroupBy fetching.
curl "http://localhost:9000/v1/groupby/quickstart.user_activity_v1/schema" | jqResponse fields:
| Field | Description |
|---|---|
groupByName | GroupBy metadata name. |
keySchema | Avro schema for entity keys. |
valueSchema | Avro schema for values returned by online fetches, including derivations when configured. |
inputSchema | Avro schema before applying source select expressions. |
selectedSchema | Avro schema after applying source select expressions. |
GroupBy schema fetching is available only for online GroupBys. If a GroupBy is not online, use the Iceberg catalog schema through eval for the offline table schema, or enable online=True and upload the GroupBy.
GroupBy Status
GET /v1/groupby/:name/status returns the latest uploaded batch watermark for an online GroupBy.
curl "http://localhost:9000/v1/groupby/quickstart.user_activity_v1/status" | jqResponse fields:
| Field | Description |
|---|---|
groupByName | GroupBy metadata name. |
batchEndDate | Date through which batch upload data is available in the online KV store. |
CLI
The Zipline CLI can call schema endpoints through the fetcher service:
zipline hub fetch compiled/joins/quickstart/demo_v1 --schema --fetcher-url http://localhost:9000
zipline hub fetch compiled/group_bys/quickstart/user_activity_v1 --schema --fetcher-url http://localhost:9000