Matomo Activity Log API

Exposes Activity Log API endpoints for listing activity entries, counting matches, and resolving the permitted date range for the current caller.

Operations 3

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /index.php?module=API&method=ActivityLog.getEntries List activity log entries · Activity log get entries #
Ask an LLM
“Who changed settings in our analytics instance recently?”
“Can I see the audit trail of actions taken by one specific user?”
Tell an agent
Show the latest activity log entries.
List activity log entries by user {filterByUserLogin} for {period} {date}.
GET /index.php?module=API&method=ActivityLog.getEntryCount Count activity log entries · Activity log get entry count #
Ask an LLM
“How many audit log entries were recorded last month?”
“What's the total number of activities a given user has logged?”
Tell an agent
Count the activity log entries visible to me.
Count audit entries for user {filterByUserLogin} of type {filterByActivityType} in {period} {date}.
GET /index.php?module=API&method=ActivityLog.getAllActivityTypes List the available activity types · Activity log get all activity types #
Ask an LLM
“What kinds of activities can appear in the audit log?”
“Which activity types does each plugin record?”
Tell an agent
List all activity types grouped by plugin.
Show up to {filterLimit} activity type definitions.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/matomo:matomo-activity-log-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

matomo-activity-log-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Matomo Reporting API for plugin Activity Log API
  version: 1.0.0
  description: Exposes Activity Log API endpoints for listing activity entries, counting matches, and resolving the permitted date range for the current caller.
servers:
- url: https://demo-proxy.innocraft.cloud/
  description: Current Matomo instance
security:
- MatomoToken: []
tags:
- name: Activity Log
  description: Exposes Activity Log API endpoints for listing activity entries, counting matches, and resolving the permitted date range for the current caller.
paths:
  /index.php?module=API&method=ActivityLog.getEntries:
    get:
      tags:
      - Activity Log
      description: Returns Activity Log entries visible to the current caller.
      operationId: ActivityLog.getEntries
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      - name: offset
        in: query
        description: The zero-based offset to start returning entries from.
        required: false
        schema:
          oneOf:
          - type: integer
            default: 0
          - type: string
            default: '0'
      - name: limit
        in: query
        description: The maximum number of entries to return. Use `-1` to return all matching entries.
        required: false
        schema:
          oneOf:
          - type: integer
            default: 25
          - type: string
            default: '25'
      - name: filterByUserLogin
        in: query
        description: The user login to filter by, or `null` to use the current user unless the caller is a super user.
        required: false
        schema:
          type: string
      - name: filterByActivityType
        in: query
        description: The activity type identifier to filter by.
        required: false
        schema:
          type: string
      - name: period
        in: query
        description: The reporting period to filter by.
        required: false
        schema:
          type: string
      - name: date
        in: query
        description: The date or date range to process. `YYYY-MM-DD`, magic keywords (`today`, `yesterday`, `lastWeek`, `lastMonth`, `lastYear`), or date range (`YYYY-MM-DD,YYYY-MM-DD`, `lastX`, `previousX`).
        required: false
        schema:
          type: string
      responses:
        '200':
          description: 'The matching activity entries with formatted metadata, descriptions, timestamps, and avatar details.


            Example responses require Super User access. Use Try it out to see a live response.'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
        default:
          $ref: '#/components/responses/DefaultError'
      summary: Activity log get entries
      x-summary-source: derived
  /index.php?module=API&method=ActivityLog.getEntryCount:
    get:
      tags:
      - Activity Log
      description: Returns the number of Activity Log entries visible to the current caller.
      operationId: ActivityLog.getEntryCount
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      - name: filterByUserLogin
        in: query
        description: The user login to filter by, or `null` to use the current user unless the caller is a super user.
        required: false
        schema:
          type: string
      - name: filterByActivityType
        in: query
        description: The activity type identifier to filter by.
        required: false
        schema:
          type: string
      - name: period
        in: query
        description: The reporting period to filter by.
        required: false
        schema:
          type: string
      - name: date
        in: query
        description: The date or date range to process. `YYYY-MM-DD`, magic keywords (`today`, `yesterday`, `lastWeek`, `lastMonth`, `lastYear`), or date range (`YYYY-MM-DD,YYYY-MM-DD`, `lastX`, `previousX`).
        required: false
        schema:
          type: string
      responses:
        '200':
          description: 'The number of matching activity entries.


            Example responses require Super User access. Use Try it out to see a live response.'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
        default:
          $ref: '#/components/responses/DefaultError'
      summary: Activity log get entry count
      x-summary-source: derived
  /index.php?module=API&method=ActivityLog.getAllActivityTypes:
    get:
      tags:
      - Activity Log
      description: Returns the available activity type metadata grouped by plugin.
      operationId: ActivityLog.getAllActivityTypes
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      - name: filterLimit
        in: query
        description: The maximum number of activity types to return, or `-1` for no limit.
        required: false
        schema:
          oneOf:
          - type: integer
          - type: string
            default: '-1'
      responses:
        '200':
          description: 'The available activity types grouped by plugin label.


            Example responses require Super User access. Use Try it out to see a live response.'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
        default:
          $ref: '#/components/responses/DefaultError'
      summary: Activity log get all activity types
      x-summary-source: derived
