# errorgap — full site text
Every public page on errorgap.com as plain text, generated at build time.
Generated 2026-09-24. Source of truth is the HTML at each URL.
---
# https://errorgap.com/
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
LIVE
Real-time signals that become incidents
Production signals,
caught in real time.
Errors, slow requests, uptime checks, and deploys stream in live — then Errorgap correlates them into a single incident with a likely cause. So you're investigating, not piecing it together at 2am.
Start free trial →
See how it works
Free tier · 50k events/mo
No credit card
SDKs for 16+ runtimes
LIVE · ox-coffee · production
refreshing automatically
ERR
ActionView::Template::Errorapp/views/spree/home/index.haml:20
0.2s ago
ERR
ActiveRecord::RecordNotFoundapp/controllers/products_controller.rb:34
4s ago
WARN
N+1 Query · Spree::Variantapp/views/spree/products/_card.html.erb:8
12s ago
ERR
NoMethodError · undefined `blah'lib/spree_core/helpers/base_helper.rb:70
38s ago
INFO
Deploy detected · v2.14.1CI · GitHub Actions
1m ago
WARN
Slow request · 4823msPOST /checkout/payment
2m ago
ERR
Stripe::CardError · card_declinedapp/services/checkout/charge.rb:81
3m ago
INFO
Source maps uploadedreleases/api
4m ago
TRUSTED BY TEAMS AT
Ox Coffee
stream.dev
Northshore
cardamom
Marlow Labs
orbital/8
HOW IT WORKS
From SDK to incident, automatically.
Install the SDK and ship. Errorgap captures and groups errors, correlates them with uptime, latency, and deploy signals, then assembles the evidence into an incident you can investigate.
01 · Install
Drop in the SDK
One package per runtime. Initialize with your project key and the SDK starts capturing — no manual try/catch plumbing required.
$ npm install @errorgap/sdk
+ added 1 package in 2s
$ npx errorgap init --key=prj_019df…
↻ configured · 16 routes instrumented
02 · Capture
We catch, group, dedupe
Exceptions are fingerprinted by stack signature and message — thousands of occurrences of one bug collapse into a single group with a count and a graph.
×4,212
NoMethodError
03 · Correlate
Signals become an incident
A heuristic engine promotes elevated error rates, uptime failures, latency spikes, and deploy correlations into a first-class Incident.
04 · Investigate
Likely cause, in one place
A deterministic likely-cause panel, a confidence score, an evidence timeline, and an optional AI summary — everything to act, without tab-hopping.
INCIDENT INTELLIGENCE
When signals become an incident.
Errorgap's heuristic engine watches for six trigger conditions and assembles the evidence into one Incident object — instead of leaving it scattered across separate views.
SIX HEURISTICS · 60S CYCLE
One object. All the evidence.
High-volume error groups, uptime failures, error-rate spikes, latency anomalies, infrastructure saturation, and deploy correlations — when a condition fires, it becomes a first-class incident with a full evidence trail.
Six heuristics, evaluated on a 60-second cycle
Evidence timeline: error groups, releases, uptime checks, APM traces
Open → Acknowledged → Resolved lifecycle
Manual incidents for what the heuristics don't catch
Explore incidents →
AI INVESTIGATION
From signals to a likely cause, automatically.
The deterministic correlation panel runs the moment evidence loads — no configuration, no AI credit cost. It derives a likely cause, scores confidence, and surfaces the signals behind it. When you want prose, hit Summarize.
DETERMINISTIC FIRST, AI ON DEMAND
A confidence score, not a guess.
Backtrace overlap, similar prior incidents, and time correlation feed a weighted confidence score from 10–90% — with the contributing signals shown. The AI summary is explicitly triggered, never automatic.
Backtrace overlap, similar incidents, time correlation
Confidence scored 10–90% with signal weights shown
Optional AI summary — explicit trigger, never automatic
MCP tools: explain_incident, find_likely_cause, propose_fix
See an investigation →
BUILT FOR THE STACK
Every signal, framed in context.
No screenshot pasting, no log-file digging. Errorgap connects the exception to the line, the line to the deploy, and the deploy to the person who can fix it — then watches availability and latency alongside.
BACKTRACE & GROUPING
The line. The frame. The fix.
Every captured exception lands you on the offending source line with surrounding context and the full call stack. Same-signature errors collapse into one group with an occurrence count, sparkline, and the releases that triggered it.
Source maps for JS/TS, debug symbols for Go & Java
App / vendor / external frame filters
Fingerprint grouping, merge/split, regression detection
See a backtrace →
LIVE LOGS
Watch your production breathe.
Stream errors, warnings, and structured logs straight from your runtime. Filter by level, source, or release — pause the stream, scrub backward, scrub forward.
Live stream, sub-second latency
Per-environment views (production / staging / dev)
Aggregate view for capacity planning
Open the live stream →
UPTIME
Know when your users can't reach you.
HTTP, TCP, and ping checks sweep on configurable intervals. Status changes open incidents automatically, and the 90-day availability timeline shows every degraded window in context.
HTTP / TCP / ping · configurable intervals
SSL certificate expiry monitoring
Uptime incidents feed the Incident engine
See uptime monitoring →
PERFORMANCE · APM
Slow routes surface before users file tickets.
Transaction timing from every web request and background job. Throughput, p95 latency, error rate, and DB time — with an Apdex score that tells you how users actually feel.
Web requests and background jobs, side by side
Apdex satisfaction with configurable threshold
Latency anomalies feed the Incident engine
See performance →
SESSION REPLAY
The session behind the failure.
Browser session timelines attach to incidents as evidence — DOM snapshots at the moment of failure, ranked most-relevant first.
Rage clicks, dead clicks, error events
Most-relevant sessions surfaced per incident
INFRASTRUCTURE
CPU, memory, disk — per host.
Fleet-wide CPU, memory, and disk health with per-host, per-volume, and per-process breakdowns across every cluster.
Hosts, volumes, and processes views
Saturation signals feed the Incident engine
DEPLOY TRACKING
Tie every error to a release.
Record releases and Errorgap surfaces the first affected release for each error group — and correlates deploys with incidents.
First-affected-release per error group
Deploy correlation as an incident heuristic
AI-NATIVE
Give your AI agents production context.
Errorgap exposes a Model Context Protocol server so Claude, Cursor, Copilot, and any MCP-compatible agent can query live production data — error groups, incidents, backtraces, uptime status, and proposed fixes — without exposing your browser session.
claude_desktop_config.json
{
"mcpServers": {
"errorgap": {
"url": "https://app.errorgap.com/mcp",
"headers": {
"Authorization": "Bearer egmcp_…"
},
"scopes": ["errors:read", "logs:read", "source:read"]
}
}
}
Scoped, redacted, per project.
Tools: list/get errors, list/get incidents, explain incident, find likely cause, propose fix
Per-project exposure toggles — six categories of data
Org-level defaults with per-project overrides
Regex-based redaction rules with live preview
Scoped API keys, revocable from the Agent Access page
MCP TOOLS
◆list_errors
◆get_error
◆list_incidents
◆get_incident
◆explain_incident
◆find_likely_cause
◆propose_fix
◆uptime_status
Start free trial →
Read the MCP docs
INSTALL
Three lines and you're shipping.
Pick your runtime. The SDK does the rest — async-safe, fork-safe, and zero overhead in dev.
node
ruby
python
go
java
php
Copy
// 1. Install
$ npm install @errorgap/sdk
// 2. Initialize once at boot
import errorgap from '@errorgap/sdk'
errorgap.init({
key: process.env.ERRORGAP_KEY,
env: process.env.NODE_ENV,
release: process.env.GIT_SHA,
})
// 3. That's it. Capture a handled error:
errorgap.capture(err, { user: req.user.id })
INTEGRATIONS
Wired into the tools you already use.
Errorgap doesn't try to replace your issue tracker or your chat. It connects to them and stays out of the way.
GitHub
Auto-open issues
GitLab
Sync issue state
Slack
Channel routing
Jira
Ticket creation
Webhook
Custom endpoints
PRICING
Per-event pricing. No seat tax.
Pay for what you capture, not who's logged in. Every plan includes every feature except the bits genuinely tied to enterprise compliance.
FREE
$0
/mo
For solo devs and side projects.
50k events / mo
7-day retention
1 project
200 replays · 1 uptime monitor
Email alerts
AI investigation
SSO
Audit log
Start free
TEAM★ POPULAR
$29
/mo
For small teams shipping prod code.
500k events / mo
30-day retention
Unlimited projects
5k replays · 10 uptime monitors
AI investigation
Slack + GitHub
SSO
Audit log
Start trial
BUSINESS
$99
/mo
For scaling orgs.
2M events / mo
90-day retention
25k replays · 50 uptime monitors
SSO · SAML
Audit log
Priority support · 4h SLA
Start trial
ENTERPRISE
Custom
For regulated industries.
Unlimited events
Dedicated infrastructure
Custom data residency
Custom SLA
Security review
Solutions architect
Talk to sales
See full pricing & FAQ →
Close the errorgap.
Start free, no credit card. Turn scattered production signals into one investigable incident in under five minutes. Cancel anytime, keep your data.
Start free trial →
Talk to sales
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/acceptable-use
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
errorgap / Acceptable Use Policy
Print / PDF
·
Download .txt
TRUST
◇
Trust overview
POLICIES
§
Terms of Service
◈
Privacy Policy
⛨
Security
⌁
Subprocessors
⊘
Acceptable Use
◔
Cookie Notice
REQUESTS
⎙
DPA request
⚑
Vulnerability disclosure
Security questions during a review? Email security@errorgap.com — we respond within one business day.
TRUST · LEGAL
Acceptable Use Policy
VERSION 2026.2
EFFECTIVE JUN 1, 2026
LAST UPDATED JUN 1, 2026
What you may not do with Errorgap. This policy is part of, and incorporated into, the Terms of Service.
01
Scope
This policy applies to everyone who uses Errorgap — account holders, their users, and any agents or tokens they issue. Violations may lead to suspension or termination under the Terms.
02
Prohibited use
You may not use Errorgap to engage in or enable:
Illegal, harmful, deceptive, defamatory, or infringing activity.
Malware, credential theft, secret exfiltration, spam, or phishing.
Distributing content you have no right to distribute.
Using the service to attack, probe, or overload third parties.
03
Sensitive & regulated data
Errorgap is built for operational telemetry, not regulated data. You are responsible for the telemetry you choose to send.
DO NOT SEND
Protected health information (PHI), full payment card numbers (PAN), government-issued IDs, children's data, or other regulated/sensitive data — unless expressly supported under a separate written agreement. Use redaction rules to keep secrets out of telemetry.
04
Platform integrity
To keep the service reliable and isolated for everyone, you may not:
Bypass or attempt to bypass rate limits, quotas, or authentication.
Access, or attempt to access, another tenant's data.
Reverse-engineer, resell, or make competitive use of the service.
Conduct security testing or scanning without prior written authorization.
05
Enforcement
We may investigate suspected violations and may suspend or terminate access to protect the service, our customers, or third parties. Where practical we give notice; where there is imminent risk we may act first.
Contact
ABUSE
abuse@errorgap.com
Report misuse of the service
SECURITY
security@errorgap.com
Vulnerability reports
LEGAL
legal@errorgap.com
Terms and notices
SUPPORT
support@errorgap.com
Product and account help
§
Change history
2026.2
Jun 1, 2026
Initial published Acceptable Use Policy.
ON THIS PAGE
Scope
Prohibited use
Sensitive & regulated data
Platform integrity
Enforcement
Contact
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/company/about
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
ABOUT
We’d rather you fix the bug than spend the afternoon finding it.
errorgap is project telemetry for teams who treat an incident as something to resolve, not reconstruct. We correlate scattered production signals into one investigable incident — with a likely cause — in under five minutes.
THE GAP
FINDING
An error spikes. A request slows. A check goes red. A deploy lands. Each signal lives in its own tab, on its own timeline, in its own tool — and the on-call engineer becomes the integration layer, stitching them together by hand at the worst possible moment.
→
FIXING
errorgap correlates errors, slow requests, uptime, and deploys into a single incident with a ranked likely cause and an evidence timeline. The reconstruction is already done. What’s left is the part that matters.
OPERATING PRINCIPLES
How we decide what to build.
Six commitments we hold ourselves to. They’re the same ones the trust and security pages are written against.
Honest status on every claim
⛨
Nothing reads as a promise we haven’t kept. Features in progress say so; what we don’t do, we say we don’t do.
Per-event pricing, no seat tax
◈
You pay for the telemetry you send, not for how many engineers open the dashboard. Adding a teammate is free.
Your data, minimized and redacted
⌁
Redaction runs at ingest, before storage. We keep the least we can and delete on a schedule you can see.
Fix the bug, don’t find it
⚑
Every surface is built to shorten the distance between a signal firing and a root cause you can act on.
Deterministic before AI
◇
Likely-cause and confidence scoring are rule-based and inspectable. The AI summary is an explicit, optional step — never automatic.
One product, run by us
⎙
A managed service with predictable data controls — no infrastructure for you to operate, patch, or babysit.
WHAT WE ARE, WHAT WE AREN’T
WE ARE
A small, early team shipping in the open.
Focused on the correlate-and-investigate loop.
Plain-spoken about what works and what’s in progress.
WE AREN’T
An everything-platform with a feature for every logo.
Going to invent customer counts or funding milestones here.
Interested in dashboards nobody acts on.
errorgap, inc. — incident intelligence.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/company/careers
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
CAREERS
We’re small, early, and deliberate about who joins.
No growth-for-its-own-sake hiring. When we add someone, it’s because there’s a clear gap and the work is real. Here’s how the team actually works.
Small surface, deep focus
⌁
Few people, one product, no busywork. You own real surface area and ship it end to end.
Write it down, plainly
◈
We default to honest, jargon-free writing — in the product, in docs, and with each other.
Trust over theater
⛨
No vanity metrics, no demo-driven roadmaps. We build the thing that makes the claim true.
Async, low-meeting
◇
Long blocks of focus, decisions in writing, and a strong bias toward shipping over scheduling.
OPEN ROLES
What we’re hiring for.
No open roles right now.
But we read every intro. If you’d be a fit for a team like ours — tell us what you’d want to own and why errorgap.
jobs@errorgap.com
We reply to thoughtful intros within one business day.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/company/contact
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
CONTACT
Reach the right inbox.
No forms, no routing maze. Pick the address that matches what you need — we respond within one business day.
Security
⛨
Report a vulnerability or request our disclosure policy. Cross-linked from the Security page.
security@errorgap.com →
/security
Privacy & DPA
◈
Data requests, the Data Processing Addendum, and subprocessor questions.
privacy@errorgap.com →
/privacy · /trust
Sales & general
⌁
Pricing, evaluations, or anything that doesn’t fit a box above.
hello@errorgap.com →
proposed — confirm address
Every inbox is monitored by a person. We respond within one business day — the same promise on the trust pages.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/compare
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
COMPARE
Most tools show you
one signal.
errorgap correlates errors, logs, transactions, uptime checks, and deploys into a single incident, then ranks a likely cause and shows the evidence behind it. This page compares that approach against the categories of tool it replaces or sits beside — by capability, not by brand.
Start free trial →
Browse the product
VS. STANDALONE ERROR TRACKERS
An error is one signal.
An incident needs five.
Error trackers stop at the exception. errorgap keeps the exception and correlates it with the logs around it, the transaction that slowed, the check that failed, and the deploy that shipped — then names a likely cause and ranks it.
Same grouping and stack-frame quality you expect from a tracker
Plus logs, APM, uptime, and deploys on the same incident object
A ranked likely cause, with the evidence it was derived from
See Incident Intelligence →
Errors
grouped by fingerprint
Logs
agent-streamed
Transactions
per-route timing
Uptime checks
every 10s
Deploys
release markers
ONE INCIDENT
Likely cause, ranked — with its evidence attached.
VS. FULL OBSERVABILITY SUITES
Correlation without the rollout.
Suites can correlate too, once you have finished the migration, agreed the seat count, and standardised the collector. errorgap is one JSON envelope and a key. You pay for captured events, not for the people who look at them.
Priced per captured event — seats are unlimited and free
Install in minutes: one endpoint, one envelope format
20+ SDKs, plus a plain HTTP API for anything not covered
See pricing →
PRICING UNIT
captured event
SEAT COST
none — unlimited users
TIME TO FIRST ERROR
minutes
WIRE FORMAT
one JSON envelope
SDKS
20+ · plus HTTP API
COLLECTOR TO OPERATE
none
PAST YOUR QUOTA
repeats sampled, never billed
VS. LOG PLATFORMS
Logs as evidence, not as a search box.
A query language is only useful once you know what to query. errorgap attaches the log window around a failure to the incident itself — duplicates grouped, timestamps stripped — so the relevant lines are already on the page.
The log window around each error, attached automatically
Aggregate view collapses 412 identical lines into one
Full stream, list, and aggregate views when you do want to dig
See Live logs →
INCIDENT
TypeError · checkout.submit
14:02:11 web.1 POST /checkout/submit
14:02:11 web.1 pool: acquiring connection (waiters=18)
14:02:12 web.1 timeout after 5000ms · pool exhausted
14:02:12 web.1 TypeError: cannot read 'id' of undefined
14:02:12 web.1 status=500 duration=5031ms
Log window attached to the incident · 5 of 1,204 lines shown
VS. UPTIME-ONLY MONITORS
A failed check that explains itself.
Knowing the endpoint is down is the first thirty seconds of the job. When an errorgap check fails, it opens an incident that already carries the errors firing behind it and the release that preceded them.
HTTP(S), TCP, and ping checks on a 10-second sweep
Consecutive failures open and close incidents automatically
90-day availability timeline per monitor
See Uptime monitoring →
01
Check fails
api.example.com/health returns 503 twice in a row.
02
Incident opens
Severity critical. No one has to acknowledge a page first.
03
Evidence attaches
The 4,100 errors firing behind the check, and release v2.14.0 from 11 minutes earlier.
04
Likely cause ranked
“Connection pool exhausted after v2.14.0” — with the frames and log lines it was read from.
CAPABILITY MATRIX
What each category actually covers.
Typical coverage per category of tool. Individual products vary; where a category commonly ships a partial or add-on version of a capability, it is marked as partial.
errorgap capability coverage compared with error trackers, APM suites, log platforms, and uptime monitors
CAPABILITY ERRORGAP ERROR TRACKER APM SUITE LOG PLATFORM UPTIME MONITOR
Correlated incidents across signals ✓
Included
—
Not offered
partial —
Not offered
—
Not offered
Ranked likely cause with evidence ✓
Included
—
Not offered
—
Not offered
—
Not offered
—
Not offered
Error grouping and stack frames ✓
Included
✓
Included
partial —
Not offered
—
Not offered
Live log streaming ✓
Included
—
Not offered
partial ✓
Included
—
Not offered
Uptime checks ✓
Included
—
Not offered
partial —
Not offered
✓
Included
Per-transaction timing (APM) ✓
Included
—
Not offered
✓
Included
—
Not offered
—
Not offered
Distributed tracing across services —
Not offered
—
Not offered
✓
Included
—
Not offered
—
Not offered
Session replay ✓
Included
partial partial —
Not offered
—
Not offered
Custom metrics and dashboards —
Not offered
—
Not offered
✓
Included
partial —
Not offered
MCP access for AI agents ✓
Included
—
Not offered
—
Not offered
—
Not offered
—
Not offered
Pricing model per event per event per host + seat per GB ingested per monitor
Time to first signal minutes minutes days hours minutes
✓ included
— not offered
partial · common as an add-on or a subset
LIMITATIONS
What errorgap doesn’t do.
Three things it is worth knowing before you start a trial.
errorgap is a managed service.
We run it, you send events. There is no collector to keep alive — which also means the data sits with us, under the terms on our Trust page.
It is not a metrics warehouse.
No custom metric ingestion, no PromQL, no long-range business dashboards. errorgap watches failures. Send your revenue graphs somewhere else.
It does not do distributed tracing.
APM is per-transaction timing with DB, view, and external breakdowns. If you need a span graph stitched across a dozen services, an observability suite is the right tool.
Close the errorgap.
Start free, no credit card. Turn scattered production signals into one investigable incident in under five minutes. Cancel anytime, keep your data.
Start free trial →
Talk to sales
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/cookies
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
errorgap / Cookie Notice
Print / PDF
·
Download .txt
TRUST
◇
Trust overview
POLICIES
§
Terms of Service
◈
Privacy Policy
⛨
Security
⌁
Subprocessors
⊘
Acceptable Use
◔
Cookie Notice
REQUESTS
⎙
DPA request
⚑
Vulnerability disclosure
Security questions during a review? Email security@errorgap.com — we respond within one business day.
TRUST · PRIVACY
Cookie Notice
VERSION 2026.2
EFFECTIVE JUN 1, 2026
LAST UPDATED JUN 1, 2026
The cookies and local storage Errorgap uses, what they're for, and how to control them. We use a small set of first-party cookies and no third-party advertising trackers.
01
Overview
Cookies and browser local storage let us keep you signed in, remember your preferences, and understand aggregate product usage. We do not use third-party advertising or cross-site tracking cookies.
02
Essential storage
Required for the dashboard to work. These cannot be disabled without breaking sign-in.
NAME PURPOSE STATUS
Session token Keeps you signed in securely between requests.
Essential
CSRF / security Protects against cross-site request forgery.
Essential
03
Preferences
Remember choices you make so the product behaves the way you left it.
NAME PURPOSE STATUS
Theme Stores your dark/light appearance preference.
Preference
Last project Returns you to the project you were last viewing.
Preference
04
Analytics
First-party, aggregate usage measurement to improve reliability and the product. No advertising, no cross-site tracking.
NAME PURPOSE STATUS
Product analytics Aggregate, de-identified feature usage.
Opt-out
Advertising We set no third-party ad or tracking cookies.
None
05
Your choices
You control non-essential storage.
You can clear or block cookies in your browser settings, and opt out of analytics from your account appearance settings. Blocking essential cookies will prevent sign-in. For data-subject requests, contact privacy@errorgap.com.
Contact
PRIVACY
privacy@errorgap.com
Cookie & data questions
SECURITY
security@errorgap.com
Vulnerability reports
LEGAL
legal@errorgap.com
Notices
SUPPORT
support@errorgap.com
Product and account help
§
Change history
2026.2
Jun 1, 2026
Initial published Cookie Notice.
ON THIS PAGE
Overview
Essential storage
Preferences
Analytics
Your choices
Contact
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
DEVELOPERS
Wire up errorgap, then get out of your editor.
SDKs for 20+ stacks send the same JSON envelope to one small, stable ingestion API. Drop in the library, ship a test error, and get back to the code that matters.
SDK docs
⌁
Install in Node, Python, Go, Ruby, PHP, mobile, and more — 20+ stacks, one envelope.
View SDKs →
API reference
⎙
The ingestion API: one header, one JSON envelope. Most developers never call it directly.
Read the reference →
Changelog
◇
What shipped, dated, in plain language. No marketing gloss.
See what shipped →
Status
◆
Live platform status and 90-day uptime history, on its own page.
Open status →
Agent access (MCP)
⟢
Give AI agents read-only production context through the Model Context Protocol.
Learn about MCP →
Quickstart
⚑
Five-minute install walkthrough — drop in the SDK, send a test error, see it land.
Start the walkthrough →
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/api
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
API REFERENCE
One header. One JSON envelope.
Most developers never call this directly — the SDK does it for you. But the whole contract is small, so here it is, hand-authored and complete.
ON THIS PAGE
Base URL & auth
Endpoints
Notice envelope
Sensitive-value filtering
Responses
Verify with curl
Release tracking
BASE URL & AUTH
Base URL & authentication
All requests are POST to your project's ingest endpoint. Authenticate every request with a single project-key header.
HTTP
⧉ Copy
POST https:///api/projects/{project_slug}/notices
x-errorgap-project-key:
content-type: application/json
user-agent: errorgap-{lang}/{version}
The only header the API reads is x-errorgap-project-key. Note that X-Errorgap-Api-Key is not accepted. Set a descriptive User-Agent so requests are attributable in logs.
ENDPOINTS
Endpoints
PURPOSE METHOD PATH
Errors POST /api/projects/{project_slug}/notices
APM transactions POST /api/projects/{project_slug}/transactions
Session replay POST /api/projects/{project_slug}/sessions
Release tracking optional POST /api/projects/{project_slug}/releases
NOTICE ENVELOPE
Notice envelope
The body sent to /notices. One envelope can carry multiple errors (e.g. an error chain).
JSON
⧉ Copy
{
"received_at": "2026-06-23T10:14:05Z",
"errors": [
{
"type": "TypeError",
"message": "Cannot read properties of undefined (reading 'id')",
"backtrace": [
{ "file": "app/checkout.js", "line": 42, "function": "applyCoupon", "in_app": true }
]
}
],
"context": {
"notifier": "errorgap-node",
"notifier_version": "0.1.0",
"release": "a1b2c3d",
"environment": "production"
},
"params": { "coupon": "[FILTERED]" }
}
REQUIRED
received_at — ISO-8601 timestamp
errors[] — each with type + message
context.notifier
context.notifier_version
OPTIONAL
project_id
backtrace[].in_app
context.release · context.root_directory
environment · session · params
SENSITIVE VALUES
Sensitive-value filtering
SDKs mask sensitive values before they leave the host. The default key list is matched as a case-insensitive substring; any match has its value replaced with "[FILTERED]". Filtering applies to params only.
DEFAULT MASK LIST
⧉ Copy
password token secret api_key authorization cookie
# substring match, case-insensitive — "x_api_key" also matches "api_key"
RESPONSES
Responses
CODE MEANING BODY
201 Accepted JSON with group_id
202 Accepted, sampled Accepted but rate-limited or sampled
401 Unauthorized Bad or missing project key
Release tracking additionally returns 200 (release already recorded) and 403 (key lacks release scope).
VERIFY
Verify with curl
Send a test error with nothing but curl. A 201 with a group_id means ingestion works.
BASH
⧉ Copy
curl -X POST https:///api/projects/$SLUG/notices \
-H "x-errorgap-project-key: $KEY" \
-H "content-type: application/json" \
-d '{"received_at":"2026-06-23T10:14:05Z",
"errors":[{"type":"TestError","message":"hello from curl"}],
"context":{"notifier":"curl","notifier_version":"0"}}'
RELEASE TRACKING
Release tracking optional
Post a release so errors can be attributed to the deploy that introduced them.
JSON
⧉ Copy
{
"version": "a1b2c3d",
"environment": "production",
"deployed_at": "2026-06-23T10:00:00Z"
}
CODE MEANING
201 Release recorded
200 Release already existed
403 Key lacks release scope
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/changelog
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
CHANGELOG
What shipped, and when.
Honest, dated, no marketing gloss. Each entry is a real release — when there's nothing to report, this page says so.
2026-06-16
SDKS
SHIPPED
Tier 5 SDKs shipped.
Rust, Deno, and Bun reach v0.1.0. errorgap now covers 20+ stacks.
›
Rust — errorgap on crates.io (Tower layer + capture macro)
›
Deno and Bun — native runtime modules, no build step
2026-06-15
SDKS
SHIPPED
Mobile SDKs shipped.
Swift (iOS/macOS), Android (Kotlin), React Native, and Flutter — all v0.1.0, errors-only.
2026-06-15
SDKS
SHIPPED
Enterprise stacks shipped.
JVM and managed runtimes land together.
›
Java / Kotlin / Scala — core + Spring Boot starter
›
.NET — Errorgap + Errorgap.AspNetCore
›
Elixir / Phoenix
2026-06-15
SDKS
SHIPPED
Tier 2 SDKs shipped.
PHP (framework-agnostic core), Laravel (service provider), and Go (net/http wrapper).
2026-06-15
SDKS
SHIPPED
Tier 1 SDKs shipped.
The first three: Node.js, Python, and browser JS — the last with a React error boundary.
›
Node.js — @errorgap/node
›
Python — errorgap on PyPI
›
Browser — @errorgap/browser with React ErrorBoundary
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
SDKS
One JSON envelope. Twenty-odd ways to send it.
Errors-only in v1 today; APM and session replay land per-SDK where noted. Every library ships the same install-and-verify curl, so you can confirm ingestion before writing a line of app code.
Server & backend
10 SDKs
Node.js
v0.1.2
@errorgap/node · npm
Express · Fastify
Auto-instrument uncaught exceptions and unhandled rejections.
View guide →
Source ↗
Package ↗
Python
v0.1.1
errorgap · PyPI
Django · Flask · FastAPI
WSGI/ASGI middleware plus a manual capture API.
View guide →
Source ↗
Package ↗
Ruby
v0.5.0
errorgap-ruby
Rails · Rack · Sinatra
Rack middleware; Rails railtie wires itself in.
View guide →
Source ↗
Package ↗
PHP
v0.3.0
errorgap/errorgap · Packagist
Symfony · Slim · plain
Error + exception handlers, framework-agnostic core.
View guide →
Source ↗
Package ↗
Laravel
v0.2.0
errorgap/laravel · Packagist
Laravel
Service provider + exception-handler integration.
View guide →
Source ↗
Package ↗
Go
v0.1.0
errorgap-go
net/http
Handler wrapper and a manual Notify() call.
View guide →
Source ↗
Package ↗
Java · Kotlin · Scala
v0.2.0
com.errorgap:errorgap-core · Maven Central
Spring Boot starter
JVM core plus a Spring Boot auto-configuration starter.
View guide →
Source ↗
Package ↗
.NET
v0.2.0
Errorgap · Errorgap.AspNetCore · NuGet
ASP.NET Core
Middleware for ASP.NET Core; core works anywhere.
View guide →
Source ↗
Package ↗
Elixir
v0.2.0
errorgap · Hex
Phoenix
Plug + Phoenix error reporter.
View guide →
Source ↗
Package ↗
Rust
v0.2.0
errorgap · crates.io
Axum · Actix · Tonic
Tower layer plus a manual capture macro.
View guide →
Source ↗
Package ↗
Browser & JS runtimes
5 SDKs
Browser / React
v0.1.1
@errorgap/browser · npm
React ErrorBoundary
window.onerror + unhandledrejection, ships a React error boundary.
View guide →
Source ↗
Package ↗
Deno
v0.2.0
errorgap-deno
Native Deno module — no build step.
View guide →
Source ↗
Package ↗
Bun
v0.2.0
errorgap-bun
Bun-native runtime hooks.
View guide →
Source ↗
Package ↗
Nuxt
v0.1.0
@errorgap/nuxt · npm
Vue · Nitro
One module for client Vue errors and server Nitro errors.
View guide →
Source ↗
Package ↗
Next.js
v0.1.0
@errorgap/nextjs · npm
App Router
Client browser errors and server onRequestError in one package.
View guide →
Source ↗
Package ↗
Mobile
5 SDKs
iOS · macOS (Swift)
v0.2.0
Errorgap · SwiftPM
NSException + Swift error capture.
View guide →
Source ↗
Android (Kotlin)
v0.2.0
com.errorgap:errorgap-android · Maven Central
Uncaught-exception handler, ANR-aware.
View guide →
Source ↗
Package ↗
React Native
v0.2.0
@errorgap/react-native · npm
JS + native crash bridge in one package.
View guide →
Source ↗
Package ↗
Flutter
v0.2.0
errorgap · pub.dev
FlutterError + zone capture.
View guide →
Source ↗
Package ↗
Unity
PLANNED
com.errorgap.unity
C# exception capture for runtime builds.
Not yet available
CMS & other
2 SDKs
WordPress
v0.2.0
errorgap-wordpress · plugin
Drop-in plugin; captures PHP fatals and notices.
View guide →
Source ↗
{ }
Anything else
v—
Plain HTTP
One POST with the JSON envelope — see the API reference.
View guide →
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/android
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
MOBILE SDK
Error monitoring for Android
A Kotlin SDK that installs an uncaught-exception handler in `Application.onCreate()`. Device metadata is caller-supplied, so the library ships no platform-specific dependencies.
Frameworks Android
Requires Android API 24+ · JDK 17 to build
Package com.errorgap:errorgap-android
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
KOTLIN
⧉ Copy
dependencies {
implementation("com.errorgap:errorgap-android:0.2.0")
}
CONFIGURE
Configure
In Application.onCreate(), before anything else runs:
KOTLIN
⧉ Copy
class App : Application() {
override fun onCreate() {
super.onCreate()
Errorgap.init(ErrorgapConfiguration(
endpoint = BuildConfig.ERRORGAP_ENDPOINT,
projectSlug = BuildConfig.ERRORGAP_PROJECT_SLUG,
apiKey = BuildConfig.ERRORGAP_API_KEY,
environment = if (BuildConfig.DEBUG) "development" else "production",
release = BuildConfig.VERSION_NAME,
deviceInfo = mapOf(
"os_name" to "Android",
"os_version" to Build.VERSION.RELEASE,
"device_model" to Build.MODEL,
"app_version" to BuildConfig.VERSION_NAME,
),
))
}
}
Expose the credentials through BuildConfig fields (from Gradle properties or the environment) rather than hardcoding them. The SDK installs a Thread.setDefaultUncaughtExceptionHandler.
TRIGGER A TEST ERROR
Trigger a test error
KOTLIN
⧉ Copy
button.setOnClickListener {
throw RuntimeException("Errorgap test error")
}
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/browser
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
BROWSER SDK
Error monitoring for the browser
One package for any front-end — React, Vue, Angular, Svelte, or plain JS. It hooks global errors and unhandled rejections, and ships a React error boundary for component-tree failures.
Frameworks React · Vue · Angular · Svelte · plain JS
Requires any modern browser
Package @errorgap/browser
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
SH
⧉ Copy
npm install @errorgap/browser
Or drop it in via CDN — the UMD build exposes window.Errorgap:
HTML
⧉ Copy
CONFIGURE
Configure
Import as early as possible in your entry point. The API key is public client-side, so scope it to a single project and rely on server-side redaction for anything sensitive.
TS
⧉ Copy
import { Errorgap } from "@errorgap/browser";
Errorgap.init({
endpoint: "https://your-endpoint",
projectSlug: "your-project",
apiKey: import.meta.env.VITE_ERRORGAP_API_KEY,
environment: import.meta.env.MODE,
release: __APP_VERSION__,
});
init hooks window.error and window.unhandledrejection automatically.
React error boundary
TSX
⧉ Copy
import { ErrorgapBoundary } from "@errorgap/browser/react";
export function App() {
return (
Something went wrong.
}>
);
}
TRIGGER A TEST ERROR
Trigger a test error
Throw once — in React, wire it to a temporary button:
TS
⧉ Copy
throw new Error("Errorgap test error");
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/bun
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
BROWSER SDK
Error monitoring for Bun
A Bun-native package shipped as TypeScript source — Bun loads it directly, no build step. It hooks uncaught exceptions and unhandled rejections on the process.
Frameworks Bun runtime
Requires Bun 1.0+
Package @errorgap/bun
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
SH
⧉ Copy
bun add @errorgap/bun
CONFIGURE
Configure
In your entry file (e.g. index.ts):
TS
⧉ Copy
import { Errorgap } from "@errorgap/bun";
Errorgap.init({
endpoint: process.env.ERRORGAP_ENDPOINT,
projectSlug: process.env.ERRORGAP_PROJECT_SLUG,
apiKey: process.env.ERRORGAP_API_KEY,
environment: process.env.NODE_ENV ?? "production",
});
init hooks process.uncaughtException and process.unhandledRejection.
Keep the key in an environment variable (or your framework's secret store) — never commit it to source control.
TRIGGER A TEST ERROR
Trigger a test error
TS
⧉ Copy
throw new Error("Errorgap test error");
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/deno
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
BROWSER SDK
Error monitoring for Deno
A native Deno module — import from JSR, no build step. It hooks global errors and unhandled rejections and reads its config from the environment.
Frameworks Deno runtime
Requires Deno 1.40+
Package @errorgap/deno
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
Import directly from JSR, or add it to your import map:
SH
⧉ Copy
deno add jsr:@errorgap/deno
CONFIGURE
Configure
TS
⧉ Copy
import { Errorgap } from "@errorgap/deno";
Errorgap.init({
endpoint: Deno.env.get("ERRORGAP_ENDPOINT")!,
projectSlug: Deno.env.get("ERRORGAP_PROJECT_SLUG")!,
apiKey: Deno.env.get("ERRORGAP_API_KEY"),
});
init hooks globalThis.error and globalThis.unhandledrejection. Run with --allow-net= and --allow-env.
Keep the key in an environment variable (or your framework's secret store) — never commit it to source control.
TRIGGER A TEST ERROR
Trigger a test error
TS
⧉ Copy
throw new Error("Errorgap test error");
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/dotnet
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
SERVER SDK
Error monitoring for .NET
Middleware for ASP.NET Core that reports thrown exceptions and re-throws so your normal pipeline still renders the response. The core works anywhere, hooking unhandled and unobserved-task exceptions.
Frameworks ASP.NET Core · plain .NET
Requires .NET 8+
Package Errorgap.AspNetCore
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
SH
⧉ Copy
dotnet add package Errorgap.AspNetCore
For non-web apps, depend on Errorgap directly.
CONFIGURE
Configure
ASP.NET Core
In Program.cs, register the service and add the middleware first so it sees all downstream exceptions:
CSHARP
⧉ Copy
using Errorgap.AspNetCore;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddErrorgap(cfg =>
{
cfg.Endpoint = builder.Configuration["ERRORGAP_ENDPOINT"]!;
cfg.ProjectSlug = builder.Configuration["ERRORGAP_PROJECT_SLUG"]!;
cfg.ApiKey = builder.Configuration["ERRORGAP_API_KEY"];
});
var app = builder.Build();
app.UseErrorgap(); // first in the pipeline
app.Run();
Plain .NET
CSHARP
⧉ Copy
using Errorgap;
ErrorgapSdk.Init(new ErrorgapConfiguration
{
Endpoint = Environment.GetEnvironmentVariable("ERRORGAP_ENDPOINT")!,
ProjectSlug = Environment.GetEnvironmentVariable("ERRORGAP_PROJECT_SLUG")!,
ApiKey = Environment.GetEnvironmentVariable("ERRORGAP_API_KEY"),
});
Init installs AppDomain.UnhandledException and TaskScheduler.UnobservedTaskException hooks.
Keep the key in an environment variable (or your framework's secret store) — never commit it to source control.
TRIGGER A TEST ERROR
Trigger a test error
CSHARP
⧉ Copy
app.MapGet("/errorgap-test", () =>
{
throw new InvalidOperationException("Errorgap test error");
});
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/elixir
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
SERVER SDK
Error monitoring for Elixir & Phoenix
A client that starts under your supervision tree and a Phoenix error reporter. Wire `handle_errors/2` once and unhandled request errors flow to errorgap.
Frameworks Phoenix · Plug
Requires Elixir 1.15+ · OTP 26+
Package errorgap
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
Add the dependency to mix.exs:
ELIXIR
⧉ Copy
def deps do
[{:errorgap, "~> 0.2"}]
end
CONFIGURE
Configure
In config/runtime.exs:
ELIXIR
⧉ Copy
config :errorgap,
endpoint: System.fetch_env!("ERRORGAP_ENDPOINT"),
project_slug: System.fetch_env!("ERRORGAP_PROJECT_SLUG"),
api_key: System.fetch_env!("ERRORGAP_API_KEY"),
environment: System.get_env("APP_ENV", "production")
The Errorgap.Client GenServer starts under your application's supervision tree automatically.
Phoenix
ELIXIR
⧉ Copy
defmodule MyAppWeb.Endpoint do
use Phoenix.Endpoint, otp_app: :my_app
use Plug.ErrorHandler
@impl Plug.ErrorHandler
def handle_errors(conn, error_info) do
Errorgap.Plug.report(conn, error_info)
conn
end
end
Keep the key in an environment variable (or your framework's secret store) — never commit it to source control.
TRIGGER A TEST ERROR
Trigger a test error
Add a controller action that raises, hit it, then remove it:
ELIXIR
⧉ Copy
def errorgap_test(_conn, _params) do
raise "Errorgap test error"
end
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/flutter
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
MOBILE SDK
Error monitoring for Flutter
A Dart package that reports Flutter framework errors and uncaught async errors. The handlers are wired explicitly so you can compose them with your own.
Frameworks Flutter
Requires Dart 3.0+
Package errorgap
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
Add it to pubspec.yaml (or flutter pub add errorgap):
YAML
⧉ Copy
dependencies:
errorgap: ^0.2.0
CONFIGURE
Configure
In main(), initialize and wire both error handlers:
DART
⧉ Copy
void main() {
WidgetsFlutterBinding.ensureInitialized();
Errorgap.init(ErrorgapConfiguration(
endpoint: 'https://your-endpoint',
projectSlug: 'your-project',
apiKey: const String.fromEnvironment('ERRORGAP_API_KEY'),
environment: kReleaseMode ? 'production' : 'development',
));
FlutterError.onError = (details) {
Errorgap.notify(details.exception, stackTrace: details.stack);
FlutterError.presentError(details);
};
PlatformDispatcher.instance.onError = (error, stack) {
Errorgap.notify(error, stackTrace: stack);
return true;
};
runApp(const MyApp());
}
Pass the key with --dart-define=ERRORGAP_API_KEY=... rather than hardcoding it.
TRIGGER A TEST ERROR
Trigger a test error
DART
⧉ Copy
ElevatedButton(
onPressed: () => throw Exception('Errorgap test error'),
child: const Text('Test Errorgap'),
)
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/go
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
SERVER SDK
Error monitoring for Go
A small library with a net/http middleware, a manual `Notify()` call, and a `Recover()` helper for background goroutines. Explicit by design — you decide what gets captured.
Frameworks net/http
Requires Go 1.22+
Package github.com/errorgaphq/errorgap-go
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
SH
⧉ Copy
go get github.com/errorgaphq/errorgap-go
CONFIGURE
Configure
Initialize early in main and defer a clean shutdown so buffered events flush:
GO
⧉ Copy
import (
"context"
"os"
errorgap "github.com/errorgaphq/errorgap-go"
)
func main() {
if err := errorgap.Init(errorgap.Config{
Endpoint: os.Getenv("ERRORGAP_ENDPOINT"),
ProjectSlug: os.Getenv("ERRORGAP_PROJECT_SLUG"),
APIKey: os.Getenv("ERRORGAP_API_KEY"),
}); err != nil {
panic(err)
}
defer errorgap.Close(context.Background())
// ...
}
Wrap a net/http server with the recovery middleware:
GO
⧉ Copy
import "github.com/errorgaphq/errorgap-go/stdhttp"
http.ListenAndServe(":8080", stdhttp.Recover(mux))
And guard background goroutines with Recover():
GO
⧉ Copy
go func() {
defer errorgap.Recover()
// ... work ...
}()
Keep the key in an environment variable (or your framework's secret store) — never commit it to source control.
TRIGGER A TEST ERROR
Trigger a test error
Add a temporary route that panics through the recover handler:
GO
⧉ Copy
mux.HandleFunc("/errorgap-test", func(w http.ResponseWriter, r *http.Request) {
panic("Errorgap test error")
})
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/http
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
DIRECT INGEST
Report errors over plain HTTP
No SDK for your platform? Report errors by POSTing JSON straight to the ingestion endpoint. Every errorgap SDK is a thin wrapper over this one request.
Frameworks any language
Package no SDK required
Agent guide ↗
ON THIS PAGE
Store your credentials
Report an error
Verify
STORE YOUR CREDENTIALS
Store your credentials
Keep the three values in your app's environment:
SH
⧉ Copy
ERRORGAP_API_KEY=flk_...
ERRORGAP_ENDPOINT=https://your-endpoint
ERRORGAP_PROJECT_SLUG=your-project
REPORT AN ERROR
Report an error
POST to {ERRORGAP_ENDPOINT}/api/projects/{ERRORGAP_PROJECT_SLUG}/notices with the header x-errorgap-project-key: {ERRORGAP_API_KEY} and a JSON body. Only errors (each with type and message) is required:
JSON
⧉ Copy
{
"errors": [
{
"type": "RuntimeError",
"message": "something went wrong",
"backtrace": [
{ "file": "src/handler", "line": 42, "function": "handle" }
]
}
],
"context": { "environment": "production" }
}
context.environment sets the environment shown in errorgap. Wire this into your platform's global exception hook so unhandled errors report automatically. The full contract is in the ingestion API reference.
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/java
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
SERVER SDK
Error monitoring for the JVM
A JVM core plus a Spring Boot auto-configuration starter. On Spring the starter registers a high-precedence exception resolver; on plain JVM apps you configure the core directly.
Frameworks Spring Boot · plain JVM
Requires Java 17+
Package com.errorgap:errorgap-spring-boot-starter
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
Add the Spring Boot starter (Maven shown; Gradle is equivalent):
XML
⧉ Copy
com.errorgap
errorgap-spring-boot-starter
0.2.0
For non-Spring apps, depend on errorgap-core instead.
CONFIGURE
Configure
Spring Boot
In application.properties:
PROPERTIES
⧉ Copy
errorgap.endpoint=${ERRORGAP_ENDPOINT}
errorgap.project-slug=${ERRORGAP_PROJECT_SLUG}
errorgap.api-key=${ERRORGAP_API_KEY}
errorgap.environment=production
errorgap.release=@project.version@
Auto-configuration is gated on errorgap.project-slug and registers an MVC HandlerExceptionResolver at the highest precedence, reporting controller exceptions before the framework renders them.
Plain JVM
JAVA
⧉ Copy
import com.errorgap.Configuration;
import com.errorgap.Errorgap;
Configuration cfg = new Configuration()
.setEndpoint(System.getenv("ERRORGAP_ENDPOINT"))
.setProjectSlug(System.getenv("ERRORGAP_PROJECT_SLUG"))
.setApiKey(System.getenv("ERRORGAP_API_KEY"));
Errorgap.init(cfg);
Keep the key in an environment variable (or your framework's secret store) — never commit it to source control.
TRIGGER A TEST ERROR
Trigger a test error
JAVA
⧉ Copy
@GetMapping("/errorgap-test")
public String errorgapTest() {
throw new RuntimeException("Errorgap test error");
}
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/laravel
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
SERVER SDK
Error monitoring for Laravel
A Laravel-native package that auto-registers a service provider, binds into the exception handler, and listens for failed queue jobs — no manual wiring beyond the config.
Frameworks Laravel 10 · 11 · 12
Requires PHP 8.1+
Package errorgap/laravel
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
SH
⧉ Copy
composer require errorgap/laravel
The service provider auto-registers. Supports Laravel 10, 11, and 12.
CONFIGURE
Configure
Publish the config, then set your credentials in .env:
SH
⧉ Copy
php artisan vendor:publish --tag=errorgap-config
SH
⧉ Copy
ERRORGAP_ENDPOINT=https://your-endpoint
ERRORGAP_PROJECT_SLUG=your-project
ERRORGAP_API_KEY=flk_...
The package binds into the Laravel exception handler (preferring reportable() on Laravel 8+) and reports JobFailed queue events. Mirror the keys in .env.example with empty values.
Keep the key in an environment variable (or your framework's secret store) — never commit it to source control.
TRIGGER A TEST ERROR
Trigger a test error
PHP
⧉ Copy
Route::get('/errorgap-test', function () {
throw new \Exception('Errorgap test error');
});
Visit /errorgap-test, then remove the route.
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/node
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
SERVER SDK
Error monitoring for Node.js
Capture uncaught exceptions and unhandled rejections across your Node services — Express, Fastify, or plain HTTP — and see them grouped in errorgap within seconds.
Frameworks Express · Fastify · plain Node
Requires Node 20+
Package @errorgap/node
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
Add the package with your usual package manager.
SH
⧉ Copy
npm install @errorgap/node
CONFIGURE
Configure
Create an errorgap.ts (or errorgap.js) and import it as early as possible in your entry point, so the SDK is watching before the rest of the app boots.
TS
⧉ Copy
import { Errorgap } from "@errorgap/node";
Errorgap.init({
endpoint: process.env.ERRORGAP_ENDPOINT!,
projectSlug: process.env.ERRORGAP_PROJECT_SLUG!,
apiKey: process.env.ERRORGAP_API_KEY!,
});
Keep the key in an environment variable (or your framework's secret store) — never commit it to source control.
init hooks uncaughtException and unhandledRejection for you. Framework adapters ship as subpath exports — add them if you run a web server:
Express
TS
⧉ Copy
import { errorgapErrorHandler } from "@errorgap/node/express";
app.use(errorgapErrorHandler()); // register last
Fastify
TS
⧉ Copy
import { errorgapPlugin } from "@errorgap/node/fastify";
await app.register(errorgapPlugin);
TRIGGER A TEST ERROR
Trigger a test error
Throw once, with the SDK already imported, to confirm the in-app integration works end to end.
TS
⧉ Copy
import "./errorgap";
throw new Error("Errorgap test error");
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/php
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
SERVER SDK
Error monitoring for PHP
A framework-agnostic core for Symfony, Slim, or plain PHP. It installs exception and error handlers so otherwise-unreported failures still reach errorgap. On Laravel, use the dedicated package.
Frameworks Symfony · Slim · plain PHP
Requires PHP 8.1+
Package errorgap/errorgap
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
SH
⧉ Copy
composer require errorgap/errorgap
On Laravel use errorgap/laravel; on WordPress use the errorgap plugin.
CONFIGURE
Configure
Call Errorgap::init(...) in your bootstrap — Symfony's src/Kernel.php, Slim's public/index.php, or a plain front controller:
PHP
⧉ Copy
use Errorgap\Errorgap;
Errorgap::init([
'endpoint' => $_ENV['ERRORGAP_ENDPOINT'],
'projectSlug' => $_ENV['ERRORGAP_PROJECT_SLUG'],
'apiKey' => $_ENV['ERRORGAP_API_KEY'],
]);
By default init registers set_exception_handler and set_error_handler to catch otherwise-unreported errors.
Keep the key in an environment variable (or your framework's secret store) — never commit it to source control.
TRIGGER A TEST ERROR
Trigger a test error
Add a temporary route that throws:
PHP
⧉ Copy
$app->get('/errorgap-test', function () {
throw new \Exception('Errorgap test error');
});
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/python
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
SERVER SDK
Error monitoring for Python
One package for Django, Flask, and FastAPI. Middleware reports unhandled exceptions before your framework turns them into a response, with a manual capture API for everything else.
Frameworks Django · Flask · FastAPI
Requires Python 3.8+
Package errorgap
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
Install the extra for your framework so the right middleware ships with it.
SH
⧉ Copy
pip install "errorgap[django]" # or [flask], [fastapi]
CONFIGURE
Configure
Call errorgap.init(...) once at startup, then register the middleware for your framework.
Django
At the bottom of settings.py:
PYTHON
⧉ Copy
import os
import errorgap
errorgap.init(
endpoint=os.environ["ERRORGAP_ENDPOINT"],
project_slug=os.environ["ERRORGAP_PROJECT_SLUG"],
api_key=os.environ["ERRORGAP_API_KEY"],
)
Then add the middleware near the top of MIDDLEWARE:
PYTHON
⧉ Copy
MIDDLEWARE = [
"errorgap.django.ErrorgapMiddleware",
# ... existing middleware ...
]
Flask
PYTHON
⧉ Copy
import os
import errorgap
from errorgap.flask import init_app
from flask import Flask
errorgap.init(
endpoint=os.environ["ERRORGAP_ENDPOINT"],
project_slug=os.environ["ERRORGAP_PROJECT_SLUG"],
api_key=os.environ["ERRORGAP_API_KEY"],
)
app = Flask(__name__)
init_app(app) # connects Flask's got_request_exception signal
FastAPI
PYTHON
⧉ Copy
import os
import errorgap
from errorgap.fastapi import ErrorgapMiddleware
from fastapi import FastAPI
errorgap.init(
endpoint=os.environ["ERRORGAP_ENDPOINT"],
project_slug=os.environ["ERRORGAP_PROJECT_SLUG"],
api_key=os.environ["ERRORGAP_API_KEY"],
)
app = FastAPI()
app.add_middleware(ErrorgapMiddleware)
Keep the key in an environment variable (or your framework's secret store) — never commit it to source control.
TRIGGER A TEST ERROR
Trigger a test error
Add a throwaway route that raises, hit it once, then remove it. (From manage.py shell on Django you can raise Exception("Errorgap test error") directly.)
PYTHON
⧉ Copy
@app.route("/errorgap-test") # Flask; FastAPI uses @app.get
def errorgap_test():
raise Exception("Errorgap test error")
VERIFY
Verify the connection
Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
BASH
⧉ Copy
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'
A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.
err
rgap
Incident intelligence for teams who'd rather fix the bug than find it.
PRODUCT
Incident Intelligence
Backtrace
Live logs
Uptime monitoring
Performance (APM)
Session Replay
Agent Access (MCP)
Integrations
How errorgap compares
DEVELOPERS
SDK docs
API reference
Changelog
Status
COMPANY
About
Careers
Contact
LEGAL
Terms
Privacy
Security
Subprocessors
Acceptable Use
Cookies
© 2026 errorgap, inc. · incident intelligence
---
# https://errorgap.com/developers/sdks/react-native
err
rgap
Product
▾
Integrations
Pricing
Docs
Trust
Developers
Company
Changelog
Sign in
Start free trial →
MOBILE SDK
Error monitoring for React Native
A pure-JS package — no native modules, no pod install, no Gradle wiring. It hooks the global error handler and unhandled promise rejections. (For native crashes, run the platform SDKs alongside.)
Frameworks React Native
Requires React Native 0.70+
Package @errorgap/react-native
Source ↗
Package ↗
Agent guide ↗
ON THIS PAGE
Install
Configure
Trigger a test error
Verify
INSTALL
Install
SH
⧉ Copy
npm install @errorgap/react-native
No native modules ship in v1 — nothing to link. Native crash reporting is pending; use the platform SDKs alongside for native crashes.
CONFIGURE
Configure
In your entry file (index.js / App.tsx):
TS
⧉ Copy
import { Errorgap } from "@errorgap/react-native";
import { Platform } from "react-native";
Errorgap.init({
endpoint: "https://your-endpoint",
projectSlug: "your-project",
apiKey: "flk_...",
environment: __DEV__ ? "development" : "production",
deviceInfo: {
os_name: Platform.OS,
os_version: String(Platform.Version),
},
});
The SDK hooks ErrorUtils.setGlobalHandler and unhandled promise rejections automatically.
TRIGGER A TEST ERROR
Trigger a test error
TSX
⧉ Copy