Observability

From a spike on a chart to the bytes that caused it, in two clicks.

Most API tooling stops at an aggregate. Flintwake keeps the aggregate and the underlying requests in the same place, so a latency chart is a starting point rather than a conclusion.

  • 30 daysSearchable request historyConfigurable per environment
  • 1.8msMedian collector overheadMeasured at the edge, not at the origin
  • 6Dimensions on every metricEndpoint, consumer, key, region, status, deploy
  • 0Changes to your applicationCapture happens beside your API, not inside it

How it reads

Three layers, one click apart.

The distance between noticing a problem and understanding it is the whole product.

  1. 01

    The number

    A chart tells you p95 moved. That is where most tooling stops and where the argument starts.

  2. 02

    The dimension

    Flintwake splits the same number by endpoint, consumer, key, region and deploy — so the question becomes which one, not whether.

  3. 03

    The request

    Click through and you are reading the exact bytes: headers, redacted body, timing per phase, and the wake ID your support team can quote.

Charts

Latency and error attribution

Latency quantiles
p5042msp95112msp99236ms
011723435146800:0006:0012:0018:0024:00
p50 medianp95p99 tail
Errors by type
429Rate limit exceeded42,180
404Resource missing14,620
402Payment required4,880
500Internal error1,104
504Upstream timeout402

Endpoints

Health per path template

Sort by throughput, any latency quantile or error rate. The sparkline shows the last twelve intervals.

Endpoint health · last 24h
Endpoint throughput, latency quantiles and error rate, sorted by req/min.
EndpointTrend
GET/v2/catalog/items31,20029ms63ms141ms0.04%
GET/v2/accounts/{id}/balance26,10018ms41ms88ms0.02%
POST/v2/payments/intents18,40062ms148ms312ms0.18%
GET/v2/customers/{id}14,80021ms48ms102ms0.61%
PATCH/v2/subscriptions/{id}4,20044ms96ms204ms1.42%
GET/v2/reports/settlements860410ms1820ms4400ms3.10%
POST/v2/webhooks/endpoints12051ms96ms188ms0.00%
DELETE/v2/api-keys/{id}4233ms52ms91ms0.00%

Consumers

The view nobody else ships

Your dashboards are per-service. Your customers experience per-integration. This is the second one.

Consumers · last 24h
Every integration with its plan, traffic share, error rate, latency and quota usage.
ConsumerPlanRequestsErrorsp95Quota
Northbank PaymentsScale14.8M0.11%128ms64%
Halyard RetailScale11.2M0.28%96ms48%
Cedarlift LogisticsGrowth7.4M0.06%61ms82%
Orrery MediaGrowth6.1M2.44%214ms96%
Pelham FreightStarter4.9M1.18%402ms71%
Tessellate LabsStarter3.8M0.04%54ms22%

Requests

The wake itself

Every aggregate above is one click from the requests underneath it.

Request explorer
api.flintwake.com
  • Requests · 24h48.2M +6.4%
  • p95 latency112ms −9ms
  • Error rate0.21% −0.06pt
  • Active consumers1,284 +37
8 of 8 wakes
wk_0c41f2a9
201 148msiad1
content-type
application/json; charset=utf-8
x-flintwake-wake-id
wk_0c41f2a9
x-ratelimit-limit
6000
x-ratelimit-remaining
5842
x-ratelimit-reset
38
Response body
{
  "id": "pi_3QkL2xB",
  "object": "payment_intent",
  "amount": 24900,
  "status": "requires_capture",
  "created": 1789012458
}
Demonstration fixtures — no live traffic is captured by this template.

Capture rules

You decide what is kept.

Capture rules are a versioned file. Commit them to your repository, apply them on deploy, and review a change to redaction the way you review any other change.

  • Request explorer

    Filter 30 days of wakes by method, status, endpoint, consumer, key or region.

  • Response inspector

    Headers, body, timing waterfall and the wake ID your support team can quote back.

  • Endpoint health

    p50 / p95 / p99, error rate and throughput per endpoint, sorted by whatever is hurting.

  • Live tail

    A rolling stream for the twenty minutes around a deploy.

  • Geography

    Latency split by edge region so you know whether it is you or the distance.

flintwake.rules.json
{
  "version": 3,
  "capture": [
    { "match": "/v2/**", "bodies": true },
    { "match": "/v2/health", "capture": false }
  ],
  "redact": [
    "$.card.number",
    "$.customer.email",
    "$.*.tax_id"
  ],
  "headers": {
    "allow": ["content-type", "user-agent", "x-request-id"]
  },
  "retention_days": 30
}

Point it at one endpoint and see whether the picture is better.

The quickstart takes four minutes and does not require a change to your application code.