Matomo Languages Manager API

The LanguagesManager API lets you access existing Matomo translations, and change Users languages preferences. "getTranslationsForLanguage" will return all translation strings for a given language, so you can leverage Matomo translations in your application (and automatically benefit from the 40+ translations!). This is mostly useful to developers who integrate Matomo API results in their own application. You can also request the default language to load for a user via "getLanguageForUser", or update it via "setLanguageForUser".

Operations 9

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=LanguagesManager.isLanguageAvailable Check whether a language code is available · Languages manager is language available #
Ask an LLM
“Is a given language code supported in my Matomo instance?”
“Can I use German as an interface language here?”
Tell an agent
Check whether language code {languageCode} is available.
Tell me if {languageCode} can be used as a UI language.
GET /index.php?module=API&method=LanguagesManager.getAvailableLanguages List available language codes · Languages manager get available languages #
Ask an LLM
“Which language codes can the interface be shown in?”
“What languages are installed on this instance?”
Tell an agent
List the available language codes.
Show me every installed interface language code.
GET /index.php?module=API&method=LanguagesManager.getAvailableLanguagesInfo Get translation coverage per language · Languages manager get available languages info #
Ask an LLM
“How complete is the translation for each available language?”
“Can I check translation coverage while excluding non-core plugins?”
Tell an agent
Show translation coverage for each available language.
Report language completeness with excludeNonCorePlugins set to {excludeNonCorePlugins}.
GET /index.php?module=API&method=LanguagesManager.getAvailableLanguageNames List languages with native and English names · Languages manager get available language names #
Ask an LLM
“What are the localized and English names of each available language?”
“Can I get language names to show in a language picker?”
Tell an agent
List available languages with their localized and English names.
Give me display names for every installed language.
GET /index.php?module=API&method=LanguagesManager.getTranslationsForLanguage Get all translation strings for a language · Languages manager get translations for language #
Ask an LLM
“Can I download every translation string for one language?”
“Where do I get core and plugin translations for French?”
Tell an agent
Get all translation strings for language {languageCode}.
Export the {languageCode} translations across core and loaded plugins.
GET /index.php?module=API&method=LanguagesManager.getLanguageForUser Get a user's language preference · Languages manager get language for user #
Ask an LLM
“What interface language has a particular user chosen?”
“Can I check which language a teammate sees the UI in?”
Tell an agent
Get the saved language for user {login}.
Tell me which UI language {login} uses.
GET /index.php?module=API&method=LanguagesManager.setLanguageForUser Set a user's language preference · Languages manager set language for user #
Ask an LLM
“How do I change the interface language for another user?”
“Can I store a language preference for a specific login?”
Tell an agent
Set the language for user {login} to {languageCode}.
Switch {login}'s interface to {languageCode}.
GET /index.php?module=API&method=LanguagesManager.uses12HourClockForUser Check if a user prefers a 12-hour clock · Languages manager uses12 hour clock for user #
Ask an LLM
“Does a given user see times in 12-hour AM/PM format?”
“Which time format has a particular user chosen?”
Tell an agent
Check whether user {login} uses the 12-hour clock.
Tell me {login}'s time format preference.
GET /index.php?module=API&method=LanguagesManager.set12HourClockForUser Set a user's 12-hour clock preference · Languages manager set12 hour clock for user #
Ask an LLM
“Can I switch a user to 24-hour time formatting?”
“How do I save an AM/PM time preference for someone's account?”
Tell an agent
Set use12HourClock to {use12HourClock} for user {login}.
Turn the 12-hour clock on for {login}.

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-languagesmanager-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-languagesmanager-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Matomo Reporting API for plugin Languages Manager API
  version: 1.0.0
  description: The LanguagesManager API lets you access existing Matomo translations, and change Users languages preferences.
servers:
- url: https://demo-proxy.innocraft.cloud/
  description: Current Matomo instance
security:
- MatomoToken: []
tags:
- name: LanguagesManager
  description: The LanguagesManager API lets you access existing Matomo translations, and change Users languages preferences.
