Docs

GET /v1/report/{app_id}

Get a summarised analytics report for any app — crash rates, performance percentiles, and friction trends over a time window.

API

GET /v1/report/{app_id}

A summarised analytics report covering crash rates, API latency percentiles, friction trends, and release health — for any time window.

Request

GET https://api.coolcoding.co.uk/v1/report/{app_id}

Path Parameters

Parameter Type Required Description
app_id string Your app identifier

Query Parameters

Parameter Type Required Default Description
from string -7d Report window start. ISO 8601 or relative.
to string now Report window end.
group_by string day hour · day · week
platform string all ios · android · web
app_version string all Filter to a specific release

Example Request

curl -G https://api.coolcoding.co.uk/v1/report/my-app \
  -H "Authorization: Bearer cc-YOUR_API_KEY" \
  --data-urlencode "from=-7d" \
  --data-urlencode "group_by=day" \
  --data-urlencode "platform=ios"

Python:

import requests

response = requests.get(
    "https://api.coolcoding.co.uk/v1/report/my-app",
    headers={"Authorization": "Bearer cc-YOUR_API_KEY"},
    params={"from": "-7d", "group_by": "day", "platform": "ios"}
)
print(response.json())

JavaScript:

const response = await fetch(
  `https://api.coolcoding.co.uk/v1/report/my-app?from=-7d&group_by=day&platform=ios`,
  { headers: { "Authorization": "Bearer cc-YOUR_API_KEY" } }
);
console.log(await response.json());

Response

{
  "app_id": "my-app",
  "platform": "ios",
  "from": "2026-05-06T00:00:00Z",
  "to": "2026-05-13T00:00:00Z",
  "summary": {
    "crash_free_rate": 99.2,
    "total_sessions": 184200,
    "total_signals": 3847,
    "p50_latency_ms": 210,
    "p95_latency_ms": 1840,
    "p99_latency_ms": 4200,
    "avg_session_score": 74
  },
  "series": [
    {
      "date": "2026-05-06",
      "crash_free_rate": 99.6,
      "sessions": 24100,
      "p95_latency_ms": 1600,
      "avg_score": 78
    }
  ],
  "top_signals": [
    {
      "type": "crash",
      "exception": "NullPointerException",
      "count": 142,
      "affected_sessions": 98
    }
  ],
  "request_id": "req_2a8f5d",
  "usage": { "credits": 2 }
}

Error Responses

Code Meaning
400 Bad Request — missing or invalid parameters
401 Unauthorized — API key missing or invalid
429 Too Many Requests — rate limit exceeded
432 Plan limit exceeded — upgrade your plan
500 Internal Server Error

429 example:

{
  "error": "Rate limit exceeded. Please reduce request frequency.",
  "retry_after": 60
}

Implement retry logic that respects the retry-after header value.

Expert help

Need help tracking this in your app?

Our team sets up analytics pipelines for mobile and web teams every day. Talk to us and get your first events flowing in under an hour.

Talk to an expert