<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.simtx.net/index.php?action=history&amp;feed=atom&amp;title=SimTX_API_v24%2FAccount_service</id>
	<title>SimTX API v24/Account service - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.simtx.net/index.php?action=history&amp;feed=atom&amp;title=SimTX_API_v24%2FAccount_service"/>
	<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=SimTX_API_v24/Account_service&amp;action=history"/>
	<updated>2026-11-05T01:19:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.simtx.net/index.php?title=SimTX_API_v24/Account_service&amp;diff=2121&amp;oldid=prev</id>
		<title>Clanker: Archive the v24 protocol reference: use the v24 templates, links and categories</title>
		<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=SimTX_API_v24/Account_service&amp;diff=2121&amp;oldid=prev"/>
		<updated>2026-10-24T16:13:29Z</updated>

		<summary type="html">&lt;p&gt;Archive the v24 protocol reference: use the v24 templates, links and categories&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:13, 24 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{SimTX API navigation}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24 &lt;/ins&gt;navigation}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &#039;&#039;&#039;SimTX account service&#039;&#039;&#039; is the HTTPS JSON API at &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://auth.simtx.net&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It signs users in, issues credentials, lists the game servers that are online, and exchanges a credential for the single-use &#039;&#039;&#039;game ticket&#039;&#039;&#039; that a game server accepts during the [[SimTX API/Connection and handshake|handshake]]. It also serves a small set of public, unauthenticated endpoints.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &#039;&#039;&#039;SimTX account service&#039;&#039;&#039; is the HTTPS JSON API at &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://auth.simtx.net&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It signs users in, issues credentials, lists the game servers that are online, and exchanges a credential for the single-use &#039;&#039;&#039;game ticket&#039;&#039;&#039; that a game server accepts during the [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Connection and handshake|handshake]]. It also serves a small set of public, unauthenticated endpoints.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A client that only &#039;&#039;&#039;receives&#039;&#039;&#039; does not need the account service at all, apart from discovering a server address. A client that &#039;&#039;&#039;transmits&#039;&#039;&#039; or publishes to the [[SimTX API/Extension catalog protocol|extension catalog]] does.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A client that only &#039;&#039;&#039;receives&#039;&#039;&#039; does not need the account service at all, apart from discovering a server address. A client that &#039;&#039;&#039;transmits&#039;&#039;&#039; or publishes to the [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Extension catalog protocol|extension catalog]] does.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Endpoint summary ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Endpoint summary ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l8&quot;&gt;Line 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 8:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Method !! Path !! Authentication !! Purpose&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Method !! Path !! Authentication !! Purpose&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/device/authorizations&amp;lt;/code&amp;gt; || None || [[SimTX API/Device login#Starting a login|Start a device login]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/device/authorizations&amp;lt;/code&amp;gt; || None || [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Device login#Starting a login|Start a device login]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/device/token&amp;lt;/code&amp;gt; || None || [[SimTX API/Device login#Polling for credentials|Poll for credentials]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/device/token&amp;lt;/code&amp;gt; || None || [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Device login#Polling for credentials|Poll for credentials]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/device/refresh&amp;lt;/code&amp;gt; || None || [[SimTX API/Device login#Refreshing|Rotate the credential pair]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/device/refresh&amp;lt;/code&amp;gt; || None || [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Device login#Refreshing|Rotate the credential pair]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/servers&amp;lt;/code&amp;gt; || Bearer || [[SimTX API/Server directory|List online game servers]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/servers&amp;lt;/code&amp;gt; || Bearer || [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Server directory|List online game servers]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/game-tickets&amp;lt;/code&amp;gt; || Bearer || [[SimTX API/Game tickets|Obtain a game ticket]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/game-tickets&amp;lt;/code&amp;gt; || Bearer || [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Game tickets|Obtain a game ticket]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/status&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Service status|Service status]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/status&amp;lt;/code&amp;gt; || None || [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Public endpoints#Service status|Service status]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/profiles&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Profile search|Search public profiles]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/profiles&amp;lt;/code&amp;gt; || None || [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Public endpoints#Profile search|Search public profiles]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/profiles/{handle}&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Single profile|Read one public profile]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/profiles/{handle}&amp;lt;/code&amp;gt; || None || [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Public endpoints#Single profile|Read one public profile]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/releases&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Releases|Published transmitter releases]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/releases&amp;lt;/code&amp;gt; || None || [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Public endpoints#Releases|Published transmitter releases]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/downloads/transmitter-update.properties&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Update manifest|Update manifest]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/downloads/transmitter-update.properties&amp;lt;/code&amp;gt; || None || [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Public endpoints#Update manifest|Update manifest]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/downloads/{filename}&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Release downloads|Release download]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/downloads/{filename}&amp;lt;/code&amp;gt; || None || [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Public endpoints#Release downloads|Release download]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/network-test/ping&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Network test|Latency probe]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/network-test/ping&amp;lt;/code&amp;gt; || None || [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Public endpoints#Network test|Latency probe]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/network-test/upload&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Network test|Upload probe]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/network-test/upload&amp;lt;/code&amp;gt; || None || [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Public endpoints#Network test|Upload probe]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l54&quot;&gt;Line 54:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 54:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Two kinds of credential are accepted as a bearer:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Two kinds of credential are accepted as a bearer:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* an &#039;&#039;&#039;access credential&#039;&#039;&#039; obtained through [[SimTX API/Device login|device login]], or&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* an &#039;&#039;&#039;access credential&#039;&#039;&#039; obtained through [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Device login|device login]], or&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* a &amp;#039;&amp;#039;&amp;#039;personal credential&amp;#039;&amp;#039;&amp;#039; created by the user on the account website. It is intended for bots, scripts and other headless software. The user chooses its scopes and expiry, and the secret is displayed once.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* a &amp;#039;&amp;#039;&amp;#039;personal credential&amp;#039;&amp;#039;&amp;#039; created by the user on the account website. It is intended for bots, scripts and other headless software. The user chooses its scopes and expiry, and the secret is displayed once.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l71&quot;&gt;Line 71:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 71:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;stx_pc1_&amp;lt;/code&amp;gt; || Personal credential || Chosen by the user, at most 1 year || Bearer for authenticated endpoints&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;stx_pc1_&amp;lt;/code&amp;gt; || Personal credential || Chosen by the user, at most 1 year || Bearer for authenticated endpoints&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;stx_gt1_&amp;lt;/code&amp;gt; || Game ticket || 60 seconds, single use || The game server [[SimTX API/Packets/Handshake|handshake]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;stx_gt1_&amp;lt;/code&amp;gt; || Game ticket || 60 seconds, single use || The game server [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Packets/Handshake|handshake]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l80&quot;&gt;Line 80:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 80:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Persist the refresh credential (or a personal credential) in the operating system&amp;#039;s credential store, such as Keychain, Windows Credential Manager or Secret Service.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Persist the refresh credential (or a personal credential) in the operating system&amp;#039;s credential store, such as Keychain, Windows Credential Manager or Secret Service.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* There is no client-side logout endpoint. Signing out means deleting the stored refresh credential. Users revoke devices and personal credentials on the account website.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* There is no client-side logout endpoint. Signing out means deleting the stored refresh credential. Users revoke devices and personal credentials on the account website.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Never send an access, refresh or personal credential to a game server. Game servers only ever see [[SimTX API/Game tickets|game tickets]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Never send an access, refresh or personal credential to a game server. Game servers only ever see [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Game tickets|game tickets]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Errors ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Errors ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l114&quot;&gt;Line 114:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 114:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 401 || &amp;lt;code&amp;gt;credential_invalid&amp;lt;/code&amp;gt; || The bearer credential is unknown, expired, revoked, or belongs to an account that is not active. Refresh once and retry; if that fails, sign in again.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 401 || &amp;lt;code&amp;gt;credential_invalid&amp;lt;/code&amp;gt; || The bearer credential is unknown, expired, revoked, or belongs to an account that is not active. Refresh once and retry; if that fails, sign in again.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 400 || &amp;lt;code&amp;gt;scope_invalid&amp;lt;/code&amp;gt; || A requested scope is not a known [[SimTX API/Permissions|permission]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 400 || &amp;lt;code&amp;gt;scope_invalid&amp;lt;/code&amp;gt; || A requested scope is not a known [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Permissions|permission]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 400 || &amp;lt;code&amp;gt;ticket_request_invalid&amp;lt;/code&amp;gt; || See [[SimTX API/Game tickets#Errors|Game tickets]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 400 || &amp;lt;code&amp;gt;ticket_request_invalid&amp;lt;/code&amp;gt; || See [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Game tickets#Errors|Game tickets]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 400 || &amp;lt;code&amp;gt;authorization_pending&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;slow_down&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;expired_token&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;access_denied&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;invalid_grant&amp;lt;/code&amp;gt; || Device polling states. See [[SimTX API/Device login#Polling for credentials|Device login]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 400 || &amp;lt;code&amp;gt;authorization_pending&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;slow_down&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;expired_token&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;access_denied&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;invalid_grant&amp;lt;/code&amp;gt; || Device polling states. See [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Device login#Polling for credentials|Device login]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 401 || &amp;lt;code&amp;gt;invalid_grant&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;refresh_reuse_detected&amp;lt;/code&amp;gt; || Refresh failures. See [[SimTX API/Device login#Refreshing|Device login]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 401 || &amp;lt;code&amp;gt;invalid_grant&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;refresh_reuse_detected&amp;lt;/code&amp;gt; || Refresh failures. See [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Device login#Refreshing|Device login]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 404 || &amp;lt;code&amp;gt;profile_not_found&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;release_artifact_not_found&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;release_manifest_unavailable&amp;lt;/code&amp;gt; || The requested public resource does not exist.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 404 || &amp;lt;code&amp;gt;profile_not_found&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;release_artifact_not_found&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;release_manifest_unavailable&amp;lt;/code&amp;gt; || The requested public resource does not exist.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l163&quot;&gt;Line 163:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 163:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== See also ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== See also ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[SimTX API/Device login]]: the sign-in flow for desktop and command-line software.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Device login]]: the sign-in flow for desktop and command-line software.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[SimTX API/Game tickets]]: how a credential becomes a game server connection.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Game tickets]]: how a credential becomes a game server connection.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[SimTX API/Permissions]]: scopes and numeric capabilities.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;/Permissions]]: scopes and numeric capabilities.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{SimTX API navbox}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24 &lt;/ins&gt;navbox}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:SimTX API]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:SimTX API account service]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:SimTX API &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v24 &lt;/ins&gt;account service]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Clanker</name></author>
	</entry>
	<entry>
		<id>https://wiki.simtx.net/index.php?title=SimTX_API_v24/Account_service&amp;diff=2094&amp;oldid=prev</id>
		<title>Clanker: Clanker moved page SimTX API/Account service to SimTX API v24/Account service: Archive the v24 protocol reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=SimTX_API_v24/Account_service&amp;diff=2094&amp;oldid=prev"/>
		<updated>2026-10-24T16:11:45Z</updated>

		<summary type="html">&lt;p&gt;Clanker moved page &lt;a href=&quot;/index.php/SimTX_API/Account_service&quot; title=&quot;SimTX API/Account service&quot;&gt;SimTX API/Account service&lt;/a&gt; to &lt;a href=&quot;/index.php/SimTX_API_v24/Account_service&quot; title=&quot;SimTX API v24/Account service&quot;&gt;SimTX API v24/Account service&lt;/a&gt;: Archive the v24 protocol reference&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:11, 24 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Clanker</name></author>
	</entry>
	<entry>
		<id>https://wiki.simtx.net/index.php?title=SimTX_API_v24/Account_service&amp;diff=2003&amp;oldid=prev</id>
		<title>Clanker: SimTX API documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=SimTX_API_v24/Account_service&amp;diff=2003&amp;oldid=prev"/>
		<updated>2026-10-24T09:54:52Z</updated>

		<summary type="html">&lt;p&gt;SimTX API documentation&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{SimTX API navigation}}&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;SimTX account service&amp;#039;&amp;#039;&amp;#039; is the HTTPS JSON API at &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://auth.simtx.net&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It signs users in, issues credentials, lists the game servers that are online, and exchanges a credential for the single-use &amp;#039;&amp;#039;&amp;#039;game ticket&amp;#039;&amp;#039;&amp;#039; that a game server accepts during the [[SimTX API/Connection and handshake|handshake]]. It also serves a small set of public, unauthenticated endpoints.&lt;br /&gt;
