Skip to main content
bronto send posts events to Bronto’s ingestion API. It’s meant for quick tests, shell scripts, and piping a local log file in. For production pipelines, use an agent or collector; Ingest Data into Bronto lists the options, and Quick Ingest covers the same HTTP API that send uses. An ingestion-only API key is enough for send. Every other command that calls the Bronto API needs a management key; local commands such as bronto version or bronto search --local need none (see Authentication).

One event

-m/--message sends exactly one event and exits, ignoring stdin. -d/--dataset is required and names the destination dataset. --collection names its collection. If either doesn’t exist yet, Bronto creates it when the first event arrives (see Data Organization). As in the read commands, -d collection/name works too: -d staging/checkout-service is the same as -d checkout-service --collection staging. send doesn’t look the name up. Add tags with --tag key=value, repeatable:

Stream from stdin

Without -m, send reads lines from stdin until EOF:
Each line becomes one event:
  • A JSON object is sent as is. If it has no timestamp, the current time is added. If it has no non-empty string message, the raw line is used as the message.
  • Anything else becomes {"message": "<line>", "timestamp": "<now>"}.
Lines are batched. A batch is sent when it reaches --batch-size events (default 500) or --batch-bytes (default 1 MiB), and a partial batch is flushed at least every --flush-interval (default 1s, minimum 100ms), so tail -f output shows up promptly. Request bodies are gzip-compressed unless you pass --no-gzip. On Ctrl-C or SIGTERM, send flushes the pending batch, waiting up to 5 seconds, and exits with code 130. If that last batch fails, send reports the error and exits with its code instead.
If a batch fails, send stops with an error, and the events in that batch are lost. Batches aren’t deduplicated, so re-running the command after a partial failure can send some events twice.
The ingestion API rejects request bodies over 10 MB with payload_too_large. Lower --batch-size if you hit it.

Preview without sending

--dry-run prints what would be sent, including the resolved ingestion URL and any --tag values, instead of sending it:
The timestamp of each event is the time you ran the command.

Ingestion endpoint

send posts to https://ingestion.<region>.bronto.io. For staging or a local instance, override it with --ingest-url, BRONTO_INGEST_URL, or the ingest_url config key (see Environments).