<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sasgaming.net/index.php?action=history&amp;feed=atom&amp;title=Minecraft%3AMojang_API</id>
	<title>Minecraft:Mojang API - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sasgaming.net/index.php?action=history&amp;feed=atom&amp;title=Minecraft%3AMojang_API"/>
	<link rel="alternate" type="text/html" href="https://wiki.sasgaming.net/index.php?title=Minecraft:Mojang_API&amp;action=history"/>
	<updated>2026-04-09T20:33:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.sasgaming.net/index.php?title=Minecraft:Mojang_API&amp;diff=69849&amp;oldid=prev</id>
		<title>SyncBot: Remove broken links to missing pages</title>
		<link rel="alternate" type="text/html" href="https://wiki.sasgaming.net/index.php?title=Minecraft:Mojang_API&amp;diff=69849&amp;oldid=prev"/>
		<updated>2026-04-09T15:56:45Z</updated>

		<summary type="html">&lt;p&gt;Remove broken links to missing pages&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 15:56, 9 April 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;This page provides documentation for &#039;&#039;&#039;API&#039;&#039;&#039; endpoints provided by &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Minecraft:&lt;/del&gt;Mojang Studios&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/del&gt;which allows user to query player data and make changes programmatically.&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;This page provides documentation for &#039;&#039;&#039;API&#039;&#039;&#039; endpoints provided by Mojang Studios which allows user to query player data and make changes programmatically.&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;Most of the API has a per-IP ratelimit of 200 requests per 2 minutes. For IPv6, the ratelimits are bucketed by /56 subnet. Some endpoints have different ratelimits.&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;Most of the API has a per-IP ratelimit of 200 requests per 2 minutes. For IPv6, the ratelimits are bucketed by /56 subnet. Some endpoints have different ratelimits.&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-l201&quot;&gt;Line 201:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 201:&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;; Input&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;; Input&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;Player UUID and whether the request is &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Minecraft:wikipedia:Digital signature|&lt;/del&gt;signed&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/del&gt;.&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;Player UUID and whether the request is signed.&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;; Request (GET)&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;; Request (GET)&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-l217&quot;&gt;Line 217:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 217:&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;*** {{Nbt|string|name}}: Name of the property. For now, the only property that exists is &amp;lt;code&amp;gt;textures&amp;lt;/code&amp;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;*** {{Nbt|string|name}}: Name of the property. For now, the only property that exists is &amp;lt;code&amp;gt;textures&amp;lt;/code&amp;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;*** {{Nbt|string|signature}}: Signature signed with &amp;lt;samp&amp;gt;Yggdrasil&amp;lt;/samp&amp;gt; private key as Base64 string, only exists when &amp;lt;code&amp;gt;unsigned=false&amp;lt;/code&amp;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;*** {{Nbt|string|signature}}: Signature signed with &amp;lt;samp&amp;gt;Yggdrasil&amp;lt;/samp&amp;gt; private key as Base64 string, only exists when &amp;lt;code&amp;gt;unsigned=false&amp;lt;/code&amp;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;*** {{Nbt|string|value}}&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: [[Minecraft:wikipedia&lt;/del&gt;:Base64&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Base64]] &lt;/del&gt;string with all player textures (skin and cape). The decoded string includes:&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;*** {{Nbt|string|value}}: Base64 string with all player textures (skin and cape). The decoded string includes:&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;**** {{Nbt|compound}} Texture object.&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;**** {{Nbt|compound}} Texture object.&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;***** {{Nbt|int|timestamp}}&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: [[Minecraft:wikipedia&lt;/del&gt;:Unix time&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Unix time]] &lt;/del&gt;in milliseconds the texture is accessed.&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;***** {{Nbt|int|timestamp}}: Unix time in milliseconds the texture is accessed.&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;***** {{Nbt|string|profileId}}: Player&amp;#039;s UUID without dashes.&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;***** {{Nbt|string|profileId}}: Player&amp;#039;s UUID without dashes.&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;***** {{Nbt|string|profileName}}: Player name.&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;***** {{Nbt|string|profileName}}: Player name.&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;***** {{Nbt|boolean|signatureRequired}}: Only exists when &amp;lt;code&amp;gt;unsigned=false&amp;lt;/code&amp;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;***** {{Nbt|boolean|signatureRequired}}: Only exists when &amp;lt;code&amp;gt;unsigned=false&amp;lt;/code&amp;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;***** {{Nbt|compound|textures}}: Texture.&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;***** {{Nbt|compound|textures}}: Texture.&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;****** {{Nbt|compound|SKIN}}&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: [[Minecraft&lt;/del&gt;:Skin&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/del&gt;texture. This does not exist if the player does not have a custom skin.&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;****** {{Nbt|compound|SKIN}}: Skin texture. This does not exist if the player does not have a custom skin.&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;******* {{Nbt|string|url}}: URL to the skin texture.&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;******* {{Nbt|string|url}}: URL to the skin texture.&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;******* {{Nbt|compound|metadata}}: Optional. Metadata for the skin.&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;******* {{Nbt|compound|metadata}}: Optional. Metadata for the skin.&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;******** {{Nbt|string|model}}: &amp;lt;code&amp;gt;slim&amp;lt;/code&amp;gt;. Only exists when skin model is &amp;lt;samp&amp;gt;Alex&amp;lt;/samp&amp;gt;. When skin model is &amp;lt;samp&amp;gt;Steve&amp;lt;/samp&amp;gt;, this metadata 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;******** {{Nbt|string|model}}: &amp;lt;code&amp;gt;slim&amp;lt;/code&amp;gt;. Only exists when skin model is &amp;lt;samp&amp;gt;Alex&amp;lt;/samp&amp;gt;. When skin model is &amp;lt;samp&amp;gt;Steve&amp;lt;/samp&amp;gt;, this metadata does not exist.&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;****** {{Nbt|compound|CAPE}}&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: [[Minecraft&lt;/del&gt;:Cape&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/del&gt;texture. If the player does not have a cape, this does not exist.&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;****** {{Nbt|compound|CAPE}}: Cape texture. If the player does not have a cape, this does not exist.&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;******* {{Nbt|string|url}}: URL to the cape texture.&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;******* {{Nbt|string|url}}: URL to the cape texture.&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;&amp;lt;/div&amp;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;&amp;lt;/div&amp;gt;&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-l770&quot;&gt;Line 770:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 770:&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;{{license wiki.vg}}&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;{{license wiki.vg}}&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Minecraft:&lt;/del&gt;de:Mojang API&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/del&gt;&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;de:Mojang API&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Minecraft:&lt;/del&gt;lzh:魔贊卯口&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/del&gt;&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;lzh:魔贊卯口&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Minecraft:&lt;/del&gt;zh:Mojang API&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/del&gt;&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;zh:Mojang API&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>SyncBot</name></author>
	</entry>
	<entry>
		<id>https://wiki.sasgaming.net/index.php?title=Minecraft:Mojang_API&amp;diff=67138&amp;oldid=prev</id>
		<title>SyncBot: Sync: new page from Minecraft</title>
		<link rel="alternate" type="text/html" href="https://wiki.sasgaming.net/index.php?title=Minecraft:Mojang_API&amp;diff=67138&amp;oldid=prev"/>
		<updated>2026-04-09T11:23:00Z</updated>

		<summary type="html">&lt;p&gt;Sync: new page from Minecraft&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This page provides documentation for &amp;#039;&amp;#039;&amp;#039;API&amp;#039;&amp;#039;&amp;#039; endpoints provided by [[Minecraft:Mojang Studios]] which allows user to query player data and make changes programmatically.&lt;br /&gt;
