List the events visitors sent, with how often and by how many
/v1/results/analytics/eventsLists every event sent in the period, one row each, most sent first: the
events your site sends with silktide("…"), and the ones the Silktide Script
records by itself (page_load, click, download, frustration and the
others). Send type=custom for only your own.
Use a row's event with the queries that look inside one event:
Get event properties,
Get event property values
and Get event occurrences.
Counts are numbers. The older documentation showed occurrences and
visitors as strings; read them as numbers either way.
firstSeen and lastSeen are UTC date-times such as
2026-11-07T21:40:55Z, not Unix timestamps. An event whose lastSeen is days
old may have been removed from your site by accident.
search matches the event's name, as sent or as shown. The table is sorted by
occurrences unless you send sort. See Tables and,
for view, period and filters, Analytics.
curl "https://api.eu.silktide.com/v1/results/analytics/events?view=all&period=last-30-days&type=custom&rowsPerPage=2" \
-H "Authorization: silktide token=$SILKTIDE_API_KEY"{
"result": {
"page": 1,
"minPage": 1,
"maxPage": 6,
"numRows": 11,
"rowsPerPage": 2,
"rows": [
{
"event": "newsletter_signup",
"eventName": "Newsletter sign-up",
"occurrences": 214,
"visitors": 198,
"visitorsPercent": 2.61,
"isCustom": true,
"firstSeen": "2026-10-09T08:14:02Z",
"lastSeen": "2026-11-07T21:40:55Z",
"isLabeled": true
},
{
"event": "added-to-basket",
"eventName": "added-to-basket",
"occurrences": 87,
"visitors": 61,
"visitorsPercent": 0.8,
"isCustom": true,
"firstSeen": "2026-10-09T10:02:41Z",
"lastSeen": "2026-11-07T19:12:08Z",
"isLabeled": false
}
]
},
"selector": "/v1/results/analytics/events",
"duration": 0.035
}Request
Query parameters
viewstringmatches^(all|[1-9]\d*)$The analytics view to read: its id, the number after
/analytics/in its address in Silktide, orallfor all of the account's analytics. Send this orwebsiteId.websiteIdintegerat least 1Instead of
view, a website whose analytics to read. The website must have Analytics set up.sectionIdintegerWith
websiteId, a section of the website. Defaults to0, the whole website.periodstringThe date range. Defaults to
all. The spaced forms (-7 days,month to date) are older names that keep working.customneedsfromandto.One of
alltodaylast-7-dayslast-30-dayslast-90-daysmonth-to-datelast-monthyear-to-datelast-12-monthscustom-7 days-30 days-90 days-1 monthmonth to dateyear to date-12 monthsfromstringWith
period=custom, the first day, such as2026-10-01.tostringWith
period=custom, the last day.timezonestringThe IANA time zone days are read in, such as
America/New_York. Defaults toUTC.filtersmap of stringsOnly visits matching every filter, keyed by what is filtered:
filters[url]=contains:/blog. Each value is{operator}:{value}, with operatoris,not,contains,starts,gtorlt. Keys includeurl,hostName,entryUrl,exitUrl,event,outgoingUrl,referrer,source,medium,campaign,content,term,countryCode,regionCode,language,deviceType(desktop,tabletormobile),operatingSystemandbrowser.columnsstringThe columns to return, comma-separated, such as
url,pageViews. Left out, the table's default columns. Send a string even in a JSON body: an array is ignored.sortstringThe column to sort by, then
:afor ascending or:dfor descending, such aspageViews:d. Left out, the table's own order.searchstringOnly rows matching this text. What it searches depends on the table, most often the URL or title.
pageintegerat least 1The page of rows to return, from
1. Defaults to1.rowsPerPageintegerat least 1How many rows a page holds. Defaults to
100.typestringcustomfor only the events your site sends,built-infor only those the Silktide Script records itself, such aspage_loadandclick. Left out, both.One of
custombuilt-inpreviousPeriodstring1to add the figures of the period before, the same length and ending where this one starts, asprevious…fields. Left out or0, none. Needs aperiodwith a start: withall, nothing is added.One of
01
Response
200JSON.
resultobjectrequiredThe answer.
Show 6 fieldsHide fields
pageintegerrequiredat least 1The page returned. Not always the page asked for, when that was out of range.
minPageintegerrequiredat least 1The first page. Always
1.maxPageintegerrequiredThe last page at this
rowsPerPage. With no rows,0or1depending on the table.numRowsintegerrequiredHow many rows there are across every page.
rowsPerPageintegerrequiredat least 1How many rows a page holds.
rowslist of objectsrequiredThe rows on this page.
Show 11 fieldsHide fields
eventstringrequiredThe event, by the name your site sends, or a built-in one such as
page_load. Use it aseventwith the event's other queries and filters. Always returned, even whencolumnsleaves it out.eventNamestringrequiredWhat the event is called in Silktide: the name someone in the account gave it, else an English name for a built-in event (
Page load), elseevent.occurrencesintegerrequiredHow many times it was sent in the period.
visitorsintegerrequiredHow many visitors sent it in the period.
visitorsPercentnumberrequiredvisitorsas a percentage of every visitor the view or website has had, of all time. Both are estimates, so it can read over 100.isCustombooleanrequiredtruefor an event your site sends,falsefor one the Silktide Script records itself.firstSeenstringrequiredWhen it was first sent in the period, in UTC, as
YYYY-MM-DDTHH:MM:SSZ.lastSeenstringrequiredWhen it was last sent in the period, in UTC, as
YYYY-MM-DDTHH:MM:SSZ.isLabeledbooleanrequiredtruewheneventNameis a name someone in the account gave the event.previousOccurrencesintegerWith
previousPeriod=1,occurrencesin the period before.previousVisitorsintegerWith
previousPeriod=1,visitorsin the period before.
selectorstringrequiredThe query that answered, as its path:
/v1/results/scores.durationnumberrequiredSeconds Silktide took to answer.
Errors
| Status | Type | When |
|---|---|---|
| 404 | ModelNotFound | No view or website with that id exists in the account, or the API key's user cannot see it. |
| 403 | AccessDenied | The API key's user cannot read that analytics view. |
| 200 | ModelNotFound | The website has no Analytics set up. The body is an error despite the status. |
| 200 | InvalidRequest | Neither view nor websiteId was sent. The error's own status is 400 and properties.field is view. The body is an error despite the status. |
| 200 | InvalidArgument | A filter names a key or operator Analytics does not know. The body is an error despite the status. |
| 401 | NotLoggedIn | No API key was sent, or it is not a key for this region.(any operation) |
| 429 | TooManyRequests | Too many requests to this path in five seconds. Retry after the number of seconds in the Retry-After header, which properties.retryAfter repeats.(any operation) |
| 503 | - | Silktide is busy. Retry after the number of seconds in the Retry-After header.(any operation) |
Every error has the same body. See Errors.
Access
- Permission
- View analytics view (View all analytics for `view=all`)
- Plan feature
- None
- Edition
- Silktide 4 and Silktide 5
- Cost
- Free
- Available since
- v1.0.0
Try it
Sends a real request to your account from this browser. Your key stays in this tab and goes only to the Silktide API.