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.