<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>XMReality APIs Blog</title>
        <link>https://developer.xmreality.com/blog</link>
        <description>XMReality APIs Blog</description>
        <lastBuildDate>Thu, 13 Aug 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Version control for real-time messages]]></title>
            <link>https://developer.xmreality.com/blog/realtime-capability-negotiation</link>
            <guid>https://developer.xmreality.com/blog/realtime-capability-negotiation</guid>
            <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The real-time notifications guide now documents the capability parameters a hub client can declare when it connects. They let a client state which wire format it can read and which payload version it wants from each producing service, so a payload change on our side stops being a breaking change on yours.]]></description>
            <content:encoded><![CDATA[<p>The real-time notifications guide now documents the capability parameters a hub client can declare when it connects. They let a client state which wire format it can read and which payload version it wants from each producing service, so a payload change on our side stops being a breaking change on yours.</p>
<!-- -->
<p>Until now a hub client received the raw event payload in whatever shape the producing service happened to emit, with no way to say what it could parse. Two optional query parameters on the connection URL change that. <code>xm_envelope=1</code> wraps every message in a stable envelope carrying a <code>contract</code> id, the <code>producer</code>, a <code>messageId</code>, a <code>sentAt</code> timestamp and the selected <code>payloadVersion</code>, so you can route on a contract id instead of inferring intent from the payload shape. <code>xm_svc_versions=domain:18,messaging:1</code> declares the highest payload version you understand per producing service, and the platform then selects the newest variant that is at or below what you asked for.</p>
<p>Neither parameter changes which events reach you: the audience is still derived from the identity in your token. They change the format and the version. A client that declares what it can parse can then be upgraded on its own schedule.</p>
<p>Two details are worth reading before you adopt them. Both Messaging API contracts are envelope-only, so a client that has not opted in never receives them, silently. And the parameters never report an error: a malformed value leaves you with a healthy connection that behaves differently than you intended, so confirm against the first message you receive rather than against a successful connect.</p>
<p>The <a class="" href="https://developer.xmreality.com/docs/apis/realtime">real-time notifications guide</a> covers the envelope fields, the version selection rules, the full contract catalog, and the reconnect behaviour that decides whether your declaration survives. Interactive explorers also mark which REST operations can publish which contracts, so you can see the link from a call to the message it triggers.</p>]]></content:encoded>
            <category>Developer docs</category>
        </item>
        <item>
            <title><![CDATA[Introducing the XMReality Developer Documentation]]></title>
            <link>https://developer.xmreality.com/blog/api-portal-refresh</link>
            <guid>https://developer.xmreality.com/blog/api-portal-refresh</guid>
            <pubDate>Fri, 14 Feb 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Today we are releasing the first production version of the XMReality developer documentation. This is the new central source for everything related to our APIs. The goal has been to provide a single place where partners can learn, build, and verify integrations against references generated from the running platform.]]></description>
            <content:encoded><![CDATA[<p>Today we are releasing the first production version of the XMReality developer documentation. This is the new central source for everything related to our APIs. The goal has been to provide a single place where partners can learn, build, and verify integrations against references generated from the running platform.</p>
<!-- -->
<p>Too much integration time has gone into piecing answers together from support threads, sample projects, and outdated examples. The new portal removes that friction. You can switch between API areas without losing context, copy verified curl and TypeScript snippets, and review rate limits before planning automation or batch operations. The structure was validated against real integration work before release, so the path from first call to production follows the order you actually build in.</p>
<p>The content is organized so each API surface provides a clear introduction to workflows, authentication requirements, rate limits, and recommendations for production use. REST endpoints include embedded interactive explorers that allow you to inspect payloads, verify request shapes, and browse the supported versions of each API. A dedicated versioning section explains how to interpret the api-supported-versions header and how to adopt newer capabilities in a controlled way.</p>
<p>We have also improved the onboarding flow. The authentication guide now describes the supported flow in detail, based on JWT bearer tokens issued by the authentication endpoint. It includes guidance on device headers, access token lifetime, drift tolerance, and the rolling refresh token window. API keys are not available to partners today, so the guides walk you through provisioning an integration user and maintaining a stable refresh loop. The Webhooks quickstart includes examples that work with tools like ngrok. The Messaging documentation covers templated content on WhatsApp. The Storage section provides a complete TUS upload sequence with checksum validation and signed download guidance. Common pitfalls have been documented to reduce the guesswork that often slows early development.</p>
<p>A new changelog section provides tagged releases with RSS support. The homepage now includes a live status indicator sourced from our Statuspage feed so teams can see current availability of the Core API, Messaging endpoints, and other surfaces before retrying operations. Improved transparency has been a recurring request and this is an important step forward.</p>
<p>This release marks the foundation of our public documentation. Further improvements will follow. If you discover issues or gaps, contact us at <a href="mailto:support@xmreality.com" target="_blank" rel="noopener noreferrer" class="">support@xmreality.com</a> and we will address them in upcoming updates.</p>
<p>Thank you to everyone involved in building this release. In the coming weeks we will continue to expand the portal with more sample code, deployment scenarios, infrastructure examples, and guidance for observability and monitoring. Our aim is to ensure the documentation grows with the platform and remains a reliable resource for all integration teams.</p>]]></content:encoded>
            <category>Developer docs</category>
        </item>
    </channel>
</rss>