The Witness For Every API Failure
Record real API traffic from React Native and Expo apps, detect failures, track response changes, and generate developer-ready reports automatically.
0
Failed Requests
0
Changed Responses
0
New Endpoints
0
Missing Docs
Mobile API bugs are impossible to reproduce
QA reports vague symptoms. Developers waste hours trying to reconstruct what actually happened.
What QA reports
Vague, hard to reproduce
What developers need
Specific, actionable data
- Which API endpoint failed?
- What request payload was sent?
- What response came back?
- Which app version?
- Which environment?
- Did the API response shape change?
From zero to API observability in minutes
Install the SDK once. Every API call is recorded, analyzed, and ready for debugging — without changing your workflow.
Install SDK
Add one dependency, call one function. No build tool changes.
Use App
Every API call is automatically captured — fetch and Axios.
Capture Traffic
Full payloads, headers, status codes, and timing recorded.
Detect Issues
Failures, response shape changes, and undocumented endpoints flagged.
Generate Reports
Export as Postman, OpenAPI, Markdown docs, or JSON.
From raw API traffic to engineering insight
Every captured request is analyzed and categorized. No more digging through raw logs.
API Failure Detection
Every failed request is captured with full context — status code, payload, headers, timing, and error message.
Response Change Tracking
Detects added, removed, or modified fields in API responses between app versions automatically.
New Endpoint Discovery
Automatically identifies API endpoints your app calls that have no matching documentation.
OpenAPI Generation
Auto-generated OpenAPI 3.0 specifications from real mobile app traffic — no manual spec writing.
Postman Export
One-click export of captured endpoints as a Postman collection for further testing and handover.
Documentation Generation
Generate readable Markdown documentation from captured API usage for your team wiki or README.
Payload Comparison
Side-by-side diff of request and response payloads across versions to surface breaking changes.
Mobile API Observability
Purpose-built for React Native and Expo. Works with fetch and Axios out of the box.
Detect Breaking API Changes Before Users Do
One field rename in an API response can crash your mobile app. APIWitness catches it before it reaches production.
{
"name": "Ahmed",
"email": "test@test.com"
}{
"fullName": "Ahmed",
"email": "test@test.com"
}name
fullName
From app traffic to production docs
API documentation that stays in sync with your mobile app — automatically generated from real usage.
OpenAPI 3.0
Standard spec generated from real traffic with inferred schemas, parameters, and response types.
Postman Collections
Ready-to-import collections with all captured endpoints, methods, and example payloads.
Markdown Docs
Readable documentation with endpoints, response shapes, version diffs, and timeline data.
Install in under a minute
Add one dependency, call one function. No build tool changes, no native module linking.
$npx expo install @apiwitness/sdk1import { useEffect } from "react";2import { Stack } from "expo-router";3import { startAPIWitness, setupAxiosWitness }4 from "@apiwitness/sdk";5import axios from "axios";6 7export default function RootLayout() {8 useEffect(() => {9 startAPIWitness({10 appName: "MyApp",11 appVersion: "1.0.0",12 environment: "development",13 recordSuccessfulRequests: true,14 sensitiveFields: [15 "password",16 "token",17 "apiKey",18 "secret",19 ],20 });21 22 setupAxiosWitness(axios);23 }, []);24 25 return (26 <>27 <StatusBar style="dark" />28 <Stack screenOptions={{ headerShown: false }} />29 </>30 );31}startAPIWitness()
Enables automatic fetch recording and log persistence.
setupAxiosWitness()
Optional — adds Axios interceptor for request capture.
Sensitive Fields
Keys are masked before logs are stored locally.
Fine-tune every detail
Configure what's captured, what's masked, and how data is synchronized.
| Option | Type | Default | Description |
|---|---|---|---|
appName | string | — | Name of the mobile app. |
appVersion | string | — | App version used for debugging reports. |
environment | string | — | Current API environment: "development", "staging", "production". |
recordSuccessfulRequests | boolean | false | Whether successful requests should also be recorded. |
sensitiveFields | string[] | ["password","token","apiKey",…] | Request / response keys to mask before storing. |
knownEndpoints | string[] | [] | Known API paths for detecting new/undocumented endpoints. |
knownDocsSpec | Record<string,string> | {} | Known endpoints mapped to doc sources for undocumented detection. |
dashboardUrl | string | undefined | Optional URL for syncing captured data to a cloud dashboard. |
enableChangeDetection | boolean | false | Enables response shape comparison across app versions. |
enableDocsGeneration | boolean | false | Enables docs generation from captured API traffic. |
enableBreadcrumbs | boolean | true | Tracks user actions (taps, navigation, gestures) as context for API calls. |
alertWebhookUrl | string | undefined | Optional webhook URL for alert dispatch when thresholds are exceeded. |
alertThreshold | number | 3 | Number of failure occurrences within cooldown window before alert fires. |
alertCooldownMs | number | 60000 | Minimum ms between duplicate alerts to prevent spamming. |
performanceBudgets | PerformanceBudget[] | [] | Latency thresholds per endpoint pattern. |
See it in action
Upload an apiwitness-report.json from your app, or view a sample. Everything stays in your browser.
Drop report file or click to browse
Supports .json files exported from the SDK
Simple, transparent pricing
Start free. Scale as your team grows.
Open Source
Self-hosted. Full SDK features. Perfect for indie developers and small teams.
- All SDK features
- Local data storage
- JSON/OpenAPI/Postman export
- Community support
- MIT License
Team
Cloud dashboard with collaboration. For teams shipping mobile apps weekly.
- Everything in Open Source
- Cloud dashboard
- Team collaboration
- Alert webhooks
- Slack / Discord integration
- Email support