API Documentation

Language: English | German

Introduction

Welcome to the MTEX API documentation. This API allows you to programmatically interact with your changelog data. All requests are authenticated using API tokens.

Authentication

To authenticate your API requests, you must include a valid API token in the `Authorization` header as a Bearer Token (e.g., `Authorization: Bearer YOUR_API_TOKEN`) or as a custom header `X-API-TOKEN: YOUR_API_TOKEN`.

You can generate and manage your API tokens from your dashboard's API Tokens section.

Each token has specific abilities (permissions). If a token lacks the required ability for an endpoint, the request will be rejected with a `403 Forbidden` status.

Base URL

All API requests should be made to the following base URL:

`https://mtex.dev/api/v1`

Rate Limiting

API requests are subject to rate limiting to ensure fair usage and system stability. Currently, the limit is `60` requests per minute per authenticated token or IP address.

Changelogs Endpoint

Manage your application changelogs and their individual changes.

Get All Changelogs

GET `https://mtex.dev/api/v1`/changelogs

Required Ability: `changelog:read`

Parameters: (Optional) `page` - page number for pagination.

Returns a paginated list of all changelogs with their changes.

Get a Single Changelog

GET `https://mtex.dev/api/v1`/changelogs/{id}

Required Ability: `changelog:read`

Parameters: `{id}` - The UUID of the changelog.

Returns the specified changelog and its changes.

Create a New Changelog

POST `https://mtex.dev/api/v1`/changelogs

Required Ability: `changelog:create`

Request Body (JSON):

{
    "name": "`name` (string, required): Title of the changelog.",
    "description": "`description` (string, nullable): Detailed description of the changelog.",
    "changes": [
        {
            "name": "`changes[].name` (string, required): Description of the individual change.",
            "type": "`changes[].type` (string, required): Type of change (e.g., `feature`, `fix`, `improvement`, `breaking`).",
            "occurred_at": "`changes[].occurred_at` (datetime, nullable): When the change occurred (e.g., `2025-07-01 10:00:00`)."
        }
    ]
}
            

Returns the newly created changelog with a `201 Created` status.

Update a Changelog

PUT/PATCH `https://mtex.dev/api/v1`/changelogs/{id}

Required Ability: `changelog:update`

Request Body (JSON):

{
    "name": "`name` (string, optional): New title for the changelog.",
    "description": "`description` (string, optional): New detailed description.",
    "changes": [
        {
            "id": "`changes` (array, optional): Array of change objects. Existing changes can be updated (by including `id`) or deleted (by omitting from array). New changes without `id` will be created.",
            "name": "`changes[].name` (string, required): Description of the individual change.",
            "type": "`changes[].type` (string, required): Type of change (e.g., `feature`, `fix`, `improvement`, `breaking`).",
            "occurred_at": "`changes[].occurred_at` (datetime, nullable): When the change occurred (e.g., `2025-07-01 10:00:00`)."
        }
    ]
}
            

Returns the updated changelog.

Delete a Changelog

DELETE `https://mtex.dev/api/v1`/changelogs/{id}

Required Ability: `changelog:delete`

Parameters: `{id}` - The UUID of the changelog.

Returns an empty response with a `204 No Content` status.