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 :
stable4stablebetabeta4
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
buildis not required on this endpoint
An interesting endpoint not very useful but fun. This is homepage of the launcher displaying it as is.
GET /discoverResponse :
A full HTML, CSS and JS page to display as homepage
Note:
- Parameter
buildis not required on this endpoint
This endpoint list last news article of the platform
GET /newsResponse :
{
"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 increases the amount of downloads for the specified modpack
GET /modpack/<slug>/stat/install?build=<version>Parameters :
- version: Version of the laucher application; possible found values are :
stable4stablebetabeta4<current version>the current launcher version you can see in the launcher application settings
- slug: Slug of the modpack found in "Search for modpacks" endpoints
Response :
{"success":"Stat registered"}{"error":"You are being rate-limited"}A success message is returned when the increment was a success, an error message is shown when too many requests came from the same ip address.
This endpoint increases the amount of runs for the specified modpack
GET /modpack/<slug>/stat/run?build=<version>Parameters :
- version: Version of the laucher application; possible found values are :
stable4stablebetabeta4<current version>the current launcher version you can see in the launcher application settings
- slug: Slug of the modpack found in "Search for modpacks" endpoints
Response :
{"success":"Stat registered"}{"error":"You are being rate-limited"}A success message is returned when the increment was a success, an error message is shown when too many requests came from the same ip address.
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=fullThis is not in scope of this document.