This is an attempt of reverse engineer the Technic platform API with a simple Wireshark and an official laucher. This is a simple HTTP based API returning JSON.
URL parameter build
is always required to perform a request.
The value can be anything but it seems to be a build number of the lauche; maybe for tracking reasons.
If this parameters is not present in URL query parameters, all requests will return 401 Unauthorized
response.
For this document I used build=402
for all requests.
Base API url : http://api.technicpack.net
Use this URL before each endpoint path listed below.
This endpoint is used to request for a list of modpacks based on a query
GET /search?q=<request>
Parameters :
- request
q
: Search terms with+
in place of spaces (special characters arn't URL encoded)
Response :
{
"modpacks": [
{
"id": "<string-int>",
"name": "<string>",
"slug": "<string-slugifyed>",
"url": "<string-absolute-url>"
}
]
}
modpack
: an array of 15 max found modpacks for this queryid
: identifier for this modpack (as string)name
: Displayable name of this modpackslug
: slug of this modpack used to mention it in other endpointsurl
: Absolute URL of modpack's technic platform page
GET /modpack/<slug>
Parameters :
- slug : slug of the modpack found in "Search for modpacks" endpoints
Response :
{
"id": <int>,
"name": "<string-slugifyed>",
"displayName": "<string>",
"user": "<string>",
"url": "<string-absolute-url>",
"platformUrl": "<string-absolute-url>",
"minecraft": "<string-version>",
"ratings": <int>,
"downloads": <int>,
"runs": <int>,
"description": "<string>",
"tags": "<string>",
"isServer": <boolean>,
"isOfficial": <boolean>,
"version": "<string-version>",
"forceDir": <boolean>,
"feed": [
{
"user": "<string>",
"date": <int-timestamp>,
"content": "<string>",
"avatar": "<string-absolute-url>",
"url": "<string-absolute-url>"
}
],
"icon": {
"url": "<string-absolute-url>",
"md5": "<string-empty>"
},
"logo": {
"url": "<string-absolute-url>",
"md5": "<string-empty>"
},
"background": {
"url": "<string-absolute-url>",
"md5": "<string-empty>"
},
"solder": "<string-absolute-url>" | <null>,
"discordServerId": "<string-snowflake>"
}
id
: Identifier of this modpack (as number)name
: Slug of the modpackdisplayName
: Prettyn name of the modpackuser
: Pretty username of modpack's authorurl
: Absolute URL to where you can download latest version of this modpackplatformUrl
: Absolute URL of modpack's technic platform pageminecraft
: Version of minecraft required to run this modpackratings
: Number of ratings on this modpackdownloads
: Number of unique downloads of this modpackruns
: Number of times the modpack was laucheddescription
: Description of this modpacktags
: Comma separated list of tags for this modpackisServer
: If this modpack is a server versionisOffical
: If this modpack is an official oneversion
: Version of this modpackforceDir
: I don't know...feed
: An array of 10 max published changelogs about this modpackuser
: Pretty username of changelog's authordate
: Unix Timestamp when this article was publishedcontent
: Title of this article as plain textavatar
: Absolute URL to author's avatarurl
: Absolute URL to technic platform's page of this changelog
icon
: Icon of this modpackurl
: Absolute URL of this modpack icon (empty string if there is not)md5
: Maybe should be an md5 integrity check but it's always an empty string (maybe it's backward compatibility)
logo
: Large logo of this modpackurl
: Absolute URL of the logo (empty string id there is not)md5
: same aslogo.md5
background
: Large image to be displayed as backgroud for this modpackurl
: Absolute URL of a background image for this modpack (empty string if there is not)md5
: same aslogo.md5
solder
: Absolute URL of the Solder server of this modpack (null if there is not)discordServerId
: Discord snowflake of modpack's guild on Discord (empty string if there is not)
This endpoint is used to check for updates and download latest version of a laucher
GET /launcher/version/<stream>
Parameters :
- stream : This parameter is the name of the laucher application; possible found values are :
stable4
stable
beta
beta4
Response :
{
"build": "<string-int>",
"url": {
"exe": "<string-absolute-url>",
"jar": "<string-absolute-url>",
"osx": "<string-absolute-url>"
},
"resources": [
{
"filename": "<string>",
"url": "<string-absolute-url>",
"md5": "<string-md5>"
}
]
}
build
: Build version (usually number)url
: Absolute URLs to download a platform-specific launcherexe
: Absolute URL for a windows launcherjar
: Absolute URL for an universal JAR launcherosx
: Absolute URL for a MAC OS launcher zipped
resources
: An array of required resources for the launcher (usually fonts and lib jars)filename
: Name of the resource fileurl
: Absolute URL for resource downloadingmd5
: A md5 integrity check of this file
Note :
- Parameter
build
is not required on this endpoint
An interesting endpoint not very useful but fun. This is homepage of the launcher displaying it as is.
GET /discover
Response :
A full HTML, CSS and JS page to display as homepage
Note:
- Parameter
build
is not required on this endpoint
This endpoint list last news article of the platform
GET /news
Response :
{
"articles": [
{
"id": <int>,
"username": "<string>",
"avatar": "<string-absolute-url>",
"title": "<String>",
"content": "<string-html>",
"date": <timestamp>,
"url": "<string-absolute-url>"
}
]
}
articles
: Array of 20 max articlesid
: Identifier of this articleusername
: Pretty username of article's authoravatar
: Absolute URL of author's avatartitle
: Title of this articlecontent
: Content of this article as HTMLdate
: Unix timestamp of article's publication dateurl
: Absolute URL to technic platform's page of this article
This endpoint is not a part of the classical platform API but a part of the official Solder server of Tekkit's creators.
GET http://solder.technicpack.net/api/modpack/?include=full
This is not in scope of this document.