Skip to content
Menu
SilktideDevelopers

List the events visitors sent, with how often and by how many

GET/v1/results/analytics/events
View as Markdown

Lists 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.

Request
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"
Response: The events your site sent in the last 30 days
{
  "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, or all for all of the account's analytics. Send this or websiteId.

  • websiteIdintegerat least 1

    Instead of view, a website whose analytics to read. The website must have Analytics set up.

  • sectionIdinteger

    With websiteId, a section of the website. Defaults to 0, the whole website.

  • periodstring

    The date range. Defaults to all. The spaced forms (-7 days, month to date) are older names that keep working. custom needs from and to.

    One ofalltodaylast-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 months

  • fromstring

    With period=custom, the first day, such as 2026-10-01.

  • tostring

    With period=custom, the last day.

  • timezonestring

    The IANA time zone days are read in, such as America/New_York. Defaults to UTC.

  • filtersmap of strings

    Only visits matching every filter, keyed by what is filtered: filters[url]=contains:/blog. Each value is {operator}:{value}, with operator is, not, contains, starts, gt or lt. Keys include url, hostName, entryUrl, exitUrl, event, outgoingUrl, referrer, source, medium, campaign, content, term, countryCode, regionCode, language, deviceType (desktop, tablet or mobile), operatingSystem and browser.

  • columnsstring

    The 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.

  • sortstring

    The column to sort by, then :a for ascending or :d for descending, such as pageViews:d. Left out, the table's own order.

  • searchstring

    Only rows matching this text. What it searches depends on the table, most often the URL or title.

  • pageintegerat least 1

    The page of rows to return, from 1. Defaults to 1.

  • rowsPerPageintegerat least 1

    How many rows a page holds. Defaults to 100.

  • typestring

    custom for only the events your site sends, built-in for only those the Silktide Script records itself, such as page_load and click. Left out, both.

    One ofcustombuilt-in

  • previousPeriodstring

    1 to add the figures of the period before, the same length and ending where this one starts, as previous… fields. Left out or 0, none. Needs a period with a start: with all, nothing is added.

    One of01

Response

200JSON.

  • resultobjectrequired

    The answer.

    Show 6 fields
    • pageintegerrequiredat least 1

      The page returned. Not always the page asked for, when that was out of range.

    • minPageintegerrequiredat least 1

      The first page. Always 1.

    • maxPageintegerrequired

      The last page at this rowsPerPage. With no rows, 0 or 1 depending on the table.

    • numRowsintegerrequired

      How many rows there are across every page.

    • rowsPerPageintegerrequiredat least 1

      How many rows a page holds.

    • rowslist of objectsrequired

      The rows on this page.

      Show 11 fields
      • eventstringrequired

        The event, by the name your site sends, or a built-in one such as page_load. Use it as event with the event's other queries and filters. Always returned, even when columns leaves it out.

      • eventNamestringrequired

        What 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), else event.

      • occurrencesintegerrequired

        How many times it was sent in the period.

      • visitorsintegerrequired

        How many visitors sent it in the period.

      • visitorsPercentnumberrequired

        visitors as a percentage of every visitor the view or website has had, of all time. Both are estimates, so it can read over 100.

      • isCustombooleanrequired

        true for an event your site sends, false for one the Silktide Script records itself.

      • firstSeenstringrequired

        When it was first sent in the period, in UTC, as YYYY-MM-DDTHH:MM:SSZ.

      • lastSeenstringrequired

        When it was last sent in the period, in UTC, as YYYY-MM-DDTHH:MM:SSZ.

      • isLabeledbooleanrequired

        true when eventName is a name someone in the account gave the event.

      • previousOccurrencesinteger

        With previousPeriod=1, occurrences in the period before.

      • previousVisitorsinteger

        With previousPeriod=1, visitors in the period before.

  • selectorstringrequired

    The query that answered, as its path: /v1/results/scores.

  • durationnumberrequired

    Seconds Silktide took to answer.

Errors

StatusTypeWhen
404ModelNotFoundNo view or website with that id exists in the account, or the API key's user cannot see it.
403AccessDeniedThe API key's user cannot read that analytics view.
200ModelNotFoundThe website has no Analytics set up. The body is an error despite the status.
200InvalidRequestNeither 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.
200InvalidArgumentA filter names a key or operator Analytics does not know. The body is an error despite the status.
401NotLoggedInNo API key was sent, or it is not a key for this region.(any operation)
429TooManyRequestsToo 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.