Download OpenAPI specification:
Privacy-first product analytics: event ingestion, dashboard queries and erasure of a user's events. No cookies on tracked visitors, no personal data, no IP address or user agent stored.
Always answers 202: a code is created and emailed only when the email belongs to an admin.
| email required | string <email> <= 254 characters ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-... |
| locale | string <= 35 characters ^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{1,8})*$ The language of the dashboard asking, as a BCP 47 tag (en, pt-BR). The email is written in it when the API has it (matched on the language, so pt-PT gets pt-BR), else in English. |
{- "email": "user@example.com",
- "locale": "string"
}{- "error": "string",
- "message": "string",
- "status_code": -9007199254740991
}The session records the browser, system and device type classified from the request, for the sessions list; the user agent itself is never kept.
| code required | string^\d{6}$ |
| email required | string <email> <= 254 characters ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-... |
{- "code": "string",
- "email": "user@example.com"
}{- "email": "user@example.com",
- "session_token": "string"
}{- "email": "user@example.com",
- "projects": [
- {
- "conversion_event": "string",
- "first_event_at": "2019-08-24T14:15:22Z",
- "icon_version": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "last_event_at": "2019-08-24T14:15:22Z",
- "name": "string",
- "timezone": "string"
}
]
}{- "sessions": [
- {
- "browser": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "current": true,
- "device_type": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "last_used_at": "2019-08-24T14:15:22Z",
- "os": "string"
}
]
}Public route, authenticated by the project key in the body and the Origin header. Invalid events are counted as rejected; the rest of the batch is stored. A resent event is a duplicate, never stored twice.
required | Array of objects (IncomingEvent) [ 1 .. 50 ] items |
| key required | string^pyxis_pk_[A-Za-z0-9]{32}$ |
| sent_at required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
{- "events": [
- {
- "attribution": {
- "from_ad_click": true,
- "referrer_host": "string",
- "utm": {
- "campaign": "string",
- "medium": "string",
- "source": "string"
}
}, - "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "occurred_at": "2019-08-24T14:15:22Z",
- "path": "string",
- "properties": {
- "property1": "string",
- "property2": "string"
}, - "session_id": "1ffd059c-17ea-40a8-8aef-70fd0307db82",
- "user_id": "string"
}
], - "key": "string",
- "sent_at": "2019-08-24T14:15:22Z"
}{- "accepted": 0,
- "duplicates": 0,
- "rejected": 0
}| projectId required | string <uuid> |
| from required | string <date> First day, inclusive, in the project time zone |
| to required | string <date> Last day, inclusive, at most today in the project time zone; 400 days at most |
{- "campaigns": [
- {
- "campaign": "string",
- "channel": "paid",
- "conversions": -9007199254740991,
- "converting_visits": -9007199254740991,
- "from_ad_click_visits": -9007199254740991,
- "medium": "string",
- "source": "string",
- "visits": -9007199254740991
}
], - "days": [
- {
- "by_channel": {
- "property1": -9007199254740991,
- "property2": -9007199254740991
}, - "date": "2019-08-24"
}
], - "sources": [
- {
- "channel": "paid",
- "conversions": -9007199254740991,
- "converting_visits": -9007199254740991,
- "from_ad_click_visits": -9007199254740991,
- "medium": "string",
- "source": "string",
- "visits": -9007199254740991
}
]
}| projectId required | string <uuid> |
| from required | string <date> First day, inclusive, in the project time zone |
| to required | string <date> Last day, inclusive, at most today in the project time zone; 400 days at most |
{- "browsers": [
- {
- "conversions": -9007199254740991,
- "converting_visits": -9007199254740991,
- "value": "string",
- "visits": -9007199254740991
}
], - "countries": [
- {
- "conversions": -9007199254740991,
- "converting_visits": -9007199254740991,
- "value": "string",
- "visits": -9007199254740991
}
], - "device_types": [
- {
- "conversions": -9007199254740991,
- "converting_visits": -9007199254740991,
- "value": "string",
- "visits": -9007199254740991
}
], - "operating_systems": [
- {
- "conversions": -9007199254740991,
- "converting_visits": -9007199254740991,
- "value": "string",
- "visits": -9007199254740991
}
], - "regions": [
- {
- "conversions": -9007199254740991,
- "converting_visits": -9007199254740991,
- "name": "string",
- "value": "string",
- "visits": -9007199254740991
}
]
}| projectId required | string <uuid> |
| from required | string <date> First day, inclusive, in the project time zone |
| to required | string <date> Last day, inclusive, at most today in the project time zone; 400 days at most |
{- "entry_pages": [
- {
- "path": "string",
- "single_page_visits": -9007199254740991,
- "visits": -9007199254740991
}
], - "exit_pages": [
- {
- "path": "string",
- "visits": -9007199254740991
}
], - "median_visit_seconds": -9007199254740991,
- "single_page_visits": -9007199254740991,
- "visit_lengths": [
- {
- "up_to_seconds": -9007199254740991,
- "visits": -9007199254740991
}
], - "visits": -9007199254740991
}| projectId required | string <uuid> |
| from required | string <date> First day, inclusive, in the project time zone |
| to required | string <date> Last day, inclusive, at most today in the project time zone; 400 days at most |
| kind required | string Enum: "events" "screens" |
{- "items": [
- {
- "count": -9007199254740991,
- "daily": [
- -9007199254740991
], - "name": "string",
- "visits": -9007199254740991
}
]
}| projectId required | string <uuid> |
| from required | string <date> First day, inclusive, in the project time zone |
| to required | string <date> Last day, inclusive, at most today in the project time zone; 400 days at most |
| name required | string^[a-z][a-z0-9_]{0,63}$ The named event to break down |
{- "events": -9007199254740991,
- "keys": [
- {
- "events": -9007199254740991,
- "key": "string",
- "other_count": -9007199254740991,
- "values": [
- {
- "count": -9007199254740991,
- "value": "string",
- "visits": -9007199254740991
}
]
}
], - "name": "string"
}| projectId required | string <uuid> |
| from required | string <date> First day, inclusive, in the project time zone |
| to required | string <date> Last day, inclusive, at most today in the project time zone; 400 days at most |
| mode required | string Enum: "visit" "user" |
| steps required | string URL-encoded JSON array of 2 to 8 steps: {"type":"page","path":"/calculator-*"} (a star matches any characters) or {"type":"event","name":"signup_completed"} |
{- "median_seconds_overall": -9007199254740991,
- "steps": [
- {
- "count": -9007199254740991,
- "median_seconds_from_previous": -9007199254740991
}
]
}| projectId required | string <uuid> |
| from required | string <date> First day, inclusive, in the project time zone |
| to required | string <date> Last day, inclusive, at most today in the project time zone; 400 days at most |
| steps required | string The steps of the funnel, as for /funnel |
| by required | string Enum: "device" "channel" |
{- "by": "device",
- "segments": [
- {
- "segment": "string",
- "steps": [
- -9007199254740991
]
}
]
}| projectId required | string <uuid> |
| from required | string <date> First day, inclusive, in the project time zone |
| to required | string <date> Last day, inclusive, at most today in the project time zone; 400 days at most |
| mode required | string Enum: "visit" "user" |
| steps required | string The steps of the funnel, as for /funnel |
| step required | integer >= 1 The step, 1 for the first; dropped needs 2 or more |
| outcome required | string Enum: "reached" "dropped" |
| cursor | string The next_cursor of the previous page |
{- "next_cursor": "string",
- "subjects": [
- {
- "id": "string",
- "last_step_at": "2019-08-24T14:15:22Z"
}
]
}Taken from the first allowed origin once a day: the touch icon or the largest icon the home page declares, else /favicon.ico; raster images only, up to 100 KB. Cache it by adding icon_version from GET /v1/me to the URL.
| projectId required | string <uuid> |
{- "error": "string",
- "message": "string",
- "status_code": -9007199254740991
}| projectId required | string <uuid> |
| from required | string <date> First day, inclusive, in the project time zone |
| to required | string <date> Last day, inclusive, at most today in the project time zone; 400 days at most |
{- "comparison_cutoff": "string",
- "days": [
- {
- "date": "2019-08-24",
- "events": -9007199254740991,
- "page_views": -9007199254740991
}
], - "kpis": {
- "conversions": {
- "current": -9007199254740991,
- "daily": [
- -9007199254740991
], - "previous": -9007199254740991
}, - "converting_visits": {
- "current": -9007199254740991,
- "daily": [
- -9007199254740991
], - "previous": -9007199254740991
}, - "identified_users": {
- "current": -9007199254740991,
- "daily": [
- -9007199254740991
], - "previous": -9007199254740991
}, - "visits": {
- "current": -9007199254740991,
- "daily": [
- -9007199254740991
], - "previous": -9007199254740991
}, - "write_errors": {
- "current": {
- "failed": -9007199254740991,
- "total": -9007199254740991
}, - "daily": [
- {
- "failed": -9007199254740991,
- "total": -9007199254740991
}
], - "previous": {
- "failed": -9007199254740991,
- "total": -9007199254740991
}
}
}, - "previous_days": [
- {
- "conversions": -9007199254740991,
- "converting_visits": -9007199254740991,
- "date": "2019-08-24",
- "events": -9007199254740991,
- "identified_users": -9007199254740991,
- "page_views": -9007199254740991,
- "visits": -9007199254740991,
- "write_errors": {
- "failed": -9007199254740991,
- "total": -9007199254740991
}
}
], - "top_events": [
- {
- "count": -9007199254740991,
- "name": "string",
- "visits": -9007199254740991
}
], - "top_pages": [
- {
- "path": "string",
- "views": -9007199254740991,
- "visits": -9007199254740991
}
]
}| projectId required | string <uuid> |
| from required | string <date> First day, inclusive, in the project time zone |
| to required | string <date> Last day, inclusive, at most today in the project time zone; 400 days at most |
| screen | string Only the calls made from this page path |
| kind | string Enum: "writes" "reads" writes (the default): every non-GET call; reads: failed GET calls only |
| route | string Also answer route_days for this method and route: POST /orders/:id |
{- "days": [
- {
- "by_status_class": {
- "property1": -9007199254740991,
- "property2": -9007199254740991
}, - "date": "2019-08-24"
}
], - "kind": "writes",
- "route_days": [
- {
- "date": "2019-08-24",
- "failed": -9007199254740991,
- "median_duration_ms": -9007199254740991,
- "p95_duration_ms": -9007199254740991,
- "total": -9007199254740991
}
], - "routes": [
- {
- "failed": -9007199254740991,
- "median_duration_ms": -9007199254740991,
- "method": "string",
- "p95_duration_ms": -9007199254740991,
- "recent_failures": [
- {
- "error_code": "string",
- "occurred_at": "2019-08-24T14:15:22Z",
- "session_id": "1ffd059c-17ea-40a8-8aef-70fd0307db82",
- "status": -9007199254740991
}
], - "route": "string",
- "screens": [
- {
- "failed": -9007199254740991,
- "path": "string"
}
], - "statuses": [
- {
- "count": -9007199254740991,
- "status": -9007199254740991
}
], - "total": -9007199254740991
}
]
}| projectId required | string <uuid> |
{- "allowed_origins": [
- "string"
], - "conversion_event": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "event_retention_months": -9007199254740991,
- "first_event_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "last_event_at": "2019-08-24T14:15:22Z",
- "name": "string",
- "public_keys": [
- {
- "created_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "key": "string"
}
], - "secret_keys": [
- {
- "created_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
], - "timezone": "string"
}| projectId required | string <uuid> |
| from required | string <date> First day, inclusive, in the project time zone |
| to required | string <date> Last day, inclusive, at most today in the project time zone; 400 days at most |
{- "weekdays": [
- {
- "hours": [
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991
], - "weekday": 1
}, - {
- "hours": [
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991
], - "weekday": 1
}, - {
- "hours": [
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991
], - "weekday": 1
}, - {
- "hours": [
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991
], - "weekday": 1
}, - {
- "hours": [
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991
], - "weekday": 1
}, - {
- "hours": [
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991
], - "weekday": 1
}, - {
- "hours": [
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991,
- -9007199254740991
], - "weekday": 1
}
]
}| projectId required | string <uuid> |
| before | string <date-time> The next_before of the previous page |
| session_id | string <uuid> |
| user_id | string |
{- "next_before": "2019-08-24T14:15:22Z",
- "visits": [
- {
- "browser": "string",
- "channel": "paid",
- "country": "string",
- "device_type": "string",
- "ended_at": "2019-08-24T14:15:22Z",
- "events": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "occurred_at": "2019-08-24T14:15:22Z",
- "path": "string",
- "properties": {
- "property1": "string",
- "property2": "string"
}
}
], - "os": "string",
- "region": "string",
- "region_name": "string",
- "session_id": "1ffd059c-17ea-40a8-8aef-70fd0307db82",
- "started_at": "2019-08-24T14:15:22Z",
- "user_id": "string"
}
]
}| projectId required | string <uuid> |
| from required | string <date> First day, inclusive, in the project time zone |
| to required | string <date> Last day, inclusive, at most today in the project time zone; 400 days at most |
| path | Array of strings <= 3 items A page the visit viewed; a star matches any characters. Repeat it, up to 3 times, for visits that viewed every one |
| event | string A named event the visit sent |
| property | string key=value: the event above carried this property value; needs event |
| channel | string Enum: "paid" "email" "social" "campaign" "organic" "referral" "direct" |
| device | string Enum: "mobile" "tablet" "desktop" "other" |
| identity | string Enum: "identified" "anonymous" |
| country | string^[A-Z]{2}$ The two-letter country code of the visit |
| region | string^[A-Z]{2}-[A-Z0-9]{1,3}$ The region of the visit: its ISO 3166-2 code, the country code, a hyphen and the subdivision |
| source | string <= 128 characters The source of the visit as Acquisition names it: campaign source, referring host or (direct) |
| campaign | string <= 64 characters The campaign (utm_campaign) of the visit entry |
| route | string A request the visit made, as method and route: POST /orders/:id |
| failed | string Enum: "true" "false" true: the visit had a failed request (status 0 or 400 and above); with route, on that route |
| cursor | string The next_cursor of the previous page |
{- "next_cursor": "string",
- "total": -9007199254740991,
- "visits": [
- {
- "browser": "string",
- "campaign": "string",
- "channel": "paid",
- "country": "string",
- "device_type": "string",
- "ended_at": "2019-08-24T14:15:22Z",
- "entry_path": "string",
- "failed_requests": -9007199254740991,
- "highlights": [
- "string"
], - "os": "string",
- "page_views": -9007199254740991,
- "region": "string",
- "region_name": "string",
- "session_id": "1ffd059c-17ea-40a8-8aef-70fd0307db82",
- "source": "string",
- "started_at": "2019-08-24T14:15:22Z",
- "user_id": "string"
}
]
}Changes only the signed-in admin, for this project only.
| projectId required | string <uuid> |
| weekly_digest required | boolean Whether the admin receives the weekly digest of this project, sent on Mondays with the week that closed on Sunday in the project time zone |
{- "weekly_digest": true
}{- "weekly_digest": true
}| userId required | string The user id the site sent to identify |
| after | string <uuid> |
{- "events": [
- {
- "browser": "string",
- "country": "string",
- "device_type": "string",
- "from_ad_click": true,
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "occurred_at": "2019-08-24T14:15:22Z",
- "os": "string",
- "path": "string",
- "properties": {
- "property1": "string",
- "property2": "string"
}, - "referrer_host": "string",
- "region": "string",
- "region_name": "string",
- "session_id": "1ffd059c-17ea-40a8-8aef-70fd0307db82",
- "utm_campaign": "string",
- "utm_medium": "string",
- "utm_source": "string"
}
], - "next_after": "ee4ed11a-6422-4013-aa47-bf6402edc672"
}