Skip to content

Instantly share code, notes, and snippets.

@InternalLoss
Last active April 10, 2021 18:03
Show Gist options
  • Save InternalLoss/a0290b15ba4d2c2083d730ab88023394 to your computer and use it in GitHub Desktop.
Save InternalLoss/a0290b15ba4d2c2083d730ab88023394 to your computer and use it in GitHub Desktop.
Beyblade Burst Beylogger Plus & Puzzle (3DS) API explanation

Beyblade Burst Beylogger Plus & Puzzle for Nintendo 3DS

This Japanese app gets delisted from eShop on 14 April 2021, so I got bored and decided to nose at it since it's free.

When booting the app, it ensures that you have the correct time for JST, by sending a POST to https://beyblade.takaratomy.co.jp/api/3ds/v1.0/_is_time_correct with the following form-data attributes:

APP_TOKEN	application/octet-stream		<64 char string>
RID	application/octet-stream		<8 char string>
UT	application/octet-stream		1618002522

APP_TOKEN is likely sent via NASC or NEX, with RID unknown (both do change between session), and UT being a Unix Timestamp. The server responds with the following JSON, either true or false:

{
	"status": 0,
	"is_time_correct": true
}

It seems the game won't let you do.. something? Probably play the game without time being correct since you only get 3 free plays a day.

When trying to login with an ID, you can sign up on 3DS; this opens the regular Web Browser to https://beyblade.takaratomy.co.jp/3ds/signup (this URL has been archived), and is a pretty typical sign up page.

When signing in, the user POSTs the 3 headers from above along with "email" and "password" to https://beyblade.takaratomy.co.jp/api/3ds/v1.0/_web_login - the status code 0 is success with 950 seeming to mean incorrect details.

{
	"status": 950,
	"error_title": "\u30ed\u30b0\u30a4\u30f3\u30a8\u30e9\u30fc",
	"error_message": "\u30ed\u30b0\u30a4\u30f3ID\u304b\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002\n\u3082\u3046\u4e00\u5ea6\u3084\u308a\u76f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002[DI030]"
}

However, if correct, it returns some more information along with status 0:

{
	"status": 0,
	"beylogger_status": 10,
	"ukey": "SESSION_TOKEN",
	"chara_icon": 1,
	"params": {
		"NM": "USERNAME",
		"PID": null
	}
}

This ukey is POSTed along with the 3 device headers mentioned before to https://beyblade.takaratomy.co.jp/api/3ds/v1.0/_get_blader_info with the response (Actual numbers censored so I don't get my 3DS banned)

{
	"status": 0,
	"blader_title": "\u3055\u3059\u3089\u3044\u306e\u30d6\u30ec\u30fc\u30c0\u30fc",
	"NM": "USERNAME",
	"total_beypoint": 0,
	"beypoint": 0,
	"mr1": 0,
	"pav": 0,
	"st": 0,
	"total_beypoint_avg": 0,
	"beypoint_avg": 0,
	"mr1_avg": 0,
	"wav": 0,
	"st_avg": 0,
	"badge_count": 0
}

The news API seems to no longer work, only giving {"status":0,"news":[]} - I have no clue how this would've worked, but there is a dedicated News button in the app.

You can also exchange Beyblade points earned in the free plays for battle points (for use on other platforms? No clue) - to do this, it POSTs ukey+device headers to https://beyblade.takaratomy.co.jp/api/3ds/v1.0/_add_3ds_point along with DSPT: 10 or some integer; {"status":0} is the valid response.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment