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.