Skip to content
Codeskop

Product features

Everything you need to understand and improve your software.

Codeskop connects errors, network activity, user journeys, releases and analytics across mobile, web and backend, so you find issues faster and build better experiences.

  • No credit card required
  • Set up in minutes
  • Works across your stack

Network capture

API monitoring from your users' devices

See the API calls that fail or crawl for real users on real networks, with the status code, timing and the users affected, alongside your crashes.

Plan: Starter and above · See pricing

RequestTiming

GET https://api.example.com/v1/user

5031,240 ms·http_5xx

Headers

Content-Type:
application/json
Content-Length:
1284
Cache-Control:
no-cache

Where the time went

DNS Connect TLS TTFB Receive

Network Capture details

What you get

  • One interceptor on Android

    Add tracker-okhttp and one OkHttp interceptor captures every request across all your Retrofit services. No per-endpoint setup.

  • Automatic on the web

    Every fetch and XMLHttpRequest is instrumented automatically: failures, status codes and latency.

  • Flutter, from your HTTP client

    Report failed calls with Codeskop.captureApiError, for example from a Dio interceptor.

  • Where the time went

    Status codes, error kinds and sizes, with a DNS, connect, TLS and time-to-first-byte breakdown (on the web, when your API allows it).

  • Failures always kept

    Failed calls are always recorded. Successful calls are timed at the sample rate you set, up to your plan's limit.

  • Private by default

    Query strings are dropped, Authorization and cookie headers are never captured, and request and response bodies aren't collected.

How it works

  1. 1

    Add capture

    Add the tracker-okhttp interceptor on Android; on the web it's on as soon as the SDK starts.

  2. 2

    Use your app as usual

    Requests are queued on the device and sent in compressed batches when there's a connection.

  3. 3

    Find the failing endpoints

    The Network tab shows failing and slow endpoints, their status codes and timing, and the users they hit.

Platform support

Network Capture by platform
AndroidAutomatic with OkHttp 4 and Retrofit (tracker-okhttp)
Web & ReactAutomatic for fetch and XHR
FlutterVia your HTTP client (e.g. a Dio interceptor)
Kotlin Multiplatform & iOSEarly access betaOkHttp on Android · your code on iOS

Questions about network capture

Does network capture record request or response bodies?

No. Bodies aren't captured, query strings are dropped, and Authorization and cookie headers are never collected.

Does it work with Retrofit?

Yes. Retrofit runs on OkHttp, so the one tracker-okhttp interceptor covers every Retrofit service in your app.

How does it work in Flutter?

There's no automatic HTTP interceptor in the Flutter SDK yet. Call Codeskop.captureApiError from your HTTP client, for example a Dio interceptor; the Flutter docs have a snippet.

Which plan includes network capture?

Starter and above. The share of successful calls that are timed grows with the plan; failed calls are always kept.

Is this the same as APM or distributed tracing?

No. Codeskop measures API calls from the client side, as your users experience them. It doesn't trace requests across backend services.

Server monitoring

Error and API monitoring for your backend services

See your services' errors, every request they handle and every API they call, next to the crashes and network calls from your mobile and web apps. Generally available for Python, Node.js, Go, Java and PHP.

Plan: Errors on every plan · requests and API calls from Starter

Requests your servers receive
GET   /orders/{id}       200    84 msPOST  /orders            500   312 ms  ← errorGET   /users/{id}/cart   200    41 ms

What you get

  • Errors

    Unhandled exceptions in requests, background jobs and threads, plus errors you report yourself.

  • Grouped by your own code

    Issues are grouped by your own frames, so library frames don't split one bug into many.

  • Incoming requests by route

    Every request your service handles, by route (for example /orders/{id}), with status, latency and size.

  • Outgoing API calls

    Requests your service makes to other APIs, with status, latency and failures.

  • Never blocks a request

    Events are batched and sent in the background. The SDKs have no runtime dependencies.

  • One dashboard

    Backend issues sit next to your Android, Flutter and web issues, with the same alerts, tickets and Fix with AI.

How it works

  1. 1

    Install the SDK

    Add the package for your language and set your project's public key.

  2. 2

    Add your framework's integration

    A middleware, extension or plugin for Django, Express, Spring Boot, Laravel, Gin and the rest.

  3. 3

    See errors and routes

    Errors arrive as issues; requests and API calls appear on the Network page.

Languages and frameworks

Server Monitoring: languages and frameworks
PythonPython 3.9+ · Django, Flask, FastAPI and Starlette, Celery, requests and httpx
Node.jsNode.js 18+ · Express, Fastify, NestJS, Next.js route handlers, fetch and http
GoGo 1.23+ · net/http, Gin and Echo
Java & KotlinJava 11+ · Spring Boot 3, Servlet containers, OkHttp and HttpClient
PHPPHP 8.1+ · Laravel 10+, plain PHP and Guzzle 7
OpenTelemetryEarly access betaAny OpenTelemetry SDK or Collector, over OTLP/HTTP

Questions about server monitoring

Are the server SDKs production-ready?

Yes. The Python, Node.js, Go, Java and PHP SDKs are generally available. OpenTelemetry ingest is in beta.

Which plan do I need?

Server errors are included on every plan, Free too. Incoming request and outgoing API call monitoring follow the network monitoring on your plan (Starter and above), with the same sampling; failed requests are always kept.

Is this APM?

No. Codeskop captures errors, requests by route and outgoing API calls per service. It doesn't trace requests across services.

What about other languages?

Send traces and error logs with OpenTelemetry (beta), for example from .NET, Ruby, Rust or Elixir, or send events directly with the Ingest API.

Which key should a service use?

The project's public key (cs_live_pk_…), the same kind your apps use. The SDKs refuse secret keys. Create a separate project for each backend service.

Platforms

One SDK. Every platform.

Codeskop works across your stack, from mobile and web to backend services. What each SDK captures

It all connects

From issue to insight, in one production story.

Errors, user journeys, network activity and releases are linked, so you go from symptom to root cause in minutes.

  1. An issue occurs

    A crash or error is captured with its full context.

  2. See who it hit

    How many users, which devices and which release.

  3. Check the requests

    The failing and slow API calls around it.

  4. Check the release

    Whether the latest release made it worse.

  5. Investigate and fix

    Assign it, ticket it, or get a proposed fix.

Ready to improve your software?

Start building more reliable experiences today.

Free plan, no credit card. Your first crash report can arrive in minutes.