&lt;br /&gt;
Most of the API has a per-IP ratelimit of 200 requests per 2 minutes. For IPv6, the ratelimits are bucketed by /56 subnet. Some endpoints have different ratelimits.&lt;br /&gt;
&lt;br /&gt;
== Request and response ==&lt;br /&gt;
&lt;br /&gt;
For requests with a payload, the following restrictions apply:&lt;br /&gt;
&lt;br /&gt;
* Request must include the &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header, which must be &amp;lt;samp&amp;gt;application/json&amp;lt;/samp&amp;gt;. Otherwise, the server returns HTTP 415.&lt;br /&gt;
* Payload must be a valid json. Otherwise, the server returns HTTP 400.&lt;br /&gt;
&lt;br /&gt;
If the request is successful, the server:&lt;br /&gt;
&lt;br /&gt;
* Returns a successful response code (HTTP 2XX)&lt;br /&gt;
* Returns an empty payload (with HTTP 204) or a valid json&lt;br /&gt;
&lt;br /&gt;
Otherwise, if the request fails, the server returns a non-2XX HTTP status code with this payload:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}}: Root tag.&lt;br /&gt;
** {{Nbt|string|error}}: Error identifier&lt;br /&gt;
** {{Nbt|string|errorMessage}}: Description of the error&lt;br /&gt;
** {{Nbt|string|cause}}: Description of the cause of the error&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are some common causes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! HTTP status code&lt;br /&gt;
! {{cd|error}}&lt;br /&gt;
! {{cd|errorMessage}}&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=3 | 400&lt;br /&gt;
| IllegalArgumentException&lt;br /&gt;
| rowspan=3 | Depends on the endpoint&lt;br /&gt;
| Incorrect or invalid argument in the request.&lt;br /&gt;
|-&lt;br /&gt;
| MismatchedInputException&lt;br /&gt;
| rowspan=2 | JSON payload does not meet the required schema or payload is not an invalid JSON.&lt;br /&gt;
|-&lt;br /&gt;
| JsonParseException&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=2 | 401&lt;br /&gt;
| (empty payload)&lt;br /&gt;
| (empty payload)&lt;br /&gt;
| Endpoint requires authentication, but request header does not have an &amp;lt;code&amp;gt;Authorization&amp;lt;/code&amp;gt; header or the token is invalid.&lt;br /&gt;
|-&lt;br /&gt;
| Unauthorized&lt;br /&gt;
| The request requires user authentication&lt;br /&gt;
| Endpoint requires authentication, but request header does not have an &amp;lt;code&amp;gt;Authorization&amp;lt;/code&amp;gt; header.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=2 | 403&lt;br /&gt;
| ForbiddenOperationException&lt;br /&gt;
| Forbidden&lt;br /&gt;
| Invalid auth token.&lt;br /&gt;
|-&lt;br /&gt;
| {{tc|n/a}}&lt;br /&gt;
| Your account has been suspended. Please contact customer service.&lt;br /&gt;
| Account has been banned/suspended state by triggering a high volume of erroneous requests. See [[#Account suspensions]].&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| Not Found&lt;br /&gt;
| The server has not found anything matching the request URI&lt;br /&gt;
| Endpoint does not exist.&lt;br /&gt;
|-&lt;br /&gt;
| 405&lt;br /&gt;
| Method Not Allowed&lt;br /&gt;
| The method specified in the request is not allowed for the resource identified by the request URI&lt;br /&gt;
| Request method is not supported.&lt;br /&gt;
|-&lt;br /&gt;
| 415&lt;br /&gt;
| Unsupported Media Type&lt;br /&gt;
| The server is refusing to service the request because the entity of the request is in a format not supported by the requested resource for the requested method&lt;br /&gt;
| {{cd|Content-Type}} request header does not match the type the endpoint allows.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Account suspensions ===&lt;br /&gt;
A Minecraft account can be entered into a banned/suspended state by triggering a high volume of erroneous requests, such as a high volume of 429s while uploading a skin.&lt;br /&gt;
&lt;br /&gt;
These suspensions appear to be temporary, although this is speculation and the exact functionality of this automatic suspension system is unknown.&lt;br /&gt;
&lt;br /&gt;
 POST &amp;lt;nowiki&amp;gt;https://api.minecraftservices.com/authentication/login_with_xbox&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Returns 403 with the following JSON data&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;path&amp;quot;: &amp;quot;/authentication/login_with_xbox&amp;quot;,&lt;br /&gt;
	&amp;quot;details&amp;quot;: {&lt;br /&gt;
		&amp;quot;reason&amp;quot;: &amp;quot;ACCOUNT_SUSPENDED&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;errorMessage&amp;quot;: &amp;quot;Your account has been suspended. Please contact customer service.&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other services will report that the account is banned, such as servers serving the otherwise unused message &amp;lt;nowiki&amp;gt;You are banned from playing online&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
These suspensions typically clear within 24 hours but may require contacting Minecraft support if they don&amp;#039;t.&lt;br /&gt;
&lt;br /&gt;
== Query player information ==&lt;br /&gt;
&lt;br /&gt;
These endpoints do not need an access token, and some endpoints can query registered account that do not own the game.&lt;br /&gt;
&lt;br /&gt;
=== Query player&amp;#039;s username ===&lt;br /&gt;
&lt;br /&gt;
; Input&lt;br /&gt;
Player&amp;#039;s name (case insensitive).&lt;br /&gt;
&lt;br /&gt;
; Request (GET)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.mojang.com/users/profiles/minecraft/&amp;lt;/nowiki&amp;gt;&amp;lt;&amp;#039;&amp;#039;player name&amp;#039;&amp;#039;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** This will occasionally return random 403 errors due to a misconfiguration&amp;lt;ref&amp;gt;https://bugs.mojang.com/browse/WEB-7591?focusedId=1375404&amp;amp;page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-1375404&amp;lt;/ref&amp;gt; by Mojang.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.minecraftservices.com/minecraft/profile/lookup/name/&amp;lt;/nowiki&amp;gt;&amp;lt;&amp;#039;&amp;#039;player name&amp;#039;&amp;#039;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.mojang.com/minecraft/profile/lookup/name/&amp;lt;/nowiki&amp;gt;&amp;lt;&amp;#039;&amp;#039;player name&amp;#039;&amp;#039;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|string|id}}: [[Minecraft:UUID]] of the player.&lt;br /&gt;
** {{Nbt|string|name}}: Name of the player, case sensitive.&lt;br /&gt;
** {{Nbt|bool|legacy}}: Included in response if the account has not migrated to Mojang account.&lt;br /&gt;
** {{Nbt|bool|demo}}: Included in response if the account does not own the game.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.mojang.com/users/profiles/minecraft/jeb_&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Player &amp;lt;samp&amp;gt;jeb_&amp;lt;/samp&amp;gt;&amp;#039;s UUID.&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;name&amp;quot;: &amp;quot;jeb_&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;853c80ef3c3749fdaa49938b674adae6&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Error&lt;br /&gt;
* HTTP 404 is returned if no player with such name exists.&lt;br /&gt;
&lt;br /&gt;
=== Query player&amp;#039;s UUID ===&lt;br /&gt;
&lt;br /&gt;
; Input&lt;br /&gt;
Player&amp;#039;s UUID.&lt;br /&gt;
&lt;br /&gt;
; Request (GET)&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.minecraftservices.com/minecraft/profile/lookup/&amp;lt;/nowiki&amp;gt;&amp;lt;&amp;#039;&amp;#039;UUID&amp;#039;&amp;#039;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
The same as [[#Query player&amp;#039;s username]].&lt;br /&gt;
&lt;br /&gt;
=== Query player UUIDs in batch ===&lt;br /&gt;
&lt;br /&gt;
; Payload&lt;br /&gt;
A JSON array with no more than 10 player names (case insensitive).&lt;br /&gt;
&lt;br /&gt;
; Request (POST)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.mojang.com/profiles/minecraft&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.minecraftservices.com/minecraft/profile/lookup/bulk/byname&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.mojang.com/minecraft/profile/lookup/bulk/byname&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|list}} The UUID list for all the players. For players that does not exist, no result is returned.&lt;br /&gt;
** {{Nbt|compound}} Player name.&lt;br /&gt;
*** {{Nbt|string|id}}: [[Minecraft:UUID]] of the player.&lt;br /&gt;
*** {{Nbt|string|name}}: Name of the player, case sensitive.&lt;br /&gt;
*** {{Nbt|bool|legacy}}: Included in response if the account has not migrated to Mojang account.&lt;br /&gt;
*** {{Nbt|bool|demo}}: Included in response if the account does not own the game.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Example&lt;br /&gt;
Request with payload &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;quot;jeb_&amp;quot;,&amp;quot;notch&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;853c80ef3c3749fdaa49938b674adae6&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;jeb_&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;069a79f444e94726a5befca90e38aaf5&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;Notch&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! HTTP status code&lt;br /&gt;
! {{cd|error}}&lt;br /&gt;
! {{cd|errorMessage}}&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=3 | 400&lt;br /&gt;
| rowspan=3 | CONSTRAINT_VIOLATION&lt;br /&gt;
| rowspan=2 | size must be between 1 and 10&lt;br /&gt;
| RequestPayload is an empty array.&lt;br /&gt;
|-&lt;br /&gt;
| RequestPayload is has more than 10 elements.&lt;br /&gt;
|-&lt;br /&gt;
| Invalid profile name&lt;br /&gt;
| RequestPayload includes an empty string.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Query player&amp;#039;s skin and cape ===&lt;br /&gt;
&lt;br /&gt;
; Input&lt;br /&gt;
Player UUID and whether the request is [[Minecraft:wikipedia:Digital signature|signed]].&lt;br /&gt;
&lt;br /&gt;
; Request (GET)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://sessionserver.mojang.com/session/minecraft/profile/&amp;lt;/nowiki&amp;gt;&amp;lt;&amp;#039;&amp;#039;UUID&amp;#039;&amp;#039;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ratelimited at about 400 requests per 10 seconds.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://sessionserver.mojang.com/session/minecraft/profile/&amp;lt;/nowiki&amp;gt;&amp;lt;&amp;#039;&amp;#039;UUID&amp;#039;&amp;#039;&amp;gt;?unsigned=false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|string|id}}: Player&amp;#039;s [[Minecraft:UUID]].&lt;br /&gt;
** {{Nbt|string|name}}: Player name, case sensitive.&lt;br /&gt;
** {{Nbt|boolean|legacy}}: Included in response if the account has not migrated to Mojang account.&lt;br /&gt;
** {{Nbt|list|properties}}: A list of player properties.&lt;br /&gt;
*** {{Nbt|string|name}}: Name of the property. For now, the only property that exists is &amp;lt;code&amp;gt;textures&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** {{Nbt|string|signature}}: Signature signed with &amp;lt;samp&amp;gt;Yggdrasil&amp;lt;/samp&amp;gt; private key as Base64 string, only exists when &amp;lt;code&amp;gt;unsigned=false&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** {{Nbt|string|value}}: [[Minecraft:wikipedia:Base64|Base64]] string with all player textures (skin and cape). The decoded string includes:&lt;br /&gt;
**** {{Nbt|compound}} Texture object.&lt;br /&gt;
***** {{Nbt|int|timestamp}}: [[Minecraft:wikipedia:Unix time|Unix time]] in milliseconds the texture is accessed.&lt;br /&gt;
***** {{Nbt|string|profileId}}: Player&amp;#039;s UUID without dashes.&lt;br /&gt;
***** {{Nbt|string|profileName}}: Player name.&lt;br /&gt;
***** {{Nbt|boolean|signatureRequired}}: Only exists when &amp;lt;code&amp;gt;unsigned=false&amp;lt;/code&amp;gt;.&lt;br /&gt;
***** {{Nbt|compound|textures}}: Texture.&lt;br /&gt;
****** {{Nbt|compound|SKIN}}: [[Minecraft:Skin]] texture. This does not exist if the player does not have a custom skin.&lt;br /&gt;
******* {{Nbt|string|url}}: URL to the skin texture.&lt;br /&gt;
******* {{Nbt|compound|metadata}}: Optional. Metadata for the skin.&lt;br /&gt;
******** {{Nbt|string|model}}: &amp;lt;code&amp;gt;slim&amp;lt;/code&amp;gt;. Only exists when skin model is &amp;lt;samp&amp;gt;Alex&amp;lt;/samp&amp;gt;. When skin model is &amp;lt;samp&amp;gt;Steve&amp;lt;/samp&amp;gt;, this metadata does not exist.&lt;br /&gt;
****** {{Nbt|compound|CAPE}}: [[Minecraft:Cape]] texture. If the player does not have a cape, this does not exist.&lt;br /&gt;
******* {{Nbt|string|url}}: URL to the cape texture.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://sessionserver.mojang.com/session/minecraft/profile/853c80ef3c3749fdaa49938b674adae6&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Returns:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;853c80ef3c3749fdaa49938b674adae6&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;jeb_&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;textures&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;ewogICJ0aW1lc3R...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Content in {{Nbt|string|value}} after Base64 decoded:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;timestamp&amp;quot;: 1653838459263,&lt;br /&gt;
    &amp;quot;profileId&amp;quot;: &amp;quot;853c80ef3c3749fdaa49938b674adae6&amp;quot;,&lt;br /&gt;
    &amp;quot;profileName&amp;quot;: &amp;quot;jeb_&amp;quot;,&lt;br /&gt;
    &amp;quot;textures&amp;quot;: {&lt;br /&gt;
        &amp;quot;SKIN&amp;quot;: {&lt;br /&gt;
            &amp;quot;url&amp;quot;: &amp;quot;http://textures.minecraft.net/texture/7fd9ba42a7c81eeea22f1524271ae85a8e045ce0af5a6ae16c6406ae917e68b5&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;CAPE&amp;quot;: {&lt;br /&gt;
            &amp;quot;url&amp;quot;: &amp;quot;http://textures.minecraft.net/texture/9e507afc56359978a3eb3e32367042b853cddd0995d17d0da995662913fb00f7&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Error&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! HTTP status code&lt;br /&gt;
! {{cd|error}}&lt;br /&gt;
! {{cd|errorMessage}}&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| 204&lt;br /&gt;
| (empty payload)&lt;br /&gt;
| (empty payload)&lt;br /&gt;
| This UUID does not have an associated player&lt;br /&gt;
|-&lt;br /&gt;
| 400&lt;br /&gt;
| (empty)&lt;br /&gt;
| Not a valid UUID: &amp;lt;&amp;#039;&amp;#039;inputted argument&amp;#039;&amp;#039;&amp;gt;&lt;br /&gt;
| UUID is invalid.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Microsoft authentication ==&lt;br /&gt;
&lt;br /&gt;
{{for|overview on the authentication steps|Microsoft authentication}}&lt;br /&gt;
&lt;br /&gt;
Authentication for Microsoft accounts. Before using Microsoft auth, an [https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app Microsoft Azure Application] must be created to obtain [https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow OAuth 2.0] client ID and token, which can then be used to obtain a Microsoft token. When obtaining the token, the {{cd|scope}} parameter should include {{samp|XboxLive.signin}} to obtain an Xbox Live token.&lt;br /&gt;
&lt;br /&gt;
=== Obtain an Xbox Live token with Microsoft token ===&lt;br /&gt;
&lt;br /&gt;
; Payload&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|compound|Properties}}: Authentication properties&lt;br /&gt;
*** {{Nbt|string|AuthMethod}}: Login method. This should be &amp;lt;code&amp;gt;RPS&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** {{Nbt|string|SiteName}}: Website name. This should be &amp;lt;code&amp;gt;user.auth.xboxlive.com&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** {{Nbt|string|RpsTicket}}: Ticket used for logging in. Value should be &amp;lt;code&amp;gt;d=&amp;lt;&amp;#039;&amp;#039;Microsoft access token&amp;#039;&amp;#039;&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** {{Nbt|string|RelyingParty}}: Replying party. This should be &amp;lt;code&amp;gt;http://auth.xboxlive.com&amp;lt;/code&amp;gt;.&lt;br /&gt;
** {{Nbt|string|TokenType}}: Type of the access token. This should be &amp;lt;code&amp;gt;JWT&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Request (POST)&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://user.auth.xboxlive.com/user/authenticate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL renegotiation required in SSL implementation.&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|string|IssueInstant}}: Time when obtaining the Xbox Live token.&lt;br /&gt;
** {{Nbt|string|NotAfter}}: Time the Xbox Live token is expired.&lt;br /&gt;
** {{Nbt|string|Token}}: Xbox Live access token.&lt;br /&gt;
** {{Nbt|compound|DisplayClaims}}: Unknown.&lt;br /&gt;
*** {{Nbt|list|xui}}: Unknown.&lt;br /&gt;
**** {{Nbt|compound}}&lt;br /&gt;
***** {{Nbt|string|uhs}}: User hashcode.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Obtain an XSTS token with Xbox Live token ===&lt;br /&gt;
&lt;br /&gt;
; Payload&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|compound|Properties}}: Auth properties.&lt;br /&gt;
*** {{Nbt|string|SandboxId}}: Sandbox ID. This should be &amp;lt;code&amp;gt;RETAIL&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** {{Nbt|list|UserTokens}}: User&amp;#039;s Xbox Live token.&lt;br /&gt;
**** {{Nbt|string}}: User&amp;#039;s Xbox Live token obtained in the previous step.&lt;br /&gt;
** {{Nbt|string|RelyingParty}}: Replying party. This should be &amp;lt;code&amp;gt;rp://api.minecraftservices.com/&amp;lt;/code&amp;gt;.&lt;br /&gt;
** {{Nbt|string|TokenType}}: Type of the access token. This should be &amp;lt;code&amp;gt;JWT&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Request (POST)&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://xsts.auth.xboxlive.com/xsts/authorize&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL renegotiation required in SSL implementation.&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|string|IssueInstant}}: Time when obtaining the XSTS token.&lt;br /&gt;
** {{Nbt|string|NotAfter}}: Time the XSTS token is expired.&lt;br /&gt;
** {{Nbt|string|Token}}: XSTS access token.&lt;br /&gt;
** {{Nbt|compound|DisplayClaims}}: Unknown.&lt;br /&gt;
*** {{Nbt|list|xui}}: Unknown.&lt;br /&gt;
**** {{Nbt|compound}}&lt;br /&gt;
***** {{Nbt|string|uhs}}: User hashcode.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Error&lt;br /&gt;
HTTP 401 is returned if an error occurs in obtaining the XSTS token.&lt;br /&gt;
&lt;br /&gt;
=== Obtain Minecraft access token with XSTS token ===&lt;br /&gt;
&lt;br /&gt;
; Payload&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|string|identityToken}}: Identity token. The value should be &amp;lt;code&amp;gt;XBL3.0 x=&amp;lt;&amp;#039;&amp;#039;User hashcode&amp;#039;&amp;#039;&amp;gt;;&amp;lt;&amp;#039;&amp;#039;XSTS access token&amp;#039;&amp;#039;&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Request (POST)&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.minecraftservices.com/authentication/login_with_xbox&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|string|username}}: UUID (not the UUID for the player)&lt;br /&gt;
** {{Nbt|list|roles}}: Unknown, empty.&lt;br /&gt;
** {{Nbt|string|access_token}}: Minecraft access token.&lt;br /&gt;
** {{Nbt|string|token_type}}: Token type. This is always &amp;lt;code&amp;gt;Bearer&amp;lt;/code&amp;gt;.&lt;br /&gt;
** {{Nbt|string|expires_in}}: Time period until the token expires in seconds.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Check if the account owns Minecraft ===&lt;br /&gt;
&lt;br /&gt;
; Request header&lt;br /&gt;
&amp;lt;code&amp;gt;Authorization&amp;lt;/code&amp;gt; should be &amp;lt;code&amp;gt;Bearer &amp;lt;&amp;#039;&amp;#039;Minecraft access token&amp;#039;&amp;#039;&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
; Request (GET)&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.minecraftservices.com/entitlements/license?requestId=&amp;lt;v4 UUID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
If the account owns Minecraft, returns:&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|list|items}}: Products licensed to use.&lt;br /&gt;
*** {{Nbt|string|name}}: Data name, either &amp;lt;code&amp;gt;product_minecraft&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;game_minecraft&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;product_minecraft_bedrock&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;game_minecraft_bedrock&amp;lt;/code&amp;gt;.&lt;br /&gt;
** {{Nbt|string|signature}}: JWT signature.&lt;br /&gt;
** {{Nbt|string|keyID}}: Unknown.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the account does not own Minecraft or is playing with Xbox Game Pass, empty payload is returned.&lt;br /&gt;
&lt;br /&gt;
== Player config ==&lt;br /&gt;
&lt;br /&gt;
These endpoints are at &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.minecraftservices.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, and all requires the &amp;lt;code&amp;gt;Authorization&amp;lt;/code&amp;gt; header in request with value &amp;lt;samp&amp;gt;Bearer &amp;lt;&amp;#039;&amp;#039;Minecraft access token&amp;#039;&amp;#039;&amp;gt;&amp;lt;/samp&amp;gt;. HTTP 401 is returned if token is missing or invalid.&lt;br /&gt;
&lt;br /&gt;
=== Query player profile ===&lt;br /&gt;
&lt;br /&gt;
; Request (GET)&lt;br /&gt;
&amp;lt;code&amp;gt;/minecraft/profile&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|string|id}}: Player&amp;#039;s UUID.&lt;br /&gt;
** {{Nbt|string|name}}: Player name.&lt;br /&gt;
** {{Nbt|list|skins}}: A list of info of all the skins the player owns.&lt;br /&gt;
*** {{Nbt|compound}}: A skin.&lt;br /&gt;
**** {{Nbt|string|id}}: Skin&amp;#039;s UUID.&lt;br /&gt;
**** {{Nbt|string|state}}: Usage status for the skin. &amp;lt;code&amp;gt;ACTIVE&amp;lt;/code&amp;gt; when the skin is the player&amp;#039;s current skin, and &amp;lt;code&amp;gt;INACTIVE&amp;lt;/code&amp;gt; when the skin was previously used.&lt;br /&gt;
**** {{Nbt|string|url}}: URL to the skin.&lt;br /&gt;
**** {{Nbt|string|variant}}: Skin variant. &amp;lt;code&amp;gt;CLASSIC&amp;lt;/code&amp;gt; for the Steve model and &amp;lt;code&amp;gt;SLIM&amp;lt;/code&amp;gt; for the Alex model.&lt;br /&gt;
** {{Nbt|list|capes}}: A list of info of all the capes the player owns.&lt;br /&gt;
*** {{Nbt|compound}}: A cape.&lt;br /&gt;
**** {{Nbt|string|id}}: Cape&amp;#039;s UUID.&lt;br /&gt;
**** {{Nbt|string|state}}: Usage status for the cape. &amp;lt;code&amp;gt;ACTIVE&amp;lt;/code&amp;gt; when the cape is the player&amp;#039;s current cape, and &amp;lt;code&amp;gt;INACTIVE&amp;lt;/code&amp;gt; when the cape is owned but not displayed in-game.&lt;br /&gt;
**** {{Nbt|string|url}}: URL to the cape.&lt;br /&gt;
**** {{Nbt|string|alias}}: Alias for the cape.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Query player attributes ===&lt;br /&gt;
&lt;br /&gt;
; Request (GET)&lt;br /&gt;
&amp;lt;code&amp;gt;/player/attributes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|compound|privileges}}: Player&amp;#039;s privileges&lt;br /&gt;
*** {{Nbt|compound|onlineChat}}: Privilege of accepting chat messages&lt;br /&gt;
**** {{Nbt|boolean|enable}}&lt;br /&gt;
*** {{Nbt|compound|multiplayerServer}}: Privilege of joining servers.&lt;br /&gt;
**** {{Nbt|boolean|enable}}&lt;br /&gt;
*** {{Nbt|compound|multiplayerRealms}}: Privilege of joining Realms.&lt;br /&gt;
**** {{Nbt|boolean|enable}}&lt;br /&gt;
*** {{Nbt|compound|telemetry}}: Privilege of sending telemetry.&lt;br /&gt;
**** {{Nbt|boolean|enable}}&lt;br /&gt;
*** {{Nbt|compound|optionalTelemetry}}: Privilege of sending optional telemetry.&lt;br /&gt;
**** {{Nbt|boolean|enable}}&lt;br /&gt;
** {{Nbt|compound|profanityFilterPreferences}}: Profanity filter settings.&lt;br /&gt;
*** {{Nbt|boolean|profanityFilterOn}}: If Realms profanity filter is on.&lt;br /&gt;
** {{Nbt|compound|banStatus}}: Player&amp;#039;s ban status&lt;br /&gt;
*** {{Nbt|compound|bannedScopes}}: Scope in which the player is banned.&lt;br /&gt;
**** {{Nbt|compound}}: Ban scope. If the player is not banned, these objects do not exist. Only &amp;lt;code&amp;gt;MULTIPLAYER&amp;lt;/code&amp;gt; exists.&lt;br /&gt;
***** {{Nbt|string|banId}}: UUID of the ban.&lt;br /&gt;
***** {{Nbt|string|expires}}: When the ban expires. This does not exist if the player is permanently banned.&lt;br /&gt;
***** {{Nbt|string|reason}}: Reason for the ban.&lt;br /&gt;
***** {{Nbt|string|reasonMessage}}: Ban message displayed.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modify player attributes ===&lt;br /&gt;
&lt;br /&gt;
; Payload&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|compound|profanityFilterPreferences}}: Realms profanity filter options.&lt;br /&gt;
*** {{Nbt|boolean|profanityFilterOn}}: If filter is on.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Request (POST)&lt;br /&gt;
&amp;lt;code&amp;gt;/player/attributes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
The same as [[#Query player attributes]].&lt;br /&gt;
&lt;br /&gt;
=== Get list of blocked users ===&lt;br /&gt;
&lt;br /&gt;
; Request (GET)&lt;br /&gt;
&amp;lt;code&amp;gt;/privacy/blocklist&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|list|blockedProfiles}}: A list of blocked players whose chat messages and Realms invitations are ignored.&lt;br /&gt;
*** {{Nbt|string}}: UUID for the blocked player.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get keypair for signature ===&lt;br /&gt;
&lt;br /&gt;
; Request (POST)&lt;br /&gt;
&amp;lt;code&amp;gt;/player/certificates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|compound|keyPair}}: Keypair used for signature.&lt;br /&gt;
*** {{Nbt|string|privateKey}}: Private key. Starts with {{cd|-----BEGIN RSA PRIVATE KEY-----}} and ends with {{cd|-----END RSA PRIVATE KEY-----}}.&lt;br /&gt;
*** {{Nbt|string|publicKey}}: Public key. Starts with{{cd|-----BEGIN RSA PUBLIC KEY-----}} and ends with {{cd|-----END RSA PUBLIC KEY-----}}.&lt;br /&gt;
** {{Nbt|string|publicKeySignature}}: Deprecated, see below.&lt;br /&gt;
** {{Nbt|string|publicKeySignatureV2}}: Public key signature.&lt;br /&gt;
** {{Nbt|string|expiresAt}}: When the keypair expires.&lt;br /&gt;
** {{Nbt|string|refreshedAfter}}: When the keypair should be refreshed.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Query player&amp;#039;s name change information ===&lt;br /&gt;
&lt;br /&gt;
; Request (GET)&lt;br /&gt;
&amp;lt;code&amp;gt;/minecraft/profile/namechange&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|string|changedAt}}: The last time the name has been changed.&lt;br /&gt;
** {{Nbt|string|createdAt}}: The time the player profile is created.&lt;br /&gt;
** {{Nbt|boolean|nameChangeAllowed}}: If the player can change name.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Check gift code validity ===&lt;br /&gt;
&lt;br /&gt;
; Request (GET)&lt;br /&gt;
&amp;lt;code&amp;gt;/productvoucher/giftcode&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
Returns HTTP 200 or 204 if the gift code is valid. Otherwise returns HTTP 404.&lt;br /&gt;
&lt;br /&gt;
=== Check name availability ===&lt;br /&gt;
&lt;br /&gt;
; Request (GET)&lt;br /&gt;
&amp;lt;code&amp;gt;/minecraft/profile/name/&amp;lt;&amp;#039;&amp;#039;name to be checked&amp;#039;&amp;#039;&amp;gt;/available&amp;lt;/code&amp;gt;&lt;br /&gt;
* This endpoint has a per-account ratelimit of 20 requests per 5 minutes.&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|string|status}}: Status of the name. &amp;lt;code&amp;gt;DUPLICATE&amp;lt;/code&amp;gt; means the name is taken. &amp;lt;code&amp;gt;AVAILABLE&amp;lt;/code&amp;gt; means the name is available.&amp;lt;code&amp;gt;NOT_ALLOWED&amp;lt;/code&amp;gt; means the name does not meet requirements.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change name ===&lt;br /&gt;
&lt;br /&gt;
; Input&lt;br /&gt;
Name to change to&lt;br /&gt;
&lt;br /&gt;
; Request (PUT)&lt;br /&gt;
&amp;lt;code&amp;gt;/minecraft/profile/name/&amp;lt;&amp;#039;&amp;#039;name to change to&amp;#039;&amp;#039;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|string|id}}: Player&amp;#039;s UUID.&lt;br /&gt;
** {{Nbt|string|name}}: Player name.&lt;br /&gt;
** {{Nbt|list|skins}}: A list of info of all the skins the player owns.&lt;br /&gt;
*** {{Nbt|compound}}: A skin.&lt;br /&gt;
**** {{Nbt|string|id}}: Cape&amp;#039;s UUID.&lt;br /&gt;
**** {{Nbt|string|state}}: Usage status for the cape.&lt;br /&gt;
**** {{Nbt|string|url}}: URL to the skin.&lt;br /&gt;
**** {{Nbt|string|variant}}: Skin variant. &amp;lt;code&amp;gt;CLASSIC&amp;lt;/code&amp;gt; for the Steve model and &amp;lt;code&amp;gt;SLIM&amp;lt;/code&amp;gt; for the Alex model.&lt;br /&gt;
** {{Nbt|list|capes}}: A list of info of all the capes the player owns.&lt;br /&gt;
*** {{Nbt|compound}}: A cape.&lt;br /&gt;
**** {{Nbt|string|id}}: Cape&amp;#039;s UUID.&lt;br /&gt;
**** {{Nbt|string|state}}: Usage status for the cape.&lt;br /&gt;
**** {{Nbt|string|url}}: URL to the cape.&lt;br /&gt;
**** {{Nbt|string|alias}}: Alias for the cape.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Error&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! HTTP status code&lt;br /&gt;
! {{cd|error}}&lt;br /&gt;
! {{cd|errorMessage}}&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| 400&lt;br /&gt;
| CONSTRAINT_VIOLATION&lt;br /&gt;
| changeProfileName.profileName: Invalid profile name&lt;br /&gt;
| Name does not meet requirement. The name must have less than or equal to 16 characters and must consist of alphanumericals and underscores.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| (empty)&lt;br /&gt;
| Could not change name for profile&lt;br /&gt;
| Cannot change name. If &amp;lt;code&amp;gt;detail.status&amp;lt;/code&amp;gt; is &amp;lt;samp&amp;gt;DUPLICATE&amp;lt;/samp&amp;gt;, the name has already been taken.&lt;br /&gt;
|-&lt;br /&gt;
| 429&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Too many rename requests sent.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Change skin ===&lt;br /&gt;
&lt;br /&gt;
; Payload&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|string|variant}}: Skin variant. &amp;lt;code&amp;gt;classic&amp;lt;/code&amp;gt; for the Steve model and &amp;lt;code&amp;gt;slim&amp;lt;/code&amp;gt; for the Alex model.&lt;br /&gt;
** {{Nbt|string|url}}: URL to the skin.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Request (POST)&lt;br /&gt;
&amp;lt;code&amp;gt;/minecraft/profile/skins&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
Returns [[Minecraft:Mojang API#Query player profile|the profile]] if operation succeeds.&lt;br /&gt;
&lt;br /&gt;
=== Upload skin ===&lt;br /&gt;
&lt;br /&gt;
; Payload&lt;br /&gt;
Payload is made up of two parts:&lt;br /&gt;
&lt;br /&gt;
* {{cd|variant}}: Skin variant. &amp;lt;code&amp;gt;classic&amp;lt;/code&amp;gt; for the Steve model and &amp;lt;code&amp;gt;slim&amp;lt;/code&amp;gt; for the Alex model.&lt;br /&gt;
* {{cd|file}}: Image data for the new skin. See example below.&lt;br /&gt;
&lt;br /&gt;
; Request (POST)&lt;br /&gt;
&amp;lt;code&amp;gt;/minecraft/profile/skins&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Authorization: Bearer &amp;lt;access token&amp;gt;&amp;quot; -F variant=classic -F file=&amp;quot;@steeevee.png;type=image/png&amp;quot; https://api.minecraftservices.com/minecraft/profile/skins&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
Returns [[Minecraft:Mojang API#Query player profile|the profile]] if operation succeeds.&lt;br /&gt;
&lt;br /&gt;
=== Reset skin ===&lt;br /&gt;
&lt;br /&gt;
; Input&lt;br /&gt;
Player&amp;#039;s UUID.&lt;br /&gt;
&lt;br /&gt;
; Request (DELETE)&lt;br /&gt;
&amp;lt;code&amp;gt;/minecraft/profile/skins/active&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
Returns [[Minecraft:Mojang API#Query player profile|the profile]] if operation succeeds.&lt;br /&gt;
&lt;br /&gt;
=== Hide cape ===&lt;br /&gt;
&lt;br /&gt;
; Request (DELETE)&lt;br /&gt;
&amp;lt;code&amp;gt;/minecraft/profile/capes/active&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
Returns [[Minecraft:Mojang API#Query player profile|the profile]] if operation succeeds.&lt;br /&gt;
&lt;br /&gt;
=== Show cape ===&lt;br /&gt;
&lt;br /&gt;
; Payload&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|string|capeId}}: UUID for the cape to activate&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Request (PUT)&lt;br /&gt;
&amp;lt;code&amp;gt;/minecraft/profile/capes/active&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
Returns [[Minecraft:Mojang API#Query player profile|the profile]] if operation succeeds.&lt;br /&gt;
&lt;br /&gt;
; Error&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! HTTP status code&lt;br /&gt;
! {{cd|error}}&lt;br /&gt;
! {{cd|errorMessage}}&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| 400&lt;br /&gt;
| (empty)&lt;br /&gt;
| profile does not own cape&lt;br /&gt;
| The player does not own the cape.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
=== Query blocked server list ===&lt;br /&gt;
&lt;br /&gt;
; Request (GET)&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://sessionserver.mojang.com/blockedservers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
A text file where every line is the SHA-1 hash of a blocked server. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commented out this statement because the GitHub link leads to a 404 error.&lt;br /&gt;
Servers known to be blocked can be found at [https://github.com/Reecepbcups/FollowTheEULA/blob/master/blockedServersList.txt here]. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Verify login session on client ===&lt;br /&gt;
&lt;br /&gt;
; Payload&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|string|accessToken}}: Minecraft access token.&lt;br /&gt;
** {{Nbt|string|selectedProfile}}: Player UUID without dashes.&lt;br /&gt;
** {{Nbt|string|serverId}}: Server ID. See below.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Server ID is obtained from the following algorithm: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public static String generateServerId(String baseServerId,   // Base server ID, usually an empty string&amp;quot;&amp;quot;&lt;br /&gt;
                                      PublicKey publicKey,   // Server&amp;#039;s RSA public key&lt;br /&gt;
                                      SecretKey secretKey    // The symmetric AES secret key used between server and client&lt;br /&gt;
                                     ) throws Exception { &lt;br /&gt;
    MessageDigest messageDigest = MessageDigest.getInstance(&amp;quot;SHA-1&amp;quot;);&lt;br /&gt;
    messageDigest.update(baseServerId.getBytes(&amp;quot;ISO_8859_1&amp;quot;));&lt;br /&gt;
    messageDigest.update(secretKey.getEncoded());&lt;br /&gt;
    messageDigest.update(publicKey.getEncoded());&lt;br /&gt;
    byte[] digestData = messageDigest.digest();&lt;br /&gt;
    return new BigInteger(digestData).toString(16);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Request (POST)&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://sessionserver.mojang.com/session/minecraft/join&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* This endpoint has a per-account ratelimit of 6 joins per 30 seconds.&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
Returns HTTP 204 if authentication passes.&lt;br /&gt;
&lt;br /&gt;
=== Verify login session on server ===&lt;br /&gt;
&lt;br /&gt;
; Input&lt;br /&gt;
Case insensitive player name, server ID obtained by the above algorithm and the client IP (optional).&lt;br /&gt;
&lt;br /&gt;
; Request (GET)&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://sessionserver.mojang.com/session/minecraft/hasJoined?&amp;lt;/nowiki&amp;gt;username=&amp;lt;&amp;#039;&amp;#039;player name&amp;#039;&amp;#039;&amp;gt;&amp;amp;serverId=&amp;lt;&amp;#039;&amp;#039;Server ID&amp;#039;&amp;#039;&amp;gt;&amp;amp;ip=&amp;lt;&amp;#039;&amp;#039;Client IP&amp;#039;&amp;#039;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
Returns [[#Query player&amp;#039;s skin and cape|this payload]] if verification passes.&lt;br /&gt;
&lt;br /&gt;
=== Get Mojang public keys ===&lt;br /&gt;
&lt;br /&gt;
; Request (GET)&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.minecraftservices.com/publickeys&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Response&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Nbt|compound}} Root tag&lt;br /&gt;
** {{Nbt|list|profilePropertyKeys}}: A list of public keys used for verifying player properties (such as skin and cape textures), from e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://sessionserver.mojang.com/session/minecraft/profile/&amp;lt;/nowiki&amp;gt;&amp;lt;&amp;#039;&amp;#039;UUID&amp;#039;&amp;#039;&amp;gt;?unsigned=false&amp;lt;/code&amp;gt;. A player property is considered valid by the client iff signed by any of these keys.&lt;br /&gt;
*** {{Nbt|string}}: Base64-encoded DER public key.&lt;br /&gt;
** {{Nbt|list|playerCertificateKeys}}: A list of public keys used for verifying player public keys, e.g. from &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.minecraftservices.com/player/certificates&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. A player certificate is considered valid by the client iff signed by any of these keys.&lt;br /&gt;
*** {{Nbt|string}}: Base64-encoded DER public key.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
{{HistoryTable&lt;br /&gt;
|{{HistoryLine||April 14, 2014|link=https://github.com/Mojang/AccountsClient|Mojang API is released.}}&lt;br /&gt;
|{{HistoryLine||November 2020|link=https://bugs.mojang.com/browse/WEB-3367|Endpoint for obtaining player UUID no longer supports the {{cd|at}} parameter.}}&lt;br /&gt;
|{{HistoryLine||October 8, 2021|link=https://bugs.mojang.com/browse/WEB-2303?focusedCommentId=1086543&amp;amp;page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-1086543|Endpoint for querying Mojang API status is removed. The endpoint was &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://status.mojang.com/check&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
|{{HistoryLine||May 8, 2022|link={{tweet|Mojang_Ined|1501541417784852484}}|Endpoint for querying Minecraft sales is removed. The endpoint was &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.mojang.com/orders/statistics&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
|{{HistoryLine||September 13, 2022|link=https://help.minecraft.net/hc/en-us/articles/8969841895693-Username-History-API-Removal-FAQ-|The endpoint for querying names a player used to use is removed. The endpoint was &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.mojang.com/user/profiles/&amp;lt;/nowiki&amp;gt;&amp;lt;&amp;#039;&amp;#039;UUID&amp;#039;&amp;#039;&amp;gt;/names&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
|{{HistoryLine||January 15, 2025|link=https://bugs.mojang.com/browse/WEB-7591?focusedId=1375404&amp;amp;page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-1375404|The endpoint for querying UUIDs based on a player&amp;#039;s name has experimental rate limits introduced. The endpoint is &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://api.mojang.com/users/profiles/minecraft/&amp;lt;/nowiki&amp;gt;&amp;lt;&amp;#039;&amp;#039;username&amp;#039;&amp;#039;&amp;gt;/names&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
This article is partially adapted from [[Special:PermaLink/2777487|Mojang API]] on wiki.vg.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
* [https://github.com/hawezo/MojangSharp C#] - Full API wrapper&lt;br /&gt;
* [https://github.com/CmlLib/MojangAPI C#] - Full API wrapper with Mojang/Microsoft Authentication&lt;br /&gt;
* [https://github.com/spnda/dart_minecraft Dart] - Almost full API wrapper with Mojang Authentication&lt;br /&gt;
* [https://github.com/Lukaesebrot/mojango Go] - Full API wrapper&lt;br /&gt;
* [https://github.com/PhilipBorgesen/minecraft/tree/master/profile Go] - UUIDs or names to profiles with skins, capes and name histories&lt;br /&gt;
* [https://github.com/summer/mojang Python] - Full API Wrapper. Also supports authentication &amp;amp; parts of the Minecraft website&lt;br /&gt;
* [https://github.com/Lucino772/pymojang Python] - Pymojang is a full wrapper around de Mojang API and Mojang Authentication API. Also support RCON, Query and Server List Ping&lt;br /&gt;
* [https://github.com/SynchronousX/mojang-api Python] - Full API wrapper (not updated since 2018)&lt;br /&gt;
* [https://github.com/techkid6/AccountsClientPython Python] - UUIDs or names to profiles (not updated since 2018)&lt;br /&gt;
* [https://github.com/elyby/mojang-api PHP] - Complete Mojang&amp;#039;s API wrapper&lt;br /&gt;
* [https://github.com/Davidoc26/mojang-api PHP] - Almost full API wrapper with Mojang Authentication. Also support head rendering&lt;br /&gt;
* [https://github.com/MineTheCube/MojangAPI PHP] - UUIDs or names to profiles with skins, heads and name histories&lt;br /&gt;
* [https://gist.github.com/ezfe/a71feccd3a837a2592f1 PHP] - UUIDs to names&lt;br /&gt;
* [https://github.com/ozzyfant/AccountsClientPHP PHP] - UUIDs to names, names to uuids&lt;br /&gt;
* [https://github.com/SparklingComet/java-mojang-api Java] - Almost full API Wrapper&lt;br /&gt;
* [https://github.com/dpkgsoft/mojang Java] - Almost full API Wrapper with auth&lt;br /&gt;
* [https://github.com/novastosha/NMoyang Java] - Almost full API with Mojang Authentication and can also work as a console Application.&lt;br /&gt;
* [https://github.com/thechunknetwork/mojang-api JavaScript] - UUIDs or names to profiles with skins, capes and name histories&lt;br /&gt;
* [https://github.com/lukasabbe/Mojang-API-wrapper JavaScript/TypeScript] - Almost full API wrapper&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
== Navigation ==&lt;br /&gt;
{{Navbox Java Edition technical|General}}&lt;br /&gt;
[[Category:Java Edition protocol]]&lt;br /&gt;
{{license wiki.vg}}&lt;br /&gt;
&lt;br /&gt;
[[Minecraft:de:Mojang API]]&lt;br /&gt;
[[Minecraft:lzh:魔贊卯口]]&lt;br /&gt;
[[Minecraft:zh:Mojang API]]&lt;/div&gt;</summary>
		<author><name>SyncBot</name></author>
	</entry>
</feed>