Protocol overview
Lookout’s ingest surface is organized around errors, traces, and source maps. This page maps those ideas to Lookout endpoints and notes where behavior is intentionally narrow. For errors-only vs errors + performance and the server-side trace gate, see Monitoring modes.
Errors
Send JSON error reports with your project API key (same key as in project settings).
POST https://lookout.dply.io/api/ingest— primary endpointPOST https://lookout.dply.io/api/v1/ingest— versioned aliasPOST https://lookout.dply.io/api/v1/errors— REST-style alias; same handler and body rules as/api/ingest
Authentication: X-Api-Key, X-Api-Token (alias of the same key), Authorization: Bearer, or api_key in the JSON body. Full field tables and examples are in the Ingest API doc.
Extended camelCase JSON: Lookout accepts common alternate-client camelCase fields on the same endpoints and maps them before validation: exceptionClass, applicationPath, trackingUuid, seenAtUnixNano, stacktrace (frames with lineNumber / className), attributes (merged into context), sourcemapVersionId (stored under context.sourcemap_version_id), events (serialized into context.nested_client_events), and solutions (first text mapped to client solution when present), isLog → is_log, openFrameIndex → open_frame_index, overriddenGrouping → grouping_override (custom fingerprint when fingerprint is empty), and top-level level when sent as camelCase. Native Lookout snake_case fields take precedence when both are sent.
Traces
Use the native Lookout span JSON model on POST https://lookout.dply.io/api/ingest/trace (or /api/v1/ingest/trace) as described in Ingest API — Distributed tracing.
For OpenTelemetry collectors or SDKs that emit OTLP JSON (resourceSpans / Protobuf-JSON field names), use POST https://lookout.dply.io/api/ingest/trace/otlp (or /api/v1/ingest/trace/otlp) — same API key, rate limit, and performance ingest gate. Multiple traceId values in one payload are split into separate stored traces.
Each project can disable trace ingest in app settings; disabled projects return 403 on both trace endpoints (errors on /api/ingest are unaffected). Correlate errors with traces using trace_id, span_id, lookout_trace / Sentry-compatible headers on ingest.
Source maps
A separate hosted upload API only for source maps is not implemented in Lookout. Include source_map_url and/or inline source_map on error ingest where documented; values are stored for future symbolication (not applied in the UI yet).
Framework SDKs
Laravel (lookout/tracing), Rails (packages/lookout-rails), and WordPress (packages/lookout-wordpress) helpers for breadcrumbs or server-side exception reporting are summarized on Framework integrations. Install paths and mirrors: Packages & installation.
Beyond the three pillars
Lookout also exposes cron check-ins, performance profiles, and logs on the same API key — see Crons, Profiling, and Logs in the Ingest API doc. Trace and profile sampling is client-side: use lower rates in production and optional slow-transaction rules — see Tracing and Profiling there.