Analytics
Privacy Analytics
Cookieless web analytics for aggregate pageviews, sessions and goals. Your disclosure and consent obligations still depend on configuration and use.
- Cookieless by design — assess disclosures and legal basis for your use case
- Under 1 KB script, <50ms p95 ingestion latency
- UTM, referrer, custom events, and goal funnels
- Public sharing links — embed on your status page or pitch deck
<!-- one script tag, anywhere in <head> -->
<script defer
data-domain="yoursite.com"
src="https://analytics.mojaq.com/js/script.js"
></script>
# custom events
plausible('Signup', { props: { plan: 'pro' } })
# url → pdf
curl -X POST https://api.mojaq.com/v1/render \
-H "X-API-Key: $MOJAQ_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://invoice.app/123","format":"pdf"}' \
-o invoice.pdf
# or html → png at any viewport
{ "html": "<h1>Hello</h1>",
"format": "png",
"viewport": { "width": 1200, "height": 630 } }
Render API
Screenshot & PDF API
Send a URL or HTML, get back pixel-perfect screenshots or PDFs. A real Chrome engine under the hood, hardened for production batch workloads.
- PDF, PNG, JPEG, WebP — single endpoint, one bearer token
- Custom viewports, device emulation, full-page or element captures
- Webhook on completion for batch jobs (invoices, social cards)
- Authenticated upstream requests via per-call headers
Uptime
Uptime & Heartbeat Monitoring
Watch websites, APIs, ports, and cron jobs from Helsinki. Push monitors catch the silent failures your TCP probes miss.
- HTTP, TCP, ICMP, DNS, gRPC, push-heartbeat — one runtime
- 30-second intervals, multi-region probes on the roadmap
- Slack, Discord, webhook, email alert channels
- Public status pages with your custom domain & branding
# nightly backup heartbeat — alert if no ping in 26h
curl -fsS "https://kuma.mojaq.com/api/push/$TOKEN" \
--data-urlencode "status=up" \
--data-urlencode "msg=backed up 51 files, 194M"
# exact pattern in our own backup.sh:
# https://github.com/mojaq/...
# Sentry SDK works as-is — point DSN, ship.
import * as Sentry from "@sentry/node"
Sentry.init({
dsn: "https://<key>@errors.mojaq.com/<project-id>",
tracesSampleRate: 0.1,
})
# Captures stack traces, breadcrumbs, request context.
# Smart grouping deduplicates noisy errors.
Errors
Error & Exception Tracking
Accepts Sentry-compatible SDK ingestion for supported event workflows. Point a supported client at errors.mojaq.com and verify the features your application relies on before switching production traffic.
- Supported Sentry SDK ingestion paths for Node, Python, Go, PHP, Ruby and .NET — validate required integrations
- Full stack traces, breadcrumbs, request & user context
- Issue grouping, assignments, daily digest emails
- Slack, Discord, webhook, and now Resend-powered email
# evaluate a flag for a user
curl "https://api.mojaq.com/v1/flags/new-checkout?user_id=usr_123" \
-H "X-API-Key: $MOJAQ_KEY"
# response
{ "enabled": true, "rollout": "25%" }
Feature Flags
Feature Flags & Rollouts
Ship code separately from activation. Boolean flags, percentage rollouts and attribute targeting from one API, EU-hosted.
- Boolean flags, percentage rollouts, user targeting
- Kill switch: pause a bad rollout with one call
- Flag data stays in the EU, next to your errors and analytics
- Unlimited flags on every plan
Realtime
Realtime WebSockets
Pusher-protocol-compatible realtime for supported client workflows, with connections terminated in the EU. Validate the client features and extensions your application relies on before switching.
- Public, private and presence channels
- Drop-in: swap the key and host, keep your code
- Server REST API for publishing events
- Live debug console in the dashboard
// your existing pusher-js client, EU host
const pusher = new Pusher("MOJAQ_APP_KEY", {
wsHost: "realtime.mojaq.com",
forceTLS: true,
});
pusher.subscribe("orders")
.bind("order.updated", render);
# GET /dashboard/rewind?minutes=15
{
"narrative": "Deploy v2.4.1 at 20:11 UTC — first browser"
"error 5 min later. Blast radius: 14 sessions.",
"trigger": "Deploy v2.4.1 to production",
"plan": ["Roll back v2.4.1 (redeploy previous)"]
}
Rewind · new
Evidence-backed incident investigation
What changed, what symptoms followed, and a plan to investigate or reverse it. Rewind correlates deploys, flags, AI calls, traces and real-user signals across MOJAQ's backing services, then presents evidence-backed hypotheses for you to review.
- Ranks changes that preceded the first symptom
- Summarises observed blast radius across connected signals
- Advisory only — MOJAQ never touches your systems
AI Gateway
Governed AI gateway
An OpenAI-compatible endpoint in front of any provider. Budget caps, a kill-switch and automatic model fallback — without changing your code.
- Drop-in wrapper: one import, keep your OpenAI code
- Per-org spend caps and a one-click kill-switch
- Every gateway request measured for cost control and audit
// keep your OpenAI code, change one import
import OpenAI from "mojaq-openai"
const ai = new OpenAI({ apiKey: process.env.MOJAQ_API_KEY })
await ai.chat.completions.create({ model: "gpt-4o-mini", messages })
# send a batch of spans, see the waterfall
curl -X POST https://api.mojaq.com/v1/traces \
-H "x-api-key: $KEY" \
-d '{"spans":[{"trace_id":"t1","span_id":"a",
"service":"web","name":"POST /checkout",
"start_ms":0,"duration_ms":840}]}'
Tracing
Distributed tracing & APM
Span waterfalls, service latency and error rates. Send a simple JSON batch and inspect the timing recorded by each submitted span.
- p50 / p95 latency and error rate per service
- Click any trace for the full waterfall
- Joins the shared correlation layer for errors, deploys and AI calls
Security
SSL & Domain Watch
Enter a root domain once. We discover certificates and subdomains observable through Certificate Transparency and DNS, then flag expiring certificates and potential subdomain-takeover indicators. Coverage depends on public records and DNS visibility.
- Certificate Transparency + DNS + live TLS handshakes
- Dangling-CNAME / subdomain-takeover detection
- Free public scan — no login required
# one-time free scan, no login
curl -X POST https://mojaq.com/api/scan \
-d '{"domain":"yourcompany.com"}'
# → discovered public records, risk-ranked
# generate an AI-Act risk classification
POST /dashboard/compliance/generate
{ "type": "ai_act" }
# → a document built from your real
# models, providers and call volume
Compliance
Compliance Center
Create DPIA, AI Act and data-flow working drafts from limited observed usage. The generator marks unobserved legal, provider and residency conclusions as unknown; it does not produce an attestation or legal advice.
- Readiness score with an actionable checklist
- DPIA, AI-Act and residency, generated from live data
- Built on the Komplio document engine