Documentation
Updated Jul 28, 2026 · 1d ago
Get started in under 5 minutes. Send your first signal — logs, metrics, or traces — and let the intelligence engine do the rest. Connect a second signal and Epok correlates them into one root-cause verdict per incident, instead of three separate dashboards to reconcile by hand.
The sandbox is read-only, logged in as a demo tenant with pre-seeded logs. No sign-up required.
Quick start
Send one event with curl, confirm it landed, and run your first search — including the timestamp trap that silently hides data the ingest plane already accepted.
Authentication
Which credential headers the ingest plane and the app plane each accept — they are not the same set — plus a step-by-step 401 triage, now a page of its own.
Quickstart by platform
Pick your stack — each guide is a 5-minute end-to-end setup with copy-paste-ready config, the exact verification steps, and the gotchas we've seen on real deployments.
Not on this list? The protocol table below works for any shipper that speaks Elasticsearch Bulk, Loki Push, OTLP HTTP, FluentBit, Fluentd, Syslog, or plain JSON.
Supported Integrations
Epok accepts logs from any source. Pick the integration that fits your stack.
| Protocol | Endpoint | Use With |
|---|---|---|
| Elasticsearch Bulk | /_bulk | curl, Logstash, Vector, Filebeat |
| Loki Push | /loki/api/v1/push | FluentBit, Promtail, Grafana Alloy, any Loki client |
| OTLP HTTP | /v1/logs | OpenTelemetry Collector, any OTEL SDK |
| FluentBit Native | /api/v1/fluent | FluentBit (with http output, alternative to Loki) |
| Fluentd | /api/v1/fluentd | Fluentd (out_http plugin) |
| Syslog (HTTP) | /api/v1/syslog | rsyslog, syslog-ng (via omhttp) |
| CloudWatch | /api/v1/cloudwatch | AWS Lambda subscription filter |
| GCP Cloud Logging | /api/v1/ingest | Cloud Function via Pub/Sub sink |
| Generic JSON | /api/v1/ingest | Any HTTP client, custom apps |
Quickstart wizard
Two questions → the exact snippet to paste.
Where are your logs coming from?
A config alone won't tell you whether data actually arrived. Each platform guide adds a verification step and the failure branches — see the platform grid above, or start with the quickstart.
Metrics
Host, container, Kubernetes and database metrics over OpenTelemetry, Prometheus remote write, or line protocol — now a full install guide, with a separate guide for existing Prometheus fleets.
Traces
OpenTelemetry auto-instrumentation for Node, Python, Java and Go, plus the golden signals derived server-side from your spans — now a full install guide with verification steps.
Search syntax
Field filters, booleans, wildcards and regex, time and stream filters, pipes, and the two time-range behaviours that surprise people — now a reference page of its own.
Service overview (APM)
Every service Epok discovers gets a live service page — request rate, latency, errors, and per-endpoint breakdowns in one view. Open it from Services in the sidebar (or press 5), then click a service. Deep-link a single service with #/services?svc=<name>.
What the service page shows
- RED + Apdex strip — throughput (req/s), error rate, latency p50/p95/p99, and an Apdex score. Click any tile to drill into the matching traces (the p95 tile opens requests at or above p95; the Apdex tile opens requests past the tolerance threshold).
- Latency distribution — a histogram of request durations; click a bar to see the traces at least that slow.
- Per-endpoint table — req/s, error %, and p50/p95/p99 for each route. Expand a row for that endpoint's own RED, latency distribution, and top errors.
- Top errors — the failing operations and the most common error messages for the service, each linking straight to the underlying traces or logs.
- Recent deploys — deploy markers with the before→after change in error rate and p95, so a regression lines up with the release that caused it.
- Infrastructure & dependencies — host CPU/memory for the service, plus its upstream and downstream services (from trace context) with their error rates.
Configuration examples
Copy-paste shipper configs now live in the picker above, and each platform has a guide of its own that covers verification and the failure branches a bare config cannot.
What happens next
What the engine does with your data over the first hour, the first three days, and the first week — including why early thresholds are deliberately wider — is now part of the quickstart.
Detectors
Every detector we ship, what each one looks for, the alert it produces, and which are still capped at warning severity while they soak — now a browsable catalog with a page per detector.
Alerting & alert hygiene
Deduplication, grouping and escalation still happen automatically. Mute schedules, maintenance windows, the weekly digest, the audit trail and custom actions are documented on their own page.
Want alerts to carry who's affected — per-tier counts, top accounts — in the notification itself? Paste a customer roster once.
Analysis Tools
When an alert fires, Epok automatically runs analysis to help you understand what happened, why, and what to do next. Deterministic analysis runs on every tier; AI-assisted explanations are included starting with the 14-day trial (capped by daily AI budget). Open an incident in the sandbox →
Root Cause Ranking
All tiersRanks potential root causes by scoring error patterns, causal language signals, timing correlation, and cross-service propagation. Outputs a ranked list of hypotheses.
Error categorization
All tiersClassifies errors by failure type — connection, timeout, resource exhaustion, auth, configuration, data schema, rate limit, runtime crash, and more. Categories drive different investigation paths and RCA scoring.
What Changed (9 methods)
All tiersCompares the anomaly window against a baseline period across 9 dimensions: new error patterns, volume shifts, field distribution changes, new log streams, disappeared streams, latency changes, status code shifts, new field values, and pattern frequency changes.
Blast Radius
All tiersDetermines which services, endpoints, and users are affected by an incident. Shows the scope of impact to help you prioritize response.
Cascade Timeline
All tiersReconstructs the sequence of failures across services. Shows which service failed first and how the failure propagated through dependencies.
Dimension Lift
All tiersIdentifies which field values are disproportionately represented in the anomaly. If 90% of errors come from region=us-east-1, Dimension Lift surfaces that automatically. AI-generated plain-language explanations are included starting with the trial.
Cross-service error matching
All tiersMatches related errors across different services. When your API returns 500s and your database logs connection timeouts at the same time, Epok links them.
Service dependency graph
All tiersInfers service-to-service dependencies from log patterns and error propagation. Visualizes which services depend on what.
Deploy correlation
All tiersDetects recent deploys from log patterns (version strings, restart markers, config changes) and correlates anomalies with deploy timing.
AI incident narrative
Trial+Plain-language summary of what happened, what's affected, and suggested next steps. Inlined into Slack alerts and the investigation view.
AI root-cause hypothesis
Trial+LLM-assisted explanation on top of the deterministic RCA ranking. Turns signals into a readable theory of the incident.
Deep RCA
Trial+On-demand, slower analysis that pulls more context (baseline comparison, correlated events, pattern history) and produces a longer write-up.
Dimension Lift explanation
Trial+Natural-language explanation of why a dimension spiked — the shift, its scale, and whether it's the most likely cause.
Noise scoring
Trial+LLM-scored noise rating on every alert to auto-tune suppression over time. Reduces alert fatigue without manual rule edits.
Natural-language query
Trial+Ask "show me 5xx spikes from checkout in the last hour" and Epok translates it into a search. Scoped to your tenant.
Investigate
Investigate is the single window where Epok pulls together every signal for one service or incident — without bouncing between tools. Instead of stitching by a fuzzy time window, it joins signals by trace_id: the metrics, traces, and logs for a degraded service, plus any real-user sessions that hit the same error traces.
Metrics
RED signals (rate, errors, duration) for the service over the incident window, from the metrics store.
Traces
Spans for the service, deduplicated into count-badged top operations so you see the slow/failing path, not a wall of identical rows.
Logs
Error and warning logs over the same window, fingerprinted (variable numbers and IDs normalized out) and grouped into top messages with counts.
RUM
Frontend sessions whose spans share the service's error trace_ids — the real users who hit the failure.
Replay (opt-in)
When session replay is enabled for your deployment, one replay per error trace with a deep-link that seeks to the moment. Replay is off by default and opt-in.
Signals only appear when present — no metrics pipeline, no metrics tile; trace propagation off, no RUM panel. The strongest correlation is the shared trace_id join — exact, not a guess based on timing. When a service sends metrics or logs without traces, Epok still gathers its signals by service name over the incident window, so a metrics-only or logs-only service is never left out.
AI Features
Every detector and deterministic analysis tool runs on every tier. AI explanations sit on top: they turn detector output into readable prose, explain dimension shifts, auto-tune alert noise, and translate English into a search query. AI runs against your data only at your tenant's request; your data is never used for model training.
| Feature | Tier | What it does |
|---|---|---|
| Incident narrative | Trial+ | Plain-language summary of what happened, what's affected, and suggested next steps. Inlined into Slack alerts and the investigation view. |
| Root-cause hypothesis | Trial+ | LLM-assisted explanation on top of deterministic RCA ranking. Turns signals into a readable theory of the incident. |
| Suggested actions | Trial+ | Actionable next steps tailored to the incident — "restart pod X", "check migration 0042", "rate-limit caller Y". |
| Title rewrite | Trial+ | Converts detector-generated alert titles into human-readable summaries for alerts list and notification channels. |
| Deep RCA | Trial+ | On-demand slower analysis pulling more context (baseline comparison, correlated events, pattern history) to produce a longer write-up. |
| Dimension Lift explanation | Trial+ | Natural-language explanation of why a dimension spiked — the shift, its scale, and whether it's the most likely cause. |
| Noise scoring | Trial+ | LLM-scored noise rating on every alert to auto-tune suppression over time. Reduces alert fatigue without manual rule edits. |
| Natural-language query | Trial+ | Type "show me 5xx spikes from checkout in the last hour" and Epok translates it into a search. Scoped to your tenant. |
Daily AI credits
1 credit = 1 AI action. Trial: 200/day · Team: 200/day · Growth: 500/day · Custom: unlimited. Credits reset at 00:00 UTC. Alert narratives are generated eagerly; on-demand features (Deep RCA, NL query) consume credits per invocation.
Data privacy
Epok sends only the minimum necessary context (log samples, detector evidence, service names) to the AI provider. Payloads are not retained by the provider and are not used for model training. Your logs stay on Epok's servers; the LLM never gets bulk access.
Notifications
Configure where Epok sends alerts. Trial and Team include channels; Growth and Custom are unlimited.
Slack
Incoming webhook integration. Alerts include severity, affected service, description, and a link to the investigation view. Starting with the 14-day trial, AI-generated incident narratives are included inline.
Add a Slack incoming webhook URL in Settings > Notification Channels.
PagerDuty
Native Events API v2 integration. Alerts map to PagerDuty incidents with severity, dedup key, and custom details. Resolved alerts auto-resolve in PagerDuty.
Add your PagerDuty integration key (Events API v2) in Settings > Notification Channels.
Webhook
Send alert JSON to any HTTP endpoint. Use this to integrate with OpsGenie, Microsoft Teams, Discord, or custom systems.
Add a webhook URL in Settings > Notification Channels. Epok sends a POST with the alert payload as JSON.
Email notifications for alerts. Includes a summary with links to the dashboard for investigation.
Add email addresses in Settings > Notification Channels.
Team Management
Epok supports team collaboration with role-based access control.
Roles
Three roles: Owner (full access, can manage billing and delete tenant), Admin (manage members, API keys, settings), and Member (view alerts, search logs, investigate incidents).
Inviting team members
Owners and admins can create invite links in Settings. New members sign in with Google and are automatically added to your tenant with the role you specify.
Tier limits
| Tier | Daily ingest | Retention | Users | API keys | Services |
|---|---|---|---|---|---|
| Trial | 73 GB | 14 days | 3 | 2 | 10,000 |
| Team | 34 GB | 30 days | 10 | 5 | 10,000 |
| Growth | 135 GB | 30 days | Unlimited | 20 | Unlimited |
| Custom | 1024 GB | 365 days | Unlimited | Unlimited | Unlimited |
Every plan starts with a 14-day trial — no card required — and every tier, trial included, runs every intelligence detector. See pricing for full feature comparison.
Configuration
Epok works with zero configuration out of the box. All settings below are optional and can be adjusted in the dashboard.
Detection sensitivity
Volume anomaly detection calibrates itself to each service's normal traffic pattern and flags spikes, drops, and flatlines. You can adjust sensitivity per service if a stream is genuinely bursty by design, but the defaults work without tuning for almost every workload.
Threshold + composite rules
Custom rules for hard constraints. Threshold rules fire when a search query crosses a number; composite rules fire when multiple signals are simultaneously active. Full reference below →
Trial: 20 threshold + 5 composite. Team: 20 + 5. Growth, Custom: unlimited.
SLO monitoring
Define Service Level Objectives with error budget tracking. Epok monitors burn rate and predicts when your SLO will breach. Trial: 5 SLOs. Team: 5. Growth: unlimited.
Self-tuning thresholds (Team+)
Epok learns from your feedback. When you snooze, mute, or resolve alerts, the system adjusts sensitivity to reduce noise over time. No manual threshold tuning needed.
Custom rules
Threshold rules (one search crosses a number over a window) and composite rules (several signals true at once) — full field reference, worked examples, and the test endpoints — now a page of its own.
API Reference
Key endpoints for programmatic access. All endpoints require authentication via API key. Full OpenAPI reference →
Download the raw spec at /openapi.json to generate clients or import into Postman.
https://ingest.getepok.dev; the control-plane and query API live at https://app.getepok.dev; websockets connect to wss://app.getepok.dev. The endpoints below are control-plane/query unless noted otherwise. Almost everything is tenant-scoped: your numeric tenant_id is part of the path, and you can find it in the app next to your API keys. A call without it does not resolve to a shorter route — it 404s.| Method | Endpoint | Description |
|---|---|---|
| GET | /health | Health check |
| GET | /api/v1/tenants/:tenant_id/alerts | List alerts (active + recent resolved) |
| GET | /api/v1/tenants/:tenant_id/alerts/:alert_id | Get alert detail with analysis |
| POST | /api/v1/tenants/:tenant_id/alerts/:alert_id/resolve | Manually resolve an alert |
| GET | /api/v1/tenants/:tenant_id/streams | List monitored log streams |
| GET | /api/v1/tenants/:tenant_id/patterns | List detected log patterns |
| POST | /api/v1/tenants/:tenant_id/search | Log search — query, start, end, limit in a JSON body |
| GET | /api/v1/tenants/:tenant_id/facets | Field facets for filtering |
| GET | /api/v1/tenants/:tenant_id/hits | Log volume histogram |
| WS | /ws/livetail/:tenant_id | WebSocket live tail (authenticate with API key in query string or cookie) |
| WS | /ws/alerts/:tenant_id | WebSocket alert stream (real-time incident updates) |
| GET | /api/v1/detectors | List registered detectors |
| POST | /api/v1/tenants/:tenant_id/channels | Add notification channel |
| GET | /api/v1/tenants/:tenant_id/channels | List notification channels |
| GET | /metrics | Prometheus metrics |
Example: List active alerts
curl 'https://app.getepok.dev/api/v1/tenants/YOUR_TENANT_ID/alerts?state=firing' \
-H 'Authorization: Bearer YOUR_API_KEY'Example: Search logs
curl -X POST https://app.getepok.dev/api/v1/tenants/YOUR_TENANT_ID/search \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"query": "level:error", "start": "-1h", "end": "now", "limit": 100}'Limits & error codes
Body size caps, ingest rate and burst, the daily volume quota, every HTTP status code the ingest plane returns, and what changes on day 15 of the trial — now a page of its own.
Migrating From Another Tool
Moving from Datadog, Splunk, or Loki? Dual-ship for a day, verify parity, then cut over on your own schedule. The migration guide walks through each source with concrete Vector configs.
Further Reading
20 Kubernetes Failures You Should Be Alerting On
CrashLoopBackOff, OOMKilled, ImagePullBackOff, and 17 more failure modes with automatic detection.
Catch New Errors Before Users Report Them
How error fingerprinting detects never-before-seen errors automatically.
Stop Building Monitoring by Hand
Why detection that learns your baselines beats hand-written thresholds and dashboards.
Search Syntax Reference
Filters, logical operators, wildcards, time and stream filters, and aggregation pipes — the syntax behind Explore, alerts, and live tail.
Ready to get started?
Open Epok Dashboard14-day trial includes every detector and full AI root cause analysis. No credit card required.