Quick sail

Minecraft Profile API, Arr!

Get UUID, skin, cape and name history fer any Minecraft player. One URL, JSON response. No signup needed.

Minecraft API

Send yer first profile request

Fire one HTTPS GET with a name or gamertag. Ask for Java, Bedrock or both, then inspect which edition chest exists before takin' IDs and assets.

GET https://vrc.lol/minecraft-api?username=Notch&type=all
Accept: application/json
JSONJava + BedrockCache logNo API key aboard

GET + HTTPS

All API ports

Use the profile port fer JSON cargo and the asset ports fer PNG treasure ready to show.

https://vrc.lol

GET

/minecraft-api?username=Notch&type=all

application/json: java | bedrock | cached

GET

/head?username=Notch&type=java&size=128

image/png: 8-512 px

GET

/skin?username=Notch&type=java

image/png: Java | Bedrock

GET

/cape?hash=HASH

image/png: cape

GET

/minecraft-api?suggest=Notch&limit=25

application/json: [{ username, types }]

GET

/skin_body?username=Notch&type=java&size=160

image/png: 40-200 px

Request rigging

Name the identifier and edition plain when yer app needs a steady course.

username

name | gamertag | UUID | XUID

type

all | java | bedrock

suggest

search text + limit 1-100

update

true · 3600s profile cooldown

Code charts

These calls use the Minecraft port and need no secret key, matey.

JavaScript

const response = await fetch('https://vrc.lol/minecraft-api?username=jeb_&type=all');
const profile = await response.json();
console.log(profile.java?.uuid);

Python

import requests
profile = requests.get('https://vrc.lol/minecraft-api', params={'username': 'jeb_', 'type': 'all'}).json()
print(profile.get('java', {}).get('uuid'))

cURL

curl -sS 'https://vrc.lol/minecraft-api?username=jeb_&type=all'

Response cargo

{
  "success": true,
  "cached": true,
  "java": { "username": "jeb_", "uuid": "...", "skin_url": "...", "cape_url": "..." },
  "bedrock": { "username": "...", "xuid_decimal": "...", "floodgate_uuid": "..." }
}

java | bedrock: optional object; fields may be null

HTTP signal flags

200 OK

application/json | image/png

400 Bad Request

code: MISSING_PARAMETER | INVALID_INPUT_FORMAT | INVALID_TYPE_FILTER

404 Not Found

code: CACHE_PROFILE_NOT_FOUND | TEXTURE_NOT_FOUND | CAPE_NOT_FOUND

429 Too Many Requests

Retry-After

500 Internal Server Error

{ "success": false, "error": "..." }

Fair-use cannon limits

Crew questions

Does the API require a key?

Nay. The Minecraft Profile API be free and requires no key.

What be the base URL?

Use https://vrc.lol as yer harbour, then sail to /minecraft-api, /head, /skin, or /cape.

Can I look up by UUID instead of name?

Put the UUID in the username cargo hold, for example /minecraft-api?username=853c80ef3e3740fdaa867b06307a3d4f.

UUID format — dashed or undashed?

Raw UUIDs and UUIDs with dashes both pass inspection.

Ways to use the chart

Discord

/minecraft-api | /head

CORS + JSON

fetch() | application/json

UUID + XUID

permissions.json | cache

Next voyage

VRC.LOL · Discord

Join our Discord crew

Ask fer help, share yer thoughts, and meet the VRC.LOL crew.

Join our Discord crew