Jump to content

SimTX API v24/Public endpoints

From SimTX Wiki
Revision as of 16:27, 24 October 2026 by Clanker (talk | contribs) (Archive the v24 protocol reference: use the v24 templates, links and categories)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
This page documents protocol v24, which current servers no longer accept. See SimTX API for v25.

The account service exposes a handful of public endpoints that need no credential. They serve service status, public profiles, transmitter releases and a simple network test. All are on https://auth.simtx.net; rate limits are listed on the account service page.

Service status[edit | edit source]

GET /api/v1/status

{ "status": "operational" }

The response indicates only that the account service process is up and answering. It says nothing about game servers; use the server directory for that. Not rate limited.

Public profiles[edit | edit source]

Every active account has a public profile consisting of its handle, display name, join date, public badges and visible awards. Nothing else about an account is public.

Profile search[edit | edit source]

GET /api/v1/profiles?q=text

Parameter Description
q Case-insensitive substring matched against handles and display names. Optional; an empty query lists accounts alphabetically.

Returns at most 24 profiles. An exact handle match is listed first, then the rest ordered by handle.

{
  "profiles": [
    {
      "handle": "n0call",
      "displayName": "Example Operator",
      "joinedAt": "2026-08-20T09:12:44.100000Z",
      "badges": [
        { "roleKey": "SUPPORTER", "label": "Supporter", "color": "#e0b04c" }
      ]
    }
  ]
}
Field Type Description
handle string Unique handle. Users may change it, at most once every 30 days.
displayName string Free-form display name.
joinedAt string Account creation time.
badges array Public role badges, sorted by label.
badges[].roleKey string Stable role identifier, for example SUPPORTER or MODERATOR.
badges[].label string Text to display.
badges[].color string CSS colour for the badge, usually #rrggbb.

Single profile[edit | edit source]

GET /api/v1/profiles/{handle}

Returns the same fields as a search result plus awards. Unknown handles return 404 profile_not_found.

Field Type Description
awards[].awardId string (UUID) Award definition.
awards[].accountAwardId string (UUID) This particular grant.
awards[].slug string Stable short identifier of the award.
awards[].name string Display name.
awards[].description string Description.
awards[].iconUrl string Icon image URL. May be empty.
awards[].grantedAt string When the award was granted.
awards[].visible boolean Whether the user shows it on their profile. Only visible awards are returned here.
awards[].displayOrder integer Order chosen by the user; lower first.
awards[].revokedAt string or null Always null for awards returned here.

Releases[edit | edit source]

GET /api/v1/releases

Lists published releases of the official SimTX Transmitter, newest first.

{
  "releases": [
    {
      "releaseId": "7edca7c6-97ca-4291-9691-3f0a5cd41a20",
      "version": "0.3.7",
      "title": "SimTX 0.3.7",
      "notes": ["WFM now accepts baseband directly.", "Added rate selection up to 384 kHz."],
      "downloadUrl": "/downloads/simtx-transmitter-0.3.7.jar",
      "artifactFilename": "simtx-transmitter-0.3.7.jar",
      "artifactSize": 8087129,
      "artifactSha256": "8632bc25e1271146c8638c2780e4a6bdb40379d0dd7cae8f0631f8e16b5da69b",
      "published": true,
      "createdAt": "2026-09-14T19:37:41.639246Z",
      "updatedAt": "2026-09-14T19:38:53.435832Z",
      "publishedAt": "2026-09-14T19:37:41.639246Z"
    }
  ]
}
Field Type Description
version string Version number.
title string Release title.
notes array of string Change notes, one entry per item.
downloadUrl string or null Download location. A value starting with / is relative to https://auth.simtx.net; otherwise it is an absolute URL.
artifactFilename, artifactSize, artifactSha256 string, integer, string File name, size in bytes and lowercase hex SHA-256 of the download. Verify the hash after downloading.
published boolean Always true here.
createdAt, updatedAt, publishedAt string Timestamps.

Release downloads[edit | edit source]

GET /downloads/{filename} returns the stored file with Content-Disposition: attachment, an ETag equal to the quoted SHA-256, and Cache-Control: public, max-age=300. Unknown files return 404 release_artifact_not_found.

Update manifest[edit | edit source]

GET /downloads/transmitter-update.properties returns the newest downloadable release as a Java properties file (text/plain; charset=utf-8, cached for 60 seconds). The official transmitter uses it for update checks.

version=0.3.7
url=/downloads/simtx-transmitter-0.3.7.jar
sha256=8632bc25e1271146c8638c2780e4a6bdb40379d0dd7cae8f0631f8e16b5da69b
notes=WFM now accepts baseband directly. · Added rate selection up to 384 kHz.

The notes of the release are joined with · on a single line. Returns 404 release_manifest_unavailable when no release has a download.

Network test[edit | edit source]

Two endpoints let a client estimate latency and upload bandwidth to SimTX infrastructure. The SimTX website's network test uses them.

Latency probe[edit | edit source]

GET /api/v1/network-test/ping

{ "serverTimeMillis": 1793016000000 }

serverTimeMillis is the server's clock in Unix milliseconds. Measure the round-trip time on the client side. Rate limit: 60 per minute.

Upload probe[edit | edit source]

POST /api/v1/network-test/upload with Content-Type: application/octet-stream and a body of 1 byte to 1 MiB (1,048,576 bytes). The Content-Length header is required.

{ "receivedBytes": 1048576, "serverReadMillis": 412.7 }
Field Description
receivedBytes Number of body bytes read.
serverReadMillis Time the server spent reading the body, in milliseconds.

Errors: 415 network_test_content_type for any other content type, 413 network_test_chunk_size for an empty, missing-length or oversized body. Rate limit: 144 per minute.

SimTX API v24 reference (protocol v24, archived)
Start OverviewQuick startData typesLimits and errorsPacket list
Account service OverviewDevice loginServer directoryGame ticketsPermissionsPublic endpoints
Game protocol Connection and handshakeReceiver sessionTransmitter sessionControl sessionCatalogModeration
Handshake HandshakeHandshakeResult
Receiver ReceiverSessionRequestReceiverRetuneForwardedClientAddressIqStreamDescriptorIqBlockTimedIqBlock
Transmitter TransmitterSessionRequestSampleBlockTxModeInfoTxUpdateTxQueueTxAcceptTxRejectTxKickTxTelemetryTxUpdateAck
Control ControlAckBannerListStationsStationListServerHealthRequestServerHealthReportCoverageMapRequestCoverageMapResponseWeatherMapRequestWeatherMapResponseStartMonitorStopMonitorMonitorBlockMonitorEnd
Catalog CatalogListRequestCatalogListCatalogFetchCatalogEntryCatalogUploadCatalogUploadResultCatalogDeleteCatalogDeleteResult
Moderation KickRequestKickResultIpModerationRequestIpModerationResultBroadcastBannerModerationErrorStationImpactList
Current Protocol v25 reference