components:
  responses:
    Forbidden:
      description: Authenticated but not allowed to access the resource.
      content:
        text/plain:
          schema:
            type: string
          example: 'Error: Not authorised.'
        text/html:
          schema:
            type: string
          example: Not authorised.
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
        application/xml:
          schema:
            $ref: '#/components/schemas/ErrorXml'
    BadRequest:
      description: Bad request (validation or missing parameters).
      content:
        text/plain:
          schema:
            type: string
          example: 'Error: There was an error.'
        text/html:
          schema:
            type: string
          example: There was an error.
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
        application/xml:
          schema:
            $ref: '#/components/schemas/ErrorXml'
    NotFound:
      description: Resource not found.
      content:
        text/plain:
          schema:
            type: string
          example: 'Error: The method is not available.'
        text/html:
          schema:
            type: string
          example: The method is not available.
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
        application/xml:
          schema:
            $ref: '#/components/schemas/ErrorXml'
    Unauthorized:
      description: Authentication failed or missing token.
      content:
        text/plain:
          schema:
            type: string
          example: 'Error: You must be logged in to access this functionality.'
        text/html:
          schema:
            type: string
          example: You must be logged in to access this functionality.
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
        application/xml:
          schema:
            $ref: '#/components/schemas/ErrorXml'
    ServerError:
      description: Unexpected server error.
      content:
        text/plain:
          schema:
            type: string
          example: 'Error: There was an error.'
        text/html:
          schema:
            type: string
          example: There was an error.
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
        application/xml:
          schema:
            $ref: '#/components/schemas/ErrorXml'
    DefaultError:
      description: Default error response (any non-2xx).
      content:
        text/plain:
          schema:
            type: string
          example: 'Error: There was an error.'
        text/html:
          schema:
            type: string
          example: There was an error.
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
        application/xml:
          schema:
            $ref: '#/components/schemas/ErrorXml'
  schemas:
    ErrorXml:
      description: Generic Matomo error payload in XML.
      properties:
        error:
          properties:
            message:
              type: string
              xml:
                attribute: true
              example: There was an error
          type: object
          xml:
            name: error
      type: object
      xml:
        name: result
    Error:
      description: Generic Matomo error payload.
      required:
      - result
      - message
      properties:
        result:
          type: string
          example: error
        message:
          type: string
          example: There was an error
        code:
          type: integer
      type: object
      additionalProperties: true
  parameters:
    formatOptional:
      name: format
      in: query
      description: Response format. Defaults to `xml`. Use `original` to get the original PHP data structure.
      required: false
      schema:
        type: string
        default: xml
        enum:
        - xml
        - json
        - csv
        - tsv
        - html
        - rss
        - original
  securitySchemes:
    MatomoToken:
      type: http
      description: Paste your token generated from Personal > Security. Swagger will send it as a Bearer token.
      scheme: bearer
externalDocs:
  description: Matomo Reporting API developer page
  url: https://developer.matomo.org/api-reference/reporting-api/