CLEF and Seq clients
Updated 1 October 2026 · BugsRadar team
Already sending logs to Seq? Point the same Seq client at BugsRadar. It takes CLEF - the compact JSON format of Serilog and Seq - and sends the errors in it to your channels. No BugsRadar package needed.
You need a BugsRadar project with a channel and the project's API key first: see Get started.
The API key is secret: use it only in code that runs on your servers. Never put it in a desktop or mobile app you ship to others or in a public repository: anyone can take the key out of them. Where the key may go
Serilog.Sinks.Seq
Add a second WriteTo.Seq with the BugsRadar address and the project's API key. Your own Seq sink, if you have one, stays as it is.
using Serilog;
using Serilog.Events;
Log.Logger = new LoggerConfiguration()
.WriteTo.Seq("https://api.bugsradar.com/api/v3/clef",
apiKey: Environment.GetEnvironmentVariable("BUGSRADAR_KEY"),
restrictedToMinimumLevel: LogEventLevel.Error)
.CreateLogger();
The sink adds the path /api/events/raw itself. restrictedToMinimumLevel: LogEventLevel.Error keeps everything below errors on your side: BugsRadar sends only errors to channels, so there is no point in shipping the rest.
If you can add a package, BugsRadar.Serilog does the same and more: repeats of an error leave as one request with a count, and one error seen by both ILogger and Serilog is sent once.
Other CLEF senders
Seq clients for other loggers and languages take the same address, https://api.bugsradar.com/api/v3/clef, and add the path themselves. Anything else can post CLEF directly: one JSON object per line to https://api.bugsradar.com/api/v3/clef/ingest/clef, with the key in the X-Seq-ApiKey header.
curl -X POST "https://api.bugsradar.com/api/v3/clef/ingest/clef" \
-H "X-Seq-ApiKey: $BUGSRADAR_KEY" \
-H "Content-Type: application/vnd.serilog.clef" \
--data-binary '{"@t":"2026-09-26T10:00:00Z","@l":"Error","@mt":"Payment {PaymentId} declined","PaymentId":42}'
What BugsRadar takes
- One JSON object per line, up to 1 MB per request.
- Up to 50 requests per minute per project on the Free and Pro plans; the Business and On-Premises plans have no such limit (Terms of Use). A Seq client sends one request per batch, so a client that sends only errors stays far below it.
- Error and Fatal events go to the project's channels. Verbose, Debug, Information and Warning are accepted and dropped. An event without
@lis Information, as CLEF defines it. @mt, the message template, groups repeats:Payment {PaymentId} declinedfor every payment is one error with a count. Without a template, the text in@mis grouped with numbers, ids and quoted values masked.@x, the exception as .NET prints it, gives the exception type, the inner exceptions and the stack: repeats are grouped by the type and the top frames of your code.SourceContextbecomes the category,MachineNamethe host andEnvironmentNamethe environment. Other properties arrive as properties.
Answers and retries
201- the batch is accepted, even if none of its events was an error.400- not one line of the body is a CLEF event.401- the API key is wrong.413- the body is over 1 MB.429- over 50 requests in a minute on the Free or Pro plan, or too many requests at once. The answer carriesRetry-After, and Seq clients wait and send the batch again.
Something doesn't arrive? Write to support@bistriy.com and include the answers your client got.
Get started →