Complete API intelligence in six layers.

Each layer is independently useful. Together they give you visibility no other tool provides.

1

The CLI Scanner

Start with a coverage report in one command.

The EndpointLens CLI scanner parses your OpenAPI specification and recursively scans your frontend source directory for references to every endpoint. It uses three-pass pattern matching across React, Next.js, Vue, Angular, Svelte, and any framework that makes HTTP calls as strings.

github actionsCI/CD IntegrationnpmPublished to npmvscodeEditor Extension
Terminal
$ npm install -g @endpointlens/scanner
$ els scan --spec https://api.yourapp.com/api-json \
    --src ./src --threshold 75 --push --api-key $EL_KEY

📊 Coverage Report
Total:    1,024
Wired:    847
Unwired:  177
Coverage: 82.7%

✗ GET  /api/v1/reports/annual
✗ POST /api/v1/payments/refund
✗ GET  /api/v1/audit/logs
✗ DELETE /api/v1/cache/invalidate
✗ PATCH /api/v1/settings/notifications
2

The Interceptor SDKs

One import. Zero latency. Live traffic in seconds.

Install the EndpointLens interceptor SDK for your backend framework. It captures every request asynchronously after the response has been sent. Your users never wait for EndpointLens. The SDK adds under one millisecond of overhead on average.

NestJS
NestJS
npm i @endpointlens/nestjs
Express
Express
npm i @endpointlens/express
FastAPI
FastAPI
pip install endpointlens-fastapi
Django
Django
pip install endpointlens-drf
Laravel
Laravel
composer require endpointlens/laravel
app.module.ts
EndpointLensModule.forRoot({
  projectId: process.env.EL_PROJECT_ID,
  apiKey: process.env.EL_API_KEY,
  endpoint: 'https://api.endpointlens.com/ingest',
  enabled: process.env.NODE_ENV === 'production',
})
3

The Unified Dashboard

Coverage and traffic in one view.

The dashboard fuses your static coverage data with live traffic data. For every endpoint you see its coverage status, file references, call count, average response time, error rate, and last seen timestamp.

🔍 Search endpoints...
Method ▾
Signal ▾
MethodEndpointTimeErrorSignal
GET/api/v1/students38ms0.2%Healthy
POST/api/v1/assignments124ms0.8%Healthy
GET/api/v1/legacy-reportsDead Wired
DELETE/api/v1/sessions/:id45ms1.2%Orphaned
PATCH/api/v1/users/profile67ms0.1%Redundant
PUT/api/v1/courses/:id89ms0.3%Healthy
Traffic — 7 days
4

Intelligence Signals & API Surface Score

Four signals. One score. Complete clarity.

Dead Wired. Orphaned. Redundant. Healthy. Four signals computed from the combination of your static coverage and live traffic. All four combine into the API Surface Score — a single number from 0 to 100.

0/ 100
Dead Wired 127Orphaned 43Redundant 68Healthy 562
Score — 30 days
5

Notifications & Alerts

Get alerted the moment something changes.

The Notifications Worker evaluates all active projects every 5 minutes. When a signal fires it dispatches through every configured channel simultaneously.

In-App
Notification panel in the dashboard
Email via Resend
React Email templates for every signal type
slack
Slack
Webhook and full Slack Bot with slash commands
pagerduty
PagerDuty
Critical alerts to on-call rotation
Webhook
POST to any URL your team configures
Dead Wired

Dead Wired detected on GET /legacy-reports

2 minutes ago

Orphaned

Coverage dropped to 74% — baseline breach

1 hour ago

Orphaned

Contract test failed on POST /payments

3 hours ago

6

Everywhere You Work

Dashboard, editor, Slack, and your phone.

The full dashboard is a Progressive Web App. The VS Code extension shows endpoint health inline as you write code. The Slack Bot answers questions about your API surface without leaving the conversation.

PWA — Mobile
EndpointLensScore: 78

🔔 Dead Wired detected on GET /legacy-reports

vscodeVS Code

GET /students

GET /legacy

slackSlack Bot

/endpointlens status

Score: 78 | Coverage: 82.7%

Frequently Asked Questions