paths:
  /index.php?module=API&method=LanguagesManager.isLanguageAvailable:
    get:
      tags:
      - LanguagesManager
      description: Returns whether a language code can be used in the current Matomo instance.
      operationId: LanguagesManager.isLanguageAvailable
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      - name: languageCode
        in: query
        description: The ISO language code to validate.
        required: true
        schema:
          type: string
          example: en
      - name: _ignoreConfig
        in: query
        description: Whether to ignore the configured language allowlist.
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: 'True if the language is available, `false` otherwise.


            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: Languages manager is language available
      x-summary-source: derived
  /index.php?module=API&method=LanguagesManager.getAvailableLanguages:
    get:
      tags:
      - LanguagesManager
      description: Returns the available Matomo language codes.
      operationId: LanguagesManager.getAvailableLanguages
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      - name: _ignoreConfig
        in: query
        description: Whether to ignore the configured language allowlist.
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: 'Available ISO language codes.


            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: Languages manager get available languages
      x-summary-source: derived
  /index.php?module=API&method=LanguagesManager.getAvailableLanguagesInfo:
    get:
      tags:
      - LanguagesManager
      description: Returns translation coverage information for each available language.
      operationId: LanguagesManager.getAvailableLanguagesInfo
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      - name: excludeNonCorePlugins
        in: query
        description: Whether to exclude non-core plugins from the translation percentage calculation.
        required: false
        schema:
          type: boolean
          default: true
      - name: _ignoreConfig
        in: query
        description: Whether to ignore the configured language allowlist.
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: 'Translation metadata for each available language, including code, names, translators, and completion percentage.


            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: Languages manager get available languages info
      x-summary-source: derived
  /index.php?module=API&method=LanguagesManager.getAvailableLanguageNames:
    get:
      tags:
      - LanguagesManager
      description: Returns the available languages with their localized and English names.
      operationId: LanguagesManager.getAvailableLanguageNames
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      - name: _ignoreConfig
        in: query
        description: Whether to ignore the configured language allowlist.
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: 'Available languages with `code`, `name`, and `english_name` fields.


            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: Languages manager get available language names
      x-summary-source: derived
  /index.php?module=API&method=LanguagesManager.getTranslationsForLanguage:
    get:
      tags:
      - LanguagesManager
      description: Returns translation strings for a specific language across core and loaded plugins.
      operationId: LanguagesManager.getTranslationsForLanguage
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      - name: languageCode
        in: query
        description: The ISO language code to load.
        required: true
        schema:
          type: string
          example: en
      responses:
        '200':
          description: 'Translation entries with `label` and `value` keys, or `false` if the language is unavailable.


            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: Languages manager get translations for language
      x-summary-source: derived
  /index.php?module=API&method=LanguagesManager.getLanguageForUser:
    get:
      tags:
      - LanguagesManager
      description: Returns the saved language preference for a user.
      operationId: LanguagesManager.getLanguageForUser
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      - name: login
        in: query
        description: The user login to read the language for.
        required: true
        schema:
          type: string
          example: alice
      responses:
        '200':
          description: 'The saved language code, or `false` for the anonymous user.


            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: Languages manager get language for user
      x-summary-source: derived
  /index.php?module=API&method=LanguagesManager.setLanguageForUser:
    get:
      tags:
      - LanguagesManager
      description: Stores the language preference for a user.
      operationId: LanguagesManager.setLanguageForUser
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      - name: login
        in: query
        description: The user login to update.
        required: true
        schema:
          type: string
          example: alice
      - name: languageCode
        in: query
        description: The ISO language code to store.
        required: true
        schema:
          type: string
          example: en
      responses:
        '200':
          description: '`true` if the language was stored, `false` if the language code is unavailable.


            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: Languages manager set language for user
      x-summary-source: derived
  /index.php?module=API&method=LanguagesManager.uses12HourClockForUser:
    get:
      tags:
      - LanguagesManager
      description: Returns whether a user prefers 12-hour time formatting.
      operationId: LanguagesManager.uses12HourClockForUser
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      - name: login
        in: query
        description: The user login to query.
        required: true
        schema:
          type: string
          example: alice
      responses:
        '200':
          description: '`true` if the user uses a 12-hour clock, `false` otherwise or for the anonymous user.


            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: Languages manager uses12 hour clock for user
      x-summary-source: derived
  /index.php?module=API&method=LanguagesManager.set12HourClockForUser:
    get:
      tags:
      - LanguagesManager
      description: Stores whether a user prefers 12-hour time formatting.
      operationId: LanguagesManager.set12HourClockForUser
      parameters:
      - $ref: '#/components/parameters/formatOptional'
      - name: login
        in: query
        description: The user login to update.
        required: true
        schema:
          type: string
          example: alice
      - name: use12HourClock
        in: query
        description: Whether to enable 12-hour clock formatting.
        required: true
        schema:
          type: boolean
          example: true
      responses:
        '200':
          description: '`true` if the preference was stored, `false` for the anonymous user.


            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: Languages manager set12 hour clock for user
      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/