Read-only programmatic access to events, logs, and sessions. Built for CI pipelines, AI agents, and custom integrations that need data without the Dashboard.
01Overview
Every request authenticates with a bearer token minted under Settings → API Tokens.
Base URLhttps://api.sumidata.io
AuthAuthorization: Bearer sumi_…
Content-Typeapplication/json
ScopeRead-only - no event ingest here
i
Tokens are scoped to a single project. Project filtering is applied automatically from the token - never pass projectId in query params.
!
The Partner API is read-only. In the browser, record orders with Sumidata.purchase(order) - see Conversions. To send events from a backend, use POST /sdk/ingest (the SDK ingest endpoint, authenticated by projectId in the JSON body - no Bearer token).
02Query DSL
All list endpoints share the same filter syntax.
The pattern is q[field__action]=value. Multiple filters combine with AND. Fields an endpoint does not support and unknown actions are silently ignored, not rejected.
Filter actions
Action
SQL
Example
__eq
= value
q[level__eq]=error
__not
!= value
q[source__not]=sdk
__in
IN (...)
q[level__in]=error,warn
__cont
LIKE '%v%'
q[message__cont]=Checkout
__like
ILIKE '%v%'
q[name__like]=page
__gte
>= value
q[timestamp__gte]=2026-01-01
__lte
<= value
q[timestamp__lte]=2026-04-01
__is
IS NULL · IS NOT NULL
q[sessionId__is]=null · not_null
__order
ORDER BY
q[timestamp__order]=desc
order
ORDER BY
q[order]=timestamp:asc
Pagination
q[page] (default 1) and q[perPage] (default 50, max 200).
03Endpoints
Five endpoints - health, events, logs, sessions, schema validation. All read-only GETs.
Conversion fields (orderId, totalAmount, currency, utmSource…) are columns on the same row, not inside payload, and this endpoint does not return them or an order's line items. Use q[orderId__not]= to list only conversions, or filter by name. payload contains only the free-form fields you sent - metadata (_category/_feature/_surface) is stripped into the per-project dictionary at ingest.
Errors
401
Valid API token required. Use Authorization: Bearer sumi_xxx
Missing Authorization header, or it does not start with Bearer sumi_
401
Invalid or revoked API token
Token not found, or revoked
500
Internal Server Error
A q[…] value does not parse as the field's type (e.g. a non-UUID sessionId)
Checks the 200 most recently ingested events against the event metadata allowlist - the category, surface and feature stored for each event name. No query params.