&lt;br /&gt;
A client that only &amp;#039;&amp;#039;&amp;#039;receives&amp;#039;&amp;#039;&amp;#039; does not need the account service at all, apart from discovering a server address. A client that &amp;#039;&amp;#039;&amp;#039;transmits&amp;#039;&amp;#039;&amp;#039; or publishes to the [[SimTX API/Extension catalog protocol|extension catalog]] does.&lt;br /&gt;
&lt;br /&gt;
== Endpoint summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Method !! Path !! Authentication !! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/device/authorizations&amp;lt;/code&amp;gt; || None || [[SimTX API/Device login#Starting a login|Start a device login]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/device/token&amp;lt;/code&amp;gt; || None || [[SimTX API/Device login#Polling for credentials|Poll for credentials]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/device/refresh&amp;lt;/code&amp;gt; || None || [[SimTX API/Device login#Refreshing|Rotate the credential pair]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/servers&amp;lt;/code&amp;gt; || Bearer || [[SimTX API/Server directory|List online game servers]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/game-tickets&amp;lt;/code&amp;gt; || Bearer || [[SimTX API/Game tickets|Obtain a game ticket]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/status&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Service status|Service status]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/profiles&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Profile search|Search public profiles]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/profiles/{handle}&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Single profile|Read one public profile]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/releases&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Releases|Published transmitter releases]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/downloads/transmitter-update.properties&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Update manifest|Update manifest]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/downloads/{filename}&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Release downloads|Release download]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/network-test/ping&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Network test|Latency probe]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/api/v1/network-test/upload&amp;lt;/code&amp;gt; || None || [[SimTX API/Public endpoints#Network test|Upload probe]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Endpoints under &amp;lt;code&amp;gt;/api/v1/me/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/api/v1/auth/&amp;lt;/code&amp;gt; and the device approval endpoints (&amp;lt;code&amp;gt;/api/v1/device/verify&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/api/v1/device/deny&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;GET /api/v1/device/authorizations/{userCode}&amp;lt;/code&amp;gt;) belong to the account website. They require a browser session cookie and a CSRF token and do not accept bearer credentials. Administrative and internal endpoints are not part of the public API and are not documented here.&lt;br /&gt;
&lt;br /&gt;
== Conventions ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Transport.&amp;#039;&amp;#039;&amp;#039; HTTPS only. Request and response bodies are &amp;lt;code&amp;gt;application/json&amp;lt;/code&amp;gt; (UTF-8) unless stated otherwise. Timestamps are ISO-8601 strings in UTC, for example &amp;lt;code&amp;gt;2026-10-24T12:00:00Z&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Field names&amp;#039;&amp;#039;&amp;#039; are camelCase. Unknown response fields may be added in future and must be ignored by clients.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Caching.&amp;#039;&amp;#039;&amp;#039; Every &amp;lt;code&amp;gt;/api/&amp;lt;/code&amp;gt; response carries &amp;lt;code&amp;gt;Cache-Control: no-store&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Timeouts.&amp;#039;&amp;#039;&amp;#039; The official client uses a 5 second connect timeout and a 10 second request timeout. Those values are a sensible default.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Request IDs.&amp;#039;&amp;#039;&amp;#039; A client may send an &amp;lt;code&amp;gt;X-Request-ID&amp;lt;/code&amp;gt; header matching &amp;lt;code&amp;gt;[A-Za-z0-9._-]{8,64}&amp;lt;/code&amp;gt;. The service echoes it in the response header and in error bodies. Without one, the service generates a UUID. Quote it when reporting a problem.&lt;br /&gt;
&lt;br /&gt;
== Authentication ==&lt;br /&gt;
Authenticated endpoints read a bearer credential from the &amp;lt;code&amp;gt;Authorization&amp;lt;/code&amp;gt; header. The header must begin with exactly &amp;lt;code&amp;gt;Bearer &amp;lt;/code&amp;gt; (capital B, one space).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;http&amp;quot;&amp;gt;&lt;br /&gt;
GET /api/v1/servers HTTP/1.1&lt;br /&gt;
Host: auth.simtx.net&lt;br /&gt;
Authorization: Bearer stx_at1_0f3c…&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Two kinds of credential are accepted as a bearer:&lt;br /&gt;
* an &amp;#039;&amp;#039;&amp;#039;access credential&amp;#039;&amp;#039;&amp;#039; obtained through [[SimTX API/Device login|device login]], or&lt;br /&gt;
* a &amp;#039;&amp;#039;&amp;#039;personal credential&amp;#039;&amp;#039;&amp;#039; created by the user on the account website. It is intended for bots, scripts and other headless software. The user chooses its scopes and expiry, and the secret is displayed once.&lt;br /&gt;
&lt;br /&gt;
=== Credential formats ===&lt;br /&gt;
All SimTX credentials are opaque strings: a fixed prefix followed by 64 lowercase hexadecimal characters (32 random bytes). They are not JWTs and contain no readable data. A client must store them as given and must never parse them.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Prefix !! Credential !! Lifetime !! Used for&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stx_dc1_&amp;lt;/code&amp;gt; || Device code || 10 minutes || Polling &amp;lt;code&amp;gt;/api/v1/device/token&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stx_at1_&amp;lt;/code&amp;gt; || Access credential || 10 minutes || Bearer for authenticated endpoints&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stx_rt1_&amp;lt;/code&amp;gt; || Refresh credential || 30 days idle, 180 days absolute; rotates on every use || &amp;lt;code&amp;gt;/api/v1/device/refresh&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stx_pc1_&amp;lt;/code&amp;gt; || Personal credential || Chosen by the user, at most 1 year || Bearer for authenticated endpoints&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stx_gt1_&amp;lt;/code&amp;gt; || Game ticket || 60 seconds, single use || The game server [[SimTX API/Packets/Handshake|handshake]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A user code (shown to the person signing in) has the form &amp;lt;code&amp;gt;ABCD-EF23&amp;lt;/code&amp;gt;: eight characters from the alphabet &amp;lt;code&amp;gt;ABCDEFGHJKLMNPQRSTUVWXYZ23456789&amp;lt;/code&amp;gt;, with a hyphen after the fourth. The alphabet omits &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;O&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, so nobody has to wonder which one they are looking at.&lt;br /&gt;
&lt;br /&gt;
=== Storing credentials ===&lt;br /&gt;
* Keep the access credential in memory only. It expires after ten minutes in any case.&lt;br /&gt;
* Persist the refresh credential (or a personal credential) in the operating system&amp;#039;s credential store, such as Keychain, Windows Credential Manager or Secret Service.&lt;br /&gt;
* There is no client-side logout endpoint. Signing out means deleting the stored refresh credential. Users revoke devices and personal credentials on the account website.&lt;br /&gt;
* Never send an access, refresh or personal credential to a game server. Game servers only ever see [[SimTX API/Game tickets|game tickets]].&lt;br /&gt;
&lt;br /&gt;
== Errors ==&lt;br /&gt;
Every error response has the same JSON body:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;code&amp;quot;: &amp;quot;credential_invalid&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;: &amp;quot;The access credential is invalid or expired&amp;quot;,&lt;br /&gt;
  &amp;quot;fieldErrors&amp;quot;: {},&lt;br /&gt;
  &amp;quot;requestId&amp;quot;: &amp;quot;3d7f0c1e-5b2a-4a8e-9a77-1f0f6f5d2b10&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; || string || Stable, machine-readable error code. Branch on this.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt; || string || Human-readable English text. May change; do not parse.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;fieldErrors&amp;lt;/code&amp;gt; || object || Additional string values keyed by name. For example, device polling reports the required poll interval as &amp;lt;code&amp;gt;fieldErrors.interval&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;requestId&amp;lt;/code&amp;gt; || string || The request ID. See [[#Conventions|Conventions]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common error codes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! HTTP !! &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 401 || &amp;lt;code&amp;gt;credential_missing&amp;lt;/code&amp;gt; || No &amp;lt;code&amp;gt;Authorization&amp;lt;/code&amp;gt; header, or it does not start with &amp;lt;code&amp;gt;Bearer &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 401 || &amp;lt;code&amp;gt;credential_invalid&amp;lt;/code&amp;gt; || The bearer credential is unknown, expired, revoked, or belongs to an account that is not active. Refresh once and retry; if that fails, sign in again.&lt;br /&gt;
|-&lt;br /&gt;
| 400 || &amp;lt;code&amp;gt;scope_invalid&amp;lt;/code&amp;gt; || A requested scope is not a known [[SimTX API/Permissions|permission]].&lt;br /&gt;
|-&lt;br /&gt;
| 400 || &amp;lt;code&amp;gt;ticket_request_invalid&amp;lt;/code&amp;gt; || See [[SimTX API/Game tickets#Errors|Game tickets]].&lt;br /&gt;
|-&lt;br /&gt;
| 400 || &amp;lt;code&amp;gt;authorization_pending&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;slow_down&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;expired_token&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;access_denied&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;invalid_grant&amp;lt;/code&amp;gt; || Device polling states. See [[SimTX API/Device login#Polling for credentials|Device login]].&lt;br /&gt;
|-&lt;br /&gt;
| 401 || &amp;lt;code&amp;gt;invalid_grant&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;refresh_reuse_detected&amp;lt;/code&amp;gt; || Refresh failures. See [[SimTX API/Device login#Refreshing|Device login]].&lt;br /&gt;
|-&lt;br /&gt;
| 404 || &amp;lt;code&amp;gt;profile_not_found&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;release_artifact_not_found&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;release_manifest_unavailable&amp;lt;/code&amp;gt; || The requested public resource does not exist.&lt;br /&gt;
|-&lt;br /&gt;
| 429 || &amp;lt;code&amp;gt;rate_limited&amp;lt;/code&amp;gt; || A rate-limit bucket is exhausted. See below.&lt;br /&gt;
|-&lt;br /&gt;
| 500 || &amp;lt;code&amp;gt;internal_error&amp;lt;/code&amp;gt; || Unexpected server failure. Retry later with backoff.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rate limits ==&lt;br /&gt;
Rate limits are counted per client IP address, per bucket, in fixed one-minute windows aligned to the UTC minute. A request over the limit receives &amp;lt;code&amp;gt;429&amp;lt;/code&amp;gt; with code &amp;lt;code&amp;gt;rate_limited&amp;lt;/code&amp;gt;. No &amp;lt;code&amp;gt;Retry-After&amp;lt;/code&amp;gt; header is sent, so wait for the next minute boundary.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Bucket !! Endpoint(s) !! Requests per minute&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;device-create&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;POST /api/v1/device/authorizations&amp;lt;/code&amp;gt; || 20&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;device-poll&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;POST /api/v1/device/token&amp;lt;/code&amp;gt; || 120&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;device-refresh&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;POST /api/v1/device/refresh&amp;lt;/code&amp;gt; || 120&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;server-directory&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;GET /api/v1/servers&amp;lt;/code&amp;gt; || 120&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;game-ticket&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;POST /api/v1/game-tickets&amp;lt;/code&amp;gt; || 120&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;public-directory&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;GET /api/v1/profiles&amp;lt;/code&amp;gt; || 60&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;public-profile&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;GET /api/v1/profiles/{handle}&amp;lt;/code&amp;gt; || 120&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;public-releases&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;GET /api/v1/releases&amp;lt;/code&amp;gt; || 120&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;release-manifest&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;GET /downloads/transmitter-update.properties&amp;lt;/code&amp;gt; || 240&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;release-download&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;GET /downloads/{filename}&amp;lt;/code&amp;gt; || 240&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;network-test-ping&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;GET /api/v1/network-test/ping&amp;lt;/code&amp;gt; || 60&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;network-test-upload&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;POST /api/v1/network-test/upload&amp;lt;/code&amp;gt; || 144&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GET /api/v1/status&amp;lt;/code&amp;gt; is not rate limited.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[SimTX API/Device login]]: the sign-in flow for desktop and command-line software.&lt;br /&gt;
* [[SimTX API/Game tickets]]: how a credential becomes a game server connection.&lt;br /&gt;
* [[SimTX API/Permissions]]: scopes and numeric capabilities.&lt;br /&gt;
&lt;br /&gt;
{{SimTX API navbox}}&lt;br /&gt;
[[Category:SimTX API]]&lt;br /&gt;
[[Category:SimTX API account service]]&lt;/div&gt;</summary>
		<author><name>Clanker</name></author>
	</entry>
</feed>