> For the complete documentation index, see [llms.txt](https://docs.raalabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.raalabs.io/2025-10-31/getting-started/changelog/updates.md).

# Updates

{% updates format="full" %}
{% update date="2026-09-10" tags="new-release,stable" %}

## Stable release of API version `2026-09-10`

* API version `2026-09-10` is now available. It is the stable release of the response formats that were developed under `2026-01-01-beta`, and the two versions are identical, so moving over from the beta only requires changing the `x-api-version` header.
* See the full release details and migration guide here: [2026-09-10](/2025-10-31/getting-started/changelog/versions.md#2026-09-10)
* `2026-01-01-beta` remains callable, and continues to return the same responses as `2026-09-10`.
* Omitting the `x-api-version` header targets the default version, which is unchanged by this release.
* Version `2025-10-31` is supported until 2027-03-10, six months from this release, and is deactivated after that date.
  {% endupdate %}

{% update date="2026-09-02" tags="beta,new-feature" %}

## Merged statistics for shared domain ids, and `timeSeriesId` removed in `2026-01-01-beta` version

* The `/statistics` endpoint now returns a single result per time window and `id` in API version `2026-01-01-beta`. Where several time series resolve to the same `id` (based on chosen `output_domain`), their aggregations are merged into one result covering the data points of all of those time series.
* The `domainId` field has been renamed to `id` in `/measurements` and `/statistics` responses in API version `2026-01-01-beta`, it contains the same values as before.
* The `timeSeriesId` field has been removed from the `/measurements` and `/statistics` responses in API version `2026-01-01-beta`, in every response format. Rows are identified by `id` alone, and the `/measurements` `parquet` schema now carries a single `id` column in place of `time_series_id` and `domain_id`, which makes it identical to the one in `2025-10-31`.
  {% endupdate %}

{% update date="2026-08-31" tags="new-feature" %}

## Output domain for measurements and statistics

* The `/measurements` and `/statistics` endpoints now accept an `output_domain` query parameter, which names the results in that domain instead of the domain that was queried. For example, query the `raalabs` domain with `output_domain=jsmea` to select time series by their flat Raa Labs tag name and get JSMEA names back. A time series that has no name in the requested output domain is left out of the response. This is available in both API versions `2025-10-31` and `2026-09-10`.
  {% endupdate %}

{% update date="2026-08-26" tags="new-feature" %}

## MCP server documentation

* The documentation now covers the Raa Labs MCP server, which exposes vessel time series data to AI agents over the Model Context Protocol. See the MCP Server page for how to connect a client.
  {% endupdate %}

{% update date="2026-08-06" tags="new-feature" %}

## Partial edge windows for statistics

* The `/statistics` endpoint now accepts a `window_edges` query parameter, which controls what happens to the windows at each end of the query time range. With `whole` (the default, and the previous behavior) the range is expanded to whole windows, and the leading partial window is dropped and the trailing window is returned in full. With `partial` the query range is used exactly as given, and the windows at each end are returned as partial windows. The parameter is ignored when `window = none`. This is available in both API versions `2025-10-31` and `2026-09-10`.
  {% endupdate %}

{% update date="2026-08-05" tags="bug-fix" %}

## Maker domain range values now consistently returned as floats

* In API version `2026-01-01-beta`, the `rangeLow` and `rangeHigh` fields of the `maker` domain in the `/metadata` response were returned as integers when the value had no decimal part, for example `200`. They are now consistently returned as floating point numbers, for example `200.0`, matching the behavior of API version `2025-10-31`.
  {% endupdate %}

{% update date="2026-05-18" tags="new-feature" %}

## NDJSON response format for metadata

* The `/metadata` endpoint now supports `ndjson` output, in addition to `json`. Use `format=ndjson` as query parameter, or set the `Accept: application/x-ndjson` header. This is available only in API version `2026-09-10`.
  {% endupdate %}

{% update date="2026-05-11" tags="bug-fix" %}

## Return status code `406` for unsupported response formats

* Requests to API endpoints with an unsupported response format now return a `406 Not Acceptable` error, instead of `500 Internal Server Error`. For example, requesting `format=html` on `/measurements`, or `format=csv` on `/metadata`, will now return a `406` response.
  {% endupdate %}

{% update date="2026-04-28" %}

## Statistics endpoint: fix and clarify window alignment behavior

* Fixed inconsistent behavior in the `/statistics` endpoint (API version `2025-10-31`) for boundary aggregation windows when windows were not aligned with the query range.
* Updated documentation to clarify the behavior.
  {% endupdate %}

{% update date="2026-04-16" tags="experimental-feature" %}

## CSV and HTML response formats for statistics

* The `/statistics` endpoint now supports `csv` and `html` output formats, in addition to `json` and `ndjson`. Use `format=csv` or `format=html` as query parameter. This feature is in experimental state.
  {% endupdate %}

{% update date="2026-04-08" %}

## Python code samples

* This documentation now includes Python code samples for all API endpoints and examples.
  {% endupdate %}

{% update date="2026-03-20" tags="new-feature" %}

## Delta aggregation support for statistics

* The `/statistics` endpoint now supports the `delta` aggregation, which computes the difference between the last and first value (`last_val - first_val`) within the aggregation window.
  {% endupdate %}

{% update date="2026-03-18" tags="new-feature,bug-fix" %}

## JSON data type aggregations, timestamp normalization, and trailing comma fix

* The `/statistics` endpoint now supports the following aggregations for the `JSON` data type:
  * `count`
  * `last_val`
  * `first_val`
  * `last_time`
  * `first_time`
* The `timestamp` field in API responses has been normalized to always include microsecond precision, sample `timestamp`: `2024-12-04T21:00:00.000000Z`
* Requests to `/statistics` using API version `2026-01-01-beta` occasionally returned trailing commas in the JSON response, this has been fixed.
  {% endupdate %}

{% update date="2026-03-16" %}

## Documentation host updated to `portal.raalabs.io`

* This API documentation has been updated to use `portal.raalabs.io` as host for all examples. `prism.raalabs.io` continues to be accessible.
  {% endupdate %}

{% update date="2026-02-20" tags="new-feature" %}

## Multi-parameter queries and arbitrary time window aggregation

* The `parameters` domain now supports querying multiple parameters with the `{}`-syntax in a single `GET` request.
* The `/statistics` HTTP endpoint now supports calculating aggregates over an arbitrary time window, returning one window with one value per aggregation across the whole time range requested.
  {% endupdate %}

{% update date="2026-01-22" tags="new-feature" %}

## `mapsTo` field now includes id domainIds

* The `mapsTo` field in the response to `/metadata` now contains the `id` domainIds.
  {% endupdate %}

{% update date="2026-01-15" tags="bug-fix" %}

## Trailing comma fix in measurements and statistics responses

* This update fixes a bug where in some cases `/measurements` and `/statistics` returned a trailing comma after the last JSON element within the array, which can cause errors in JSON parsing.
  {% endupdate %}

{% update date="2025-12-10" tags="bug-fix" %}

## Accept both aggregation and aggregations query parameter

* Both `aggregations` and `aggregation` are accepted as query parameter name for the `/statistics` endpoint. Previously, only `aggregations` was accepted, and using for example `aggregation=count` would not be recognised as the query parameter, and the API would return the default aggregation of `avg` instead.
  {% endupdate %}

{% update date="2025-12-09" tags="new-feature" %}

## Verbose domainIds query parameter

* All three endpoints `/metadata`, `/measurements` and `/statistics` now accept a `verbose` query parameter. This is a flag to toggle on verbose domainIds. Some domains offer more human-friendly, verbose domainIds; if `verbose` is set to `true`, the domainIds in the response will be verbose. Below is an example of a verbose versus regular domainId within the `vis-3-8a` domain:
  * regular: `IMO1234567/411.1/C101.31-6/meta/qty-temperature/cnt-coolant/pos-outlet`
  * verbose: `IMO1234567/411.1/C101.31-6/~propulsion.engine/~cylinder.6/meta/qty-temperature/cnt-coolant/pos-outlet`
    {% endupdate %}

{% update date="2025-11-19" tags="new-feature" %}

## VIS 3-8a domain support

* Added general support for the `vis-3-8a` domain. Queries can now be done using `vis-3-8a` domainIds, see the relevant section in the docs here: [vis 3-8a domain](/2025-10-31/docs/supported-domains.md#the-vis-3-8a-domain). Note that the availability of domainIds is subject to time series contextualization, which happens independent of the API development.
  {% endupdate %}

{% update date="2025-11-17" tags="bug-fix,new-feature" %}

## JSMEA POST improvements and Content-Type error handling

* `POST` requests for `/measurements` and `/statistics` using the JSMEA domain now support tags with empty hierarchy levels within the `POST` body.
* `POST` requests without the `Content-Type` header now return a more appropriate `Unsupported Media Type` error message. `application/json` is the only allowed value for the header.
  {% endupdate %}

{% update date="2025-11-06" tags="new-feature" %}

## `mapsTo` field now includes maker domainIds

* The `mapsTo` field in the response to `/metadata` now contains `maker` domainIds.
  {% endupdate %}
  {% endupdates %}
