Matomo API Reference API

Provides Reporting API endpoints for reading OpenAPI plugin configuration and specifications. Exposes endpoints to return the effective plugin list for spec generation, read pre-generated spec files, or generate plugin OpenAPI specifications on demand.

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=ApiReference.getAllowedPlugins List plugins included in the API reference · Api reference get allowed plugins #
Ask an LLM
“Which plugins have OpenAPI specs generated for the API reference?”
“What plugin names does the API reference cover?”
Tell an agent
List the plugins used for API reference spec generation.
Show which plugins the API reference covers.
GET /index.php?module=API&method=ApiReference.getAllowedPluginMetadata Get metadata for API reference plugins · Api reference get allowed plugin metadata #
Ask an LLM
“What details are available about each plugin in the API reference?”
“Can I see descriptions for the plugins covered by the reference?”
Tell an agent
Get metadata for the API reference plugins.
Show descriptive metadata for every plugin in the API reference.
GET /index.php?module=API&method=ApiReference.getOpenApiSpec Download a plugin's OpenAPI spec · Api reference get open api spec #
Ask an LLM
“How do I get the OpenAPI specification for a specific Matomo plugin?”
“Is there a machine-readable spec for one plugin's API?”
Tell an agent
Get the OpenAPI spec for plugin {pluginName}.
Download the generated OpenAPI document for {pluginName}.

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-api-reference-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-api-reference-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Matomo Reporting API for plugin API Reference API
  version: 1.0.0
  description: Provides Reporting API endpoints for reading OpenAPI plugin configuration and specifications. Exposes endpoints to return the effective plugin list for spec generation, read pre-generated spec files, or generate plugin OpenAPI specifications on demand.
servers:
- url: https://demo-proxy.innocraft.cloud/
  description: Current Matomo instance
security:
- MatomoToken: []
tags:
- name: API Reference
  description: Provides Reporting API endpoints for reading OpenAPI plugin configuration and specifications. Exposes endpoints to return the effective plugin list for spec generation, read pre-generated spec files, or generate plugin OpenAPI specifications on demand.
paths:
  /index.php?module=API&method=ApiReference.getAllowedPlugins:
    get:
      tags:
      - API Reference
      description: Returns the plugin names used for ApiReference spec generation.
      operationId: ApiReference.getAllowedPlugins
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      responses:
        '200':
          description: 'OK


            Example responses require Super User access. Use Try it out to see a live response.'
          content:
            text/xml: []
            application/json: []
            application/vnd.ms-excel: []
        '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: Api reference get allowed plugins
      x-summary-source: derived
  /index.php?module=API&method=ApiReference.getAllowedPluginMetadata:
    get:
      tags:
      - API Reference
      description: Returns metadata for the plugins used by ApiReference spec generation.
      operationId: ApiReference.getAllowedPluginMetadata
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      responses:
        '200':
          description: 'OK


            Example responses require Super User access. Use Try it out to see a live response.'
          content:
            text/xml: []
            application/json: []
        '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: Api reference get allowed plugin metadata
      x-summary-source: derived
  /index.php?module=API&method=ApiReference.getOpenApiSpec:
    get:
      tags:
      - API Reference
      description: Returns a previously generated OpenAPI specification for a plugin.
      operationId: ApiReference.getOpenApiSpec
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      - name: pluginName
        in: query
        description: The plugin name whose generated OpenAPI spec file should be read.
        required: true
        schema:
          type: string
          example: Goals
      - name: format
        in: query
        description: The response format to read. Only `json` is supported.
        required: false
        schema:
          type: string
          default: json
      responses:
        '200':
          description: 'The decoded OpenAPI specification data from the generated JSON file.


            Example responses require Super User access. Use Try it out to see a live response.'
          content:
            application/json: []
        '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: Api reference get open api spec
      x-summary-source: derived
components:
  responses:
    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'
    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'
    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'
    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'
    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'
  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/