Ingester API Reference
The Kloudfuse ingester exposes HTTP endpoints for all major telemetry formats. You can send data directly from any client that supports OTLP, Prometheus remote write, Datadog-compatible agents, FluentBit, Fluentd, or Filebeat — without deploying an additional collector or agent.
Overview
All ingester endpoints are reachable at your cluster’s external hostname:
https://<kloudfuse-hostname>/ingester/<endpoint-path>
The ingester accepts compressed payloads via the Content-Encoding header.
Supported compression formats: gzip, deflate, zstd.
Prometheus remote write additionally requires snappy.
Authentication
If ingestion authentication is enabled on your cluster, include an API key on every request. The header name depends on the endpoint family:
| Endpoint family | Header | Example |
|---|---|---|
OTLP, FluentBit, Fluentd, Filebeat, GitHub, EventBridge |
|
|
Datadog-compatible (metrics, logs, traces) |
|
|
Prometheus remote write |
|
|
AWS Kinesis Firehose |
|
|
To generate an API key, see Ingestion Authentication with API Key.
OTLP (OpenTelemetry Protocol)
The ingester implements the full OTLP HTTP specification. Use these endpoints with any OpenTelemetry Collector, SDK, or instrumented application.
| Telemetry type | Endpoint | Accepted Content-Type |
|---|---|---|
Metrics |
|
|
Logs |
|
|
Traces |
|
|
Kubernetes events |
|
|
Kubernetes objects |
|
|
Both /otlp/metrics and /otlp/v1/metrics (and similarly /otlp/traces and /otlp/v1/traces) resolve to the same handler and are interchangeable.
|
Example: Send a Metric via OTLP/HTTP JSON
curl -X POST https://<kloudfuse-hostname>/ingester/otlp/metrics \
-H "Content-Type: application/json" \
-H "Kf-Api-Key: <token>" \
-d '{
"resourceMetrics": [{
"resource": {
"attributes": [
{"key": "host.name", "value": {"stringValue": "prod-server-1"}},
{"key": "service.name", "value": {"stringValue": "my-app"}}
]
},
"scopeMetrics": [{
"metrics": [{
"name": "app.request.count",
"description": "Total HTTP requests",
"unit": "1",
"sum": {
"dataPoints": [{
"asInt": "1042",
"timeUnixNano": "1700000000000000000",
"attributes": [
{"key": "http.method", "value": {"stringValue": "GET"}}
]
}],
"aggregationTemporality": 2,
"isMonotonic": true
}
}]
}]
}]
}'
Example: Send a Log Record via OTLP/HTTP JSON
curl -X POST https://<kloudfuse-hostname>/ingester/otlp/v1/logs \
-H "Content-Type: application/json" \
-H "Kf-Api-Key: <token>" \
-d '{
"resourceLogs": [{
"resource": {
"attributes": [
{"key": "service.name", "value": {"stringValue": "my-app"}}
]
},
"scopeLogs": [{
"logRecords": [{
"timeUnixNano": "1700000000000000000",
"severityText": "ERROR",
"body": {"stringValue": "Database connection refused"},
"attributes": [
{"key": "env", "value": {"stringValue": "production"}}
]
}]
}]
}]
}'
OpenTelemetry Collector Configuration
To export from an OTel Collector to Kloudfuse, configure the otlphttp exporter:
exporters:
otlphttp:
metrics_endpoint: https://<kloudfuse-hostname>/ingester/otlp/metrics
logs_endpoint: https://<kloudfuse-hostname>/ingester/otlp/v1/logs
traces_endpoint: https://<kloudfuse-hostname>/ingester/otlp/traces
headers:
Kf-Api-Key: <token>
See OTel Collector on Kubernetes and OTel Collector on Standalone Hosts for complete collector configurations.
Prometheus Remote Write
The ingester implements the Prometheus remote write protocol. Any Prometheus instance or compatible agent (Grafana Agent, VictoriaMetrics agent, etc.) can write directly to Kloudfuse.
| Telemetry type | Endpoint | Notes |
|---|---|---|
Metrics |
|
Snappy-compressed protobuf. Standard Prometheus remote write. |
GCP metrics |
|
Same format; used for GCP-labelled metric streams. |
Payload must be a snappy-compressed Prometheus WriteRequest protobuf.
The Content-Encoding: snappy header is required.
Datadog-Compatible Endpoints
The ingester accepts data from the Datadog Agent and any Datadog-compatible client.
Use Dd-Api-Key for authentication.
| Telemetry type | Endpoint | Accepted Content-Type |
|---|---|---|
Logs (v1) |
|
|
Logs (v2) |
|
|
Metrics (v2) |
|
|
Traces |
|
|
Example: Send Logs (Datadog JSON Format)
curl -X POST https://<kloudfuse-hostname>/ingester/api/v2/logs \
-H "Content-Type: application/json" \
-H "Dd-Api-Key: <token>" \
-d '[{
"hostname": "web-01",
"service": "my-app",
"status": "error",
"message": "Unhandled exception in request handler",
"ddtags": "env:production,version:2.1.0"
}]'
FluentBit
Point a FluentBit output at the Kloudfuse ingester using the HTTP output plugin.
| Telemetry type | Endpoint | Accepted Content-Type |
|---|---|---|
Logs |
|
|
Fluentd
Point a Fluentd output at the Kloudfuse ingester using the HTTP output plugin.
| Telemetry type | Endpoint | Accepted Content-Type |
|---|---|---|
Logs |
|
|
Filebeat
Configure Filebeat to ship logs using the Elasticsearch output pointed at the Kloudfuse ingester, which exposes an Elasticsearch-compatible bulk ingestion endpoint.
| Telemetry type | Endpoint | Accepted Content-Type |
|---|---|---|
Logs (bulk) |
|
|
Events
The ingester accepts raw event payloads from webhook sources.
| Telemetry type | Endpoint | Notes |
|---|---|---|
GitHub webhooks |
|
JSON payload. Set as the webhook Payload URL in GitHub settings. |
AWS EventBridge |
|
JSON payload. Used by the AWS EventBridge integration. |
See GitHub CI/CD Webhook Integration for the full GitHub webhook setup guide.
Response Codes
| HTTP status | Meaning |
|---|---|
|
Payload accepted and queued for ingestion. |
|
Payload accepted for async processing. |
|
Malformed payload, unsupported content type, or missing/invalid API key. |
|
Rate limit exceeded. Retry after a short backoff. |
|
Ingester is at maximum concurrent request capacity. Retry with exponential backoff. |
Compression Reference
All endpoints support compressed request bodies via the Content-Encoding header:
| Value | Notes |
|---|---|
|
Recommended for most clients. Widely supported. |
|
zlib deflate format. |
|
Higher compression ratio; use where client support is available. |
|
Required for Prometheus remote write ( |