# Error & Status Events

Events for errors, warnings, and active time tracking.

| Event | Data Fields | Description |
|-------|-------------|-------------|
| error_occurred | data: string | General error message |
| error_occurred | message: string | Alternative error format |
| error_occurred | data: string, error: any | Error with details |
| warning | data: string | Warning message |
| total_active_seconds | number | Active workout time (sent every 5s, pauses when user leaves camera frame) |
| ios_video_fallback_activated | reason, videoUrl, readyState, userAgent | iOS detected a stuck video decoder and switched to image-based playback. The exercise still runs in a degraded-but-functional mode (no native video controls) |

**ios_video_fallback_activated Payload:**
```
{
  type: "ios_video_fallback_activated",
  reason: string,      // e.g. "video_stuck_at_metadata"
  videoUrl: string,    // URL of the affected video
  readyState: number,  // HTMLMediaElement readyState at the time of fallback
  userAgent: string    // Device user agent string
}
```

Use this event for analytics or to surface a notice in your UI when iOS playback degrades. Only listen for it if you need visibility into iOS playback issues — no integrator action is required.

---
Source: https://kinestex.com/docs/data-points/error-status-events · Index: https://kinestex.com/llms.txt
