GET /v1/signals
A real-time feed of every error, slow path, and friction point — the same surface your AI agent reads.
Request
GET https://api.coolcoding.co.uk/v1/signals
GET https://api.coolcoding.co.uk/v1/signals/{app_id}
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
app_id |
string | — | null |
Filter to a specific app (or pass in URL path) |
type |
string | — | all |
crash · anr · network_error · slow_render · friction |
severity |
string | — | all |
critical · warning · info |
from |
string | — | -1h |
ISO 8601 or relative (-1h, -24h, -7d) |
to |
string | — | now |
ISO 8601 or now |
limit |
integer | — | 50 |
Max results returned. Min 1, max 500 |
stream |
boolean | — | false |
Set true for Server-Sent Events (SSE) stream |
Example Request
curl -G https://api.coolcoding.co.uk/v1/signals \
-H "Authorization: Bearer cc-YOUR_API_KEY" \
--data-urlencode "app_id=my-app" \
--data-urlencode "type=crash" \
--data-urlencode "severity=critical" \
--data-urlencode "from=-24h" \
--data-urlencode "limit=20"
Python:
import requests
response = requests.get(
"https://api.coolcoding.co.uk/v1/signals",
headers={"Authorization": "Bearer cc-YOUR_API_KEY"},
params={
"app_id": "my-app",
"type": "crash",
"severity": "critical",
"from": "-24h",
"limit": 20
}
)
print(response.json())
JavaScript:
const params = new URLSearchParams({
app_id: "my-app",
type: "crash",
severity: "critical",
from: "-24h",
limit: 20
});
const response = await fetch(`https://api.coolcoding.co.uk/v1/signals?${params}`, {
headers: { "Authorization": "Bearer cc-YOUR_API_KEY" }
});
console.log(await response.json());
Response
{
"signals": [
{
"id": "sig_x9f2a1",
"app_id": "my-app",
"type": "crash",
"severity": "critical",
"timestamp": "2026-05-13T09:00:00Z",
"session_id": "sess_abc123",
"platform": "ios",
"app_version": "2.4.1",
"payload": {
"exception": "NullPointerException",
"stack_trace": "at com.myapp.Main:42",
"fatal": true,
"device_model": "iPhone 15",
"os_version": "iOS 18.1"
},
"score": 0.97
}
],
"total": 1,
"from": "2026-05-12T09:00:00Z",
"to": "2026-05-13T09:00:00Z",
"request_id": "req_8b2d4e",
"usage": { "credits": 1 }
}
Streaming (SSE)
Set stream=true to receive a live Server-Sent Events feed:
curl -N "https://api.coolcoding.co.uk/v1/signals?app_id=my-app&stream=true" \
-H "Authorization: Bearer cc-YOUR_API_KEY"
Each event arrives as:
data: {"id":"sig_x9f2a1","type":"crash","severity":"critical",...}
This is the primary endpoint for AI agent subscriptions. Point your agent here and let CC do the watching.
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.
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