Create project key
Copy the scoped API key and ingest host from Project Settings.
FaultLens accepts production events through a single ingest endpoint authenticated with a project API key. The public .NET SDK is available today, with released beta browser, Angular, and React SDK packages available for early integration testing. The direct HTTP ingest contract remains the fallback surface for custom integrations.
Use FaultLens.SDK for .NET when you want the NuGet package path. Use the beta @faultlenshq/browser, @faultlenshq/angular, and @faultlenshq/react packages when validating frontend capture. Use direct HTTPS ingest when you need lower-level control.
Start by proving one event reaches the right project, then add the context that makes the issue useful for diagnosis. The goal is not just ingestion. The goal is a production issue your team can actually investigate.
Copy the scoped API key and ingest host from Project Settings.
Use the closest SDK or direct ingest fallback to capture a test failure.
Open the FaultLens project and confirm the event is attached to an issue.
Attach deployment and runtime labels so teams can reason about what changed.
Preserve the path into the failure so the issue is useful after the first alert.
The public .NET SDK is available as the NuGet package FaultLens.SDK.
@faultlenshq/browser, @faultlenshq/angular, and @faultlenshq/react are released beta integration packages.
The HTTP ingest contract remains available for custom SDK work, workers, and temporary bridge integrations.
Start with the SDK or workflow guide closest to the application you are instrumenting. These pages are public, crawlable references for real integration tasks rather than a separate SEO directory.
Install the SDK path that matches your runtime, then send environment and release context with events.
Install .NET SDKASP.NET Core integrationBrowser JavaScript setupAngular integrationReact integrationAttach the context that makes production failures easier to triage after deployment.
Release tracking setupEnvironment tracking setupProduction diagnostics workflowReview the product workflow if your team is still deciding where FaultLens fits.
Error monitoringProduction issue diagnosisRelease-aware error trackingThe fastest way to validate a FaultLens integration is to run a sample against your own tenant workspace. The sample repositories include realistic setup, local run instructions, and verification steps.
Demonstrates FaultLens.SDK with DI registration, request-scoped breadcrumbs, diagnostics context, message capture, handled exception capture, and global exception handling.
Demonstrates @faultlenshq/browser, @faultlenshq/angular, and @faultlenshq/react with tenant-host configuration, project keys, user IDs, tags, and test events.
After sending sample events, open your FaultLens project and confirm environment, release, requested URL, user identity, tags, and breadcrumbs are attached to the event.
Before integrating, make sure you have:
https://TENANT-SLUG.staging.faultlens.in.The recommended .NET path is the public NuGet package. Use it when you want the supported client surface for exception capture and delivery behavior.
dotnet add package FaultLens.SDK --version 0.1.0-beta.2
var client = new FaultLensClient( new FaultLensOptions( apiKey: "YOUR_PROJECT_API_KEY", environment: "production", release: "1.0.0") );
try { throw new InvalidOperationException("Something broke"); } catch (Exception ex) { client.CaptureException(ex); }
If you are wiring FaultLens into an ASP.NET Core application, register the options and typed client early, then capture exceptions at the middleware or service layer where context is strongest.
{ "FaultLens": { "ApiKey": "fl_proj_your_key_here", "Environment": "production", "Release": "1.4.2", "BaseUrl": "https://api.faultlens.in" } }
builder.Services.AddSingleton<FaultLensClient>(sp => { var config = sp.GetRequiredService<IConfiguration>(); var apiKey = config["FaultLens:ApiKey"]; var endpoint = new Uri(config["FaultLens:Endpoint"]!); return new FaultLensClient(new FaultLensOptions( apiKey: apiKey!, environment: config["FaultLens:Environment"] ?? "production", release: config["FaultLens:Release"], endpoint: endpoint, breadcrumbCapacity: 40)); }); builder.Services.AddSingleton<IFaultLensClient>(sp => sp.GetRequiredService<FaultLensClient>());
using (var scope = client.BeginRequest("GET", "/orders/{id}")) { scope.SetRequestContext( url: "https://api.example.com/orders/123", referrer: null, userAgent: "sample-client"); scope.SetUserId("user-123"); scope.SetTag("feature", "checkout"); client.AddStep("checkout", "Payment flow started"); client.CaptureMessage("Checkout validation failed"); }
For a complete working ASP.NET Core setup, use the FaultLens .NET samples.
The direct ingest API is still useful when you need lower-level control, want to prototype a custom runtime, or are bridging a frontend/runtime before a higher-level SDK fits your application.
using System.Net.Http.Json; public sealed class FaultLensClient { private readonly HttpClient _http; public FaultLensClient(HttpClient http) { _http = http; } public async Task CaptureExceptionAsync(Exception ex, CancellationToken ct = default) { var payload = new { eventId = Guid.NewGuid().ToString(), timestamp = DateTimeOffset.UtcNow, environment = "production", platform = "dotnet", sdk = new { name = "faultlens-dotnet", version = "1.0.0" }, exception = new { type = ex.GetType().FullName ?? ex.GetType().Name, message = ex.Message } }; using var request = new HttpRequestMessage(HttpMethod.Post, "api/events/ingest") { Content = JsonContent.Create(payload) }; request.Headers.Add("X-API-Key", "fl_proj_your_key_here"); await _http.SendAsync(request, ct); } }
The browser, Angular, and React packages are released beta integration surfaces for frontend error monitoring and diagnostics context capture. The framework packages wrap the browser SDK with framework-friendly APIs.
npm install @faultlenshq/browser@beta npm install @faultlenshq/angular@beta @faultlenshq/browser@0.1.0-beta.3 npm install @faultlenshq/react@beta @faultlenshq/browser@0.1.0-beta.3
If you need help choosing between the browser SDK, Angular SDK, React SDK, or direct ingest API, contact support@faultlens.in. See also browser SDK setup and Angular integration or React integration.
For cloneable examples, use the FaultLens frontend samples.
Complete field reference for POST /api/events/ingest. Authentication is via X-API-Key: fl_proj_....
| Field | Type | Required | Description |
|---|---|---|---|
eventId | string | Yes | Unique ID for this event. Use a GUID. |
timestamp | DateTimeOffset | Yes | ISO 8601 timestamp for when the event occurred. Always send UTC. |
environment | string | Yes | Environment name such as "production" or "staging". |
platform | string | No | Runtime platform such as "dotnet" or "javascript". |
release | string | No | Release or version tag used to connect events to a deployment. |
sdk | object | Yes | { name, version } describing the integration source. |
exception | object | No* | Exception payload. Provide either exception or message. |
message | string | No* | Plain message for non-exception events. |
breadcrumbs | array | No | Ordered breadcrumb trail leading into the event. |
POST /api/events/ingest X-API-Key: fl_proj_your_key_here Content-Type: application/json { "eventId": "a3f1c2d4-8b7e-4f3a-9c12-1d2e3f4a5b6c", "timestamp": "2026-04-01T10:42:00.000Z", "environment": "production", "platform": "dotnet", "release": "1.4.2", "sdk": { "name": "faultlens-dotnet", "version": "1.0.0" }, "exception": { "type": "System.NullReferenceException", "message": "Object reference not set to an instance of an object." } }
Once events are flowing, FaultLens groups them into issues inside your workspace. From there you can connect releases, compare environments, and keep investigation context attached to the problem instead of rebuilding it across tools.
Questions about ingest, SDK direction, or enterprise integration? Email support@faultlens.in - we respond within one business day.