Send data
Send data
One HTTPS endpoint, and drop-in configuration for the collectors you already run.
Everything arrives at the same place: POST /v1/ingest/:dataset. Collectors, SDKs and agents are conveniences on top of that one endpoint — nothing you send through them is unavailable to plain curl.
Pick a method
HTTP API
JSON or NDJSON. Works from anything.
OpenTelemetry
OTLP over HTTP for logs, metrics and traces.
Vector
A sink config you can paste in.
Kubernetes
A DaemonSet for node and pod logs.
AWS Lambda
An extension, no code change.
Cloudflare Workers
Tail Workers and Logpush.
Vercel
Log Drains from a project.
Syslog
RFC 5424 over TLS.
Kafka
A Connect sink.
Elasticsearch bulk
Re-point an existing shipper.
What good events look like
There is no schema, but there is a shape that queries well. Flat, lowercase, snake_case keys; values in values not in key names; one event per thing that happened.
| Do | Instead of |
|---|---|
{ "user_id": "8f21c4", "latency": 3814 } | { "user_8f21c4_latency": 3814 } |
{ "status": 503 } | { "status": "503" } — quote it and every comparison needs a cast |
{ "level": "error" } | { "isError": true, "isWarn": false, … } |
| One event per request | One event per request *phase*, unless you have a trace id |
Send a trace id even if you have no tracing
where ['trace.id'] == …. It is the highest-value field you can add.