Skip to main content

Overview

Canvas captures two types of runtime data for every app:
  • Request logs — every HTTP request hitting your app (method, path, status, duration)
  • Runtime logsconsole.log/warn/error/info output from server functions
Both are stored in ClickHouse with a 30-day retention and queryable via API or Studio.

Request logs

Every request to your Canvas app is logged automatically — no configuration needed.

Query via API

curl "https://api.mixpeek.com/v1/apps/$APP_ID/logs?log_type=requests&hours=1&limit=100" \
  -H "Authorization: Bearer $API_KEY"
Response:
{
  "app_id": "app_1433d93d7a95",
  "log_type": "requests",
  "entries": [
    {
      "timestamp": "2026-03-29 21:21:02.750",
      "method": "GET",
      "path": "/",
      "status_code": 200,
      "duration_ms": 74,
      "user_agent": "Mozilla/5.0 ...",
      "ip": "68.175.65.201"
    }
  ]
}

Parameters

ParameterTypeDefaultDescription
log_typestringruntimeruntime or requests
hoursinteger1Lookback window (1–168 hours)
levelstringFilter by log level (runtime only): log, warn, error, info
limitinteger100Max entries returned (1–1000)

Runtime logs

Server function console output is automatically captured and stored. Each log entry includes the function route and log level.

Query via API

# All runtime logs from the last hour
curl "https://api.mixpeek.com/v1/apps/$APP_ID/logs?log_type=runtime&hours=1" \
  -H "Authorization: Bearer $API_KEY"

# Only errors
curl "https://api.mixpeek.com/v1/apps/$APP_ID/logs?log_type=runtime&hours=24&level=error" \
  -H "Authorization: Bearer $API_KEY"
Response:
{
  "app_id": "app_1433d93d7a95",
  "log_type": "runtime",
  "entries": [
    {
      "timestamp": "2026-03-29 22:15:03.456",
      "level": "error",
      "message": "Failed: connection timeout",
      "route_path": "search",
      "request_id": "req_abc123"
    }
  ]
}

Studio

In Studio, the App details page has an Analytics panel with three tabs:
TabWhat it shows
OverviewError rates, web vitals, custom events
Runtime LogsServer function console output with level badges
RequestsHTTP request log with method, path, status, and duration
Both log tabs auto-refresh every 10 seconds and support filtering by time range and log level.

What’s captured

Request log fields

FieldDescription
timestampWhen the request was received
methodHTTP method (GET, POST, etc.)
pathRequest path
status_codeHTTP response status
duration_msTime to process the request (ms)
user_agentClient user agent string
ipClient IP address

Runtime log fields

FieldDescription
timestampWhen the log was emitted
levellog, warn, error, or info
messageThe logged message (truncated to 2000 chars)
route_pathWhich server function produced the log
request_idCorrelates logs to a specific request

Retention

All log data is retained for 30 days and automatically purged after that.