Skip to content

API changelog ​

What changed on the public API: the /v1 surface described by openapi.json and the SDKs that wrap it. The app's own changelog is CHANGELOG.md at the repo root; this one lists only what a client written against /v1 can see.

Within v1 changes are additive: no field is removed or retyped, and a deprecation carries Deprecation and Sunset headers with twelve months of notice. Anything that may still break lives under /v1/preview/.

Unreleased ​

Added ​

  • /mcp: MatterWave as a Model Context Protocol server (Streamable HTTP, revision 2026-07-28 with the initialize revisions still answered), authenticated by an API key as the bearer. Tools list_conversations, get_conversation, search_conversations, create_conversation, send_message and list_models; conversation://<id> resources. Rate-limited like /v1; every tool call a key makes is an audit row. Client setup in docs/mcp.md.
  • POST /v1/embeddings: OpenAI's embeddings request, proxied to the deployment's one embedding model (model may be omitted; naming another is a 404 model_not_found). A deployment with no embedding model answers 404 embeddings_not_configured; GET /v1 says which under capabilities.embeddings.
  • POST /v1/chat/completions relays tools, tool_choice and response_format to the model as sent. Tool calls come back in message.tool_calls, or as delta.tool_calls fragments on a stream, for the caller to run; finish_reason is tool_calls when any came back. A tool_choice that demanded a call the model did not make is a 400 tool_calls_unsupported rather than prose parsed as an answer. A request the model gateway itself rejects is a 400 upstream_rejected carrying the gateway's reason, where it used to be a 502.
  • GET /v1 carries capabilities: what this deployment can do, from its configuration (streaming, response formats, tool pass-through, image input, embeddings), so a client can decide before it holds a key.
  • The OpenAPI document at docs/developers/openapi.json, generated from the app by make openapi, and the developer portal at /developers that renders it.
  • Python SDK matterwave-sdk (sdk/python, imported as matterwave_sdk) and TypeScript SDK @matterwave/sdk (sdk/typescript): typed clients for every /v1 operation, streaming as an iterator, retries on 429 and 5xx honouring Retry-After, and the X-Request-Id on every error.

Changed ​

  • The GRT model family is now GRT Nano (GRT Nano, GRT Nano Pro, GRT Nano Max). Same models, prices and plans. GET /v1/models lists only the new ids. The old ids stay accepted as aliases everywhere a model is named (model on POST /v1/chat/completions, GET /v1/models/{model}) and resolve to the new model; the response's model is the new id.
  • Python SDK: the distribution is now matterwave-sdk and the import package matterwave_sdk (from matterwave_sdk import MatterWave). The PyPI name matterwave belongs to an unrelated physics library with its own matterwave module; installing that PyPI name never installed this SDK.
  • The legacy functions and function_call parameters are refused with 400 unsupported_parameter; tools and tool_choice replace them. (tools, tool_choice and response_format used to be refused the same way.)

v1 ​

The first stable surface: GET /v1, GET /v1/models, GET /v1/models/{model} and POST /v1/chat/completions (buffered and streamed), OpenAI's request and response shapes, OpenAI's error envelope on every refusal, metadata.conversation_id to record a turn into a conversation, 60 requests a minute per key, and X-Request-Id on every response.