Create project key
Copy the scoped API key and ingest host from Project Settings.
FaultLens works with any application stack. Use an official SDK for streamlined setup, or integrate directly through the documented HTTP ingestion API. Official SDKs cover .NET, TypeScript / JavaScript, React, and Angular. Any other platform capable of making an authenticated HTTPS request sends the canonical event envelope directly. Both paths use the same project API key and the same event contract.
Unified integration: use FaultLens.SDK for .NET or the @faultlenshq/browser, @faultlenshq/angular, and @faultlenshq/react packages for frontend apps. Direct HTTP API: POST the canonical envelope directly from Java, Python, Go, PHP, Ruby, Rust, C++, serverless functions, proprietary runtimes, or legacy systems — a first-class option using the same backend contract.
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 an official SDK or the direct HTTP API 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 as a synchronized 1.0.0 family.
Send the canonical event envelope directly from any language or runtime. Not a fallback — a supported integration path using the same contract.
Recommended when an official SDK exists (.NET, browser, Angular, React). You get typed APIs, automatic context capture, breadcrumbs, identity helpers, consistent retries, framework integration, and less setup code.
Recommended when no official SDK exists, you use a proprietary runtime or custom transport, or you already have an internal telemetry pipeline. Language-neutral, same backend contract, no dependency on an SDK release — you own payload creation, retries, redaction, and context.
Additional official SDKs will be prioritized using customer demand and ecosystem feedback. We do not commit to an SDK for every language or to specific delivery dates.
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://YOUR-WORKSPACE.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
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.
Any platform that can make an authenticated HTTPS request can send the canonical event envelope directly — no official SDK required. This is a first-class integration option using the same backend contract. You own envelope construction, retries, redaction, and context collection.
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.1.1" }, 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 the official frontend SDKs for error monitoring and diagnostics context capture. The framework packages wrap the browser SDK with framework-friendly APIs. All three are released together as a synchronized 1.0.0 family.
npm install @faultlenshq/browser@1.0.0 npm install @faultlenshq/angular@1.0.0 @faultlenshq/browser@1.0.0 npm install @faultlenshq/react@1.0.0 @faultlenshq/browser@1.0.0 react react-dom
The wrapper packages pin a compatible @faultlenshq/browser through their peerDependencies, so installing the matching 1.0.0 pair resolves cleanly.
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.1.1" }, "exception": { "type": "System.NullReferenceException", "message": "Object reference not set to an instance of an object." } }
FaultLens classifies severity from observed impact and never infers business criticality from routes, URLs, or stack traces. To mark an event as business-critical, send explicit metadata under reserved tags keys. The backend consumes exactly three: faultlens.capability, faultlens.criticality (critical | high | normal | low), and faultlens.operation — where operation may name a route, workflow, job, or command.
"tags": { "faultlens.capability": "checkout", "faultlens.criticality": "critical", "faultlens.operation": "payment-capture" }
Every business outcome returns HTTP 200 with a JSON body — inspect status rather than assuming success. status: 1 is Ingested (stored). status: 2 is Dropped (for example reasonCode: "billing_limit_exceeded" — accepted by the endpoint but not stored). status: 3 is Rejected. HTTP 401 means a missing or invalid X-API-Key or the wrong host; 429 and 5xx are retryable with backoff. Do not treat every HTTP 200 as accepted.
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.