Skip to content

HTTP Endpoints

The server starts a plaintext HTTP listener on httpPort (no TLS) and serves server-info, the resource manifest and resource file endpoints. The listener lives in src/network/CNetworkManager.cpp (HTTPServerThread); the launcher fetches this before GTA connects, while the in-game client receives the same manifest over the encrypted session.

Request Handling

Routing is by path only. The HTTP method is parsed but does not change behavior — any supported method on the same path returns the same response (there is no separate HEAD/OPTIONS handling and no 405 response).

SituationResponse
Malformed request line or oversized headers400 Bad Request
Advertised resource file found200 OK (application/octet-stream)
Resource file not in the advertised list404 Not Found
Any other path200 OK with the server-info JSON

JSON and file responses carry an Access-Control-Allow-Origin: * header.

Endpoints

PathPurpose
/resources/manifest.jsonResource manifest with file hashes and resource config
/resources/files/<resource>/<path>Client-accessible resource file
/assets/<resource>/<path>Asset-pack file
/stream/<resource>/<path>Stream file for dlc/rpf resources
any other path (/, /server-info.json, unknown)Server-info JSON (fallback)

There is no dedicated route for /server-info.json: server-info is the fallback response for any path that does not match the manifest or resource-file routes. As a result /, /server-info.json and unknown paths all return the same server-info JSON rather than a 404.

server-info.json

The server-info JSON is built inline in HTTPServerThread and contains exactly these fields:

FieldTypeValue
namestringserver display name
playersnumberadmitted player count
maxPlayersnumberplayer cap
gamemodestringgamemode name
protocolnumberprotocol version (11)
buildnumberclient build version (10000)
gtaBuildnumbersupported GTA build (3788)
channelstringrelease channel/branch
minClientBuildnumberminimum accepted client build
useEarlyAuthboolearly-auth enabled
earlyAuthUrlstringearly-auth URL
useCloudAuthboolcloud-auth enabled

There is no serverId, identityMode, host/port, connection/queue counts, password state, tags, language, tick rate or streaming distance — only the fields listed above are exposed.

resources/manifest.json

The manifest is built in CResourceManager::BuildManifestJson and served as a string. An empty manifest is returned as {"schema":1,"files":[],"totalFiles":0,"totalBytes":0,"resources":[]}.

Top-level fields:

  • schema — schema version (1)
  • files — flat list of client-accessible files
  • totalFiles, totalBytes — counts across all files
  • resources — list of resources with config

Each files[] entry: resource, path, url, size, stream (bool), sha256 and an optional enc (encryption marker for encrypted-at-rest files).

Each resources[] entry: name, type, clientType, assetsBase, streamBase, an optional clientMain, plus the arrays exports, dependencies, clientFiles, dataFiles ({path, type}) and a config object.

The manifest does not contain an engine version, protocol, server name or gamemode — those values live in the server-info JSON, not the manifest.

Source Backing

This page is derived from src/network/CNetworkManager.cpp (HTTP listener and server-info JSON) and server/src/CResourceManager.cpp (BuildManifestJson).

Varion Multiplayer Platform