Öffentliche API
Strukturierter, schreibgeschützter Zugriff auf Community-Kompatibilitätsberichte zu Karten, Bussen, Fahrzeugen, Mods, Objekten, Plugins und Tools, die auf openOMSI laufen. Gedacht für openOMSI-Entwickler, Analysewerkzeuge, Bots und Integrationen.
Dies ist KEINE API zum Melden von openOMSI-Bugs. Bugs der Engine selbst gehören in die offiziellen Kanäle des Projekts. Hier lesen Sie nur, was die Community getestet hat.
⚠ RATE-LIMIT DER ÖFFENTLICHEN API
6 Anfragen pro IP alle 60 Minuten
Diese API ist absichtlich stark begrenzt, weil sie öffentlich ist und keine Authentifizierung erfordert.
- Entwerfen Sie Integrationen so, dass Antworten lokal zwischengespeichert werden.
- Fragen Sie die API nicht dauerhaft ab (Polling).
- Nutzen Sie nach Möglichkeit aggregierte Endpunkte: ein Aufruf beantwortet die meisten Fragen.
Das Limit gilt gemeinsam für alle öffentlichen Endpunkte und nur für externe Nutzer; die Website selbst verbraucht dieses Kontingent nicht.
Schnellstart
Basis-URL: https://openomsi.omsimods.com.br/api/public/v1. Alles ist JSON, nur GET, keine Authentifizierung. Beginnen Sie mit dem Endpunkt meta, um die genauen von den Filtern akzeptierten Werte zu ermitteln.
curl https://openomsi.omsimods.com.br/api/public/v1/meta
curl "https://openomsi.omsimods.com.br/api/public/v1/content?q=millennium&type=VEHICLE"
OpenAPI (JSON)
Rate-Limit, Header und Fehler
- Jede Antwort enthält RateLimit-Limit, RateLimit-Remaining und RateLimit-Reset. Nach Überschreiten des Limits antwortet die API mit 429 und Retry-After (Sekunden).
- Bedingte Anfragen (If-None-Match / If-Modified-Since) liefern 304 ohne Body, aber ein 304 zählt trotzdem auf das Kontingent.
- Fehler verwenden immer dasselbe Format {"error": code, "message": text}; Status 400, 404, 429 und 500. Stack Traces werden nie zurückgegeben.
HTTP/1.1 429 Too Many Requests
Retry-After: 1234
RateLimit-Limit: 6
RateLimit-Remaining: 0
RateLimit-Reset: 1234
{
"error": "rate_limit_exceeded",
"message": "Public API limit reached. Try again later.",
"retry_after": 1234
}Praktische Anwendungsfälle
Die Beispielwerte sind illustrativ; die Struktur der Antworten ist echt.
1. Läuft Grand Paris Moulon unter Windows?
Ein Aufruf liefert die Zusammenfassung nach Plattform, Problemkategorien, FPS-Verteilung, getestete Versionen und die neuesten Berichte. Lesen Sie compatibility.by_platform.WINDOWS.
GET https://openomsi.omsimods.com.br/api/public/v1/content/grand-paris-moulon
Antwort (gekürzt)
{
"compatibility": {
"total_reports": 4,
"works": 2,
"works_with_issues": 2,
"does_not_work": 0,
"inconclusive": 0,
"low_data": false,
"by_platform": {
"WINDOWS": {
"reports": 4,
"works": 2,
"works_with_issues": 2,
"does_not_work": 0,
"inconclusive": 0,
"latest_tested_openomsi_version": "0.1.126",
"fps": {
"samples": 3,
"median": 38,
"min": 28,
"max": 60
}
}
}
},
"issues": {
"by_category": {
"TEXTURES": 2,
"SCRIPTS": 1
},
"reports_with_issues": 2
},
"performance": {
"source": "user_reported",
"fps": {
"samples": 3,
"median": 38,
"min": 28,
"max": 60
},
"load_time_seconds": {
"samples": 2,
"median": 95,
"min": 80,
"max": 110
}
},
"latest_tested_openomsi_version": "0.1.126"
}2. Auf Android getestete Karten auflisten
Filtern Sie nach Typ und Plattform. Jeder Eintrag enthält bereits Summen, getestete Plattformen und die zuletzt getestete openOMSI-Version.
GET https://openomsi.omsimods.com.br/api/public/v1/content?type=MAP&platform=ANDROID&sort=reports&limit=20
Antwort (gekürzt)
{
"data": [
{
"id": "cm0millennium1",
"slug": "mapa-brigadeiro-sampaio",
"name": "Mapa Brigadeiro Sampaio",
"type": "MAP",
"author": null,
"current_version": null,
"url": "https://openomsi.omsimods.com.br/conteudo/caio-millennium-brt-i-o500u",
"source_url": "https://omsimods.com.br/",
"image_url": null,
"omsimodsbr_verified": true,
"reports": {
"total": 3,
"works": 0,
"works_with_issues": 3,
"does_not_work": 0,
"inconclusive": 0,
"by_platform": {
"WINDOWS": {
"reports": 3,
"works": 0,
"works_with_issues": 3,
"does_not_work": 0,
"inconclusive": 0
}
}
},
"reports_with_issues": 3,
"latest_tested_openomsi_version": "0.1.126",
"latest_test_at": "2026-09-29T15:20:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"pages": 1
}
}3. Als openOMSI-Entwickler Texturprobleme in der aktuellen Version anzeigen
Filtern Sie Berichte nach openOMSI-Version und Problemkategorie. Jeder Bericht listet strukturierte issue_categories sowie die Beschreibung des Testers.
GET https://openomsi.omsimods.com.br/api/public/v1/reports?openomsi_version=0.1.126&issue_category=TEXTURES&limit=50
Antwort (gekürzt)
{
"data": [
{
"id": "cm0report0001",
"content": {
"id": "cm0grandparis01",
"slug": "grand-paris-moulon",
"name": "Grand Paris Moulon",
"type": "MAP"
},
"content_version": null,
"openomsi_version": "0.1.126",
"platform": "WINDOWS",
"architecture": "X64",
"result": "WORKS_WITH_ISSUES",
"fps": {
"avg": 41,
"min": 28,
"max": 60
},
"load_time_seconds": 95,
"device": {
"label": "Desktop GTX 1060",
"model": null,
"os_version": "Windows 11",
"cpu": "Ryzen 5 3600",
"gpu": "GTX 1060 6GB",
"ram_gb": 16
},
"issue_categories": [
"TEXTURES"
],
"issue_description": "Windows of some black buses render with wrong textures.",
"notes": null,
"tested_at": "2026-09-29T17:02:00.000Z",
"screenshot_url": null,
"author": {
"display_name": "tester"
}
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"pages": 1
}
}4. Eine mögliche Regression zwischen Versionen erkennen
compare zeigt einen Inhalt nebeneinander in zwei Versionen; regressions listet jeden Inhalt auf, der früher funktionierte und jetzt Probleme meldet. Die Ergebnisse sind nur mögliche Regressionen, nie bestätigte.
GET https://openomsi.omsimods.com.br/api/public/v1/compatibility/compare?content=grand-paris-moulon&from=0.1.121&to=0.1.126
GET https://openomsi.omsimods.com.br/api/public/v1/compatibility/regressions?from=0.1.121&to=0.1.126&type=BUS
Antwort (gekürzt)
{
"changes": [
{
"platform": "WINDOWS",
"from": {
"works": 3,
"works_with_issues": 0,
"does_not_work": 0,
"inconclusive": 0
},
"to": {
"works": 1,
"works_with_issues": 3,
"does_not_work": 0,
"inconclusive": 0
},
"from_reports": 3,
"to_reports": 4,
"possible_regression": true
}
],
"possible_regression": true
}5. Einen Discord-Bot speisen
Suchen Sie nach dem Namen und bauen Sie die Antwort aus dem ersten Eintrag: Name, Plattform, Ergebnis, zuletzt getestete Version und Anzahl der Berichte. Speichern Sie sie auf Ihrer Seite im Cache.
GET https://openomsi.omsimods.com.br/api/public/v1/content?q=grand%20paris&platform=WINDOWS&limit=1
Antwort (gekürzt)
{
"data": [
{
"name": "Grand Paris Moulon",
"reports": {
"total": 4,
"works": 2,
"works_with_issues": 2
},
"latest_tested_openomsi_version": "0.1.126"
}
]
}Vorgeschlagene Bot-Antwort
Grand Paris Moulon
Windows
⚠ Funktioniert mit Problemen
Zuletzt getestet: 0.1.126
Berichte: 4
6. Welche Probleme werden auf Android am häufigsten gemeldet?
Der Endpunkt issues aggregiert Kategorien mit der Anzahl der Berichte und der unterschiedlichen Inhalte; der Plattform-Endpunkt ergänzt die am häufigsten gemeldeten Geräte und FPS.
GET https://openomsi.omsimods.com.br/api/public/v1/issues?platform=ANDROID&openomsi_version=0.1.126
GET https://openomsi.omsimods.com.br/api/public/v1/platforms/android
Antwort (gekürzt)
{
"data": [
{
"category": "TEXTURES",
"reports": 31,
"contents": 18
},
{
"category": "PHYSICS",
"reports": 22,
"contents": 14
}
]
}7. Aktuelles Release und Downloads
releases/latest liefert die Version, das Veröffentlichungsdatum, die GitHub-URL und die offiziellen Download-Dateien nach Plattform und Architektur.
GET https://openomsi.omsimods.com.br/api/public/v1/releases/latest
Antwort (gekürzt)
{
"version": "0.1.126",
"published_at": "2026-09-27T20:11:00.000Z",
"github_url": "https://github.com/openOMSI-org/openOMSI/releases/tag/v0.1.126",
"assets": [
{
"key": "android-arm64",
"label": "Android ARM64",
"platform": "ANDROID",
"architecture": "ARM64",
"type": "CLIENT",
"name": "openOMSI-android-arm64.apk",
"download_url": "https://github.com/openOMSI-org/openOMSI/releases/download/v0.1.126/openOMSI-android-arm64.apk",
"size_bytes": 152043520
}
]
}8. Inhalte finden, die noch niemand getestet hat
has_reports=false listet freigegebene Inhalte ohne Berichte; kombinieren Sie es mit type oder q.
GET https://openomsi.omsimods.com.br/api/public/v1/content?has_reports=false&type=MAP&limit=50
Antwort (gekürzt)
{
"data": [
{
"name": "…",
"type": "MAP",
"reports": {
"total": 0
}
}
],
"pagination": {
"page": 1,
"limit": 50,
"total": 312,
"pages": 7
}
}Endpunkte
Alle Pfade beginnen mit https://openomsi.omsimods.com.br/api/public/v1. Die vollständige maschinenlesbare Beschreibung ist das OpenAPI-Dokument.
| Endpunkt | Was er liefert |
|---|
GET /meta | Taxonomien, Limits und API-Version. |
GET /status | Betriebsprüfung (ebenfalls limitiert: nicht per Polling abfragen). |
GET /content | Inhaltssuche mit Berichtssummen, getesteten Plattformen und zuletzt getesteter Version pro Eintrag. |
GET /content/{slug} | Ein Inhalt in einem einzigen Aufruf: Quellen, Kompatibilität, Probleme, Performance, getestete Versionen, Geräte und neueste Berichte. |
GET /reports | Einzelne Berichte mit strukturierten Problemkategorien, FPS, Hardware und Daten. |
GET /compatibility | Aggregat nach openOMSI-Version, Plattform oder Inhaltstyp. |
GET /compatibility/compare | Ein Inhalt im Vergleich zwischen zwei openOMSI-Versionen. |
GET /compatibility/regressions | Mögliche Regressionen zwischen aufeinanderfolgend getesteten Versionen. |
GET /issues | Problemkategorien, sortiert nach Berichten und betroffenen Inhalten. |
GET /platforms/{platform} | Aggregat für eine Plattform (android, windows, linux, macos). |
GET /devices | Von Testern angegebene Hardware, gruppiert und gezählt. |
GET /runtime-reports | Gerätetests von openOMSI selbst (die Sitzung ist womöglich nie gestartet): Hardware, Betriebssystem, wie weit der Start kam, Grafik-API, bereinigter Fehlertext und optional ein bereinigtes Log. Ohne Inhalte. |
GET /runtime-reports/{id} | Ein Gerätetest, mit seinem bereinigten Log, falls vorhanden. |
GET /releases/latest | Aktuelles Release und offizielle Download-Dateien. |
GET /releases | Paginierter Release-Verlauf. |
Gerätetests geben nie das Original-Log, IP-Adressen, E-Mail-Adressen, Benutzernamen oder Konto-Kennungen preis: nur technische Daten und das bereinigte Log. Es sind Beobachtungen der Community, kein Benchmark und keine offizielle Anforderung.
Filter, Paginierung, Sortierung und Felder
- Paginierung: page (ab 1) und limit (Standard 20, maximal 50). Listen antworten mit {"data": [...], "pagination": {page, limit, total, pages}}.
- Sortierung: sort = reports, recent, name, latest_test oder issues; order = asc oder desc.
- Das optionale fields=name,slug,type behält pro Eintrag nur diese Felder der obersten Ebene. Die Standardantwort ist bereits vollständig.
- Enum-Filter unterscheiden nicht zwischen Groß- und Kleinschreibung und akzeptieren kommagetrennte Listen (platform=ANDROID,WINDOWS).
- Wenn bei der Inhaltssuche Berichtsfilter (platform, result, openomsi_version, issue_category) verwendet werden, beziehen sich die Zählungen auf die passenden Berichte.
Parameter
| Parameter | Beschreibung |
|---|
q | Textsuche in Namen und Aliassen der Inhalte. |
type | Inhaltstyp. Kommagetrennte Liste möglich. |
platform | Plattform des Berichts. Kommagetrennte Liste möglich. |
result | Vom Tester gemeldetes Ergebnis. Kommagetrennte Liste möglich. |
openomsi_version | openOMSI-Version, auf der der Test lief. |
issue_category | Dem Bericht zugeordnete Problemkategorie (AUDIO wird als Alias von SOUND akzeptiert). Kommagetrennte Liste möglich. |
author | Autor des Inhalts (Teilübereinstimmung). |
has_reports | true: nur getestete Inhalte; false: nur Inhalte, die noch niemand getestet hat. |
sort | Sortierfeld. |
order | Sortierrichtung. |
page | Seitennummer, beginnend bei 1. |
limit | Einträge pro Seite (maximal 50). |
fields | Kommagetrennte Felder der obersten Ebene, die in jedem Eintrag behalten werden (optional; standardmäßig der vollständige Eintrag). |
content | Slug oder ID des Inhalts (exakt) oder Teil seines Namens. |
architecture | CPU-Architektur des Berichts. Kommagetrennte Liste möglich. |
device | Text, der im Gerätenamen enthalten ist. |
has_fps | Nur Berichte mit (true) oder ohne (false) FPS-Wert. |
from | reports: getestet an oder nach diesem ISO-Datum. compare/regressions: ältere openOMSI-Version. |
to | reports: getestet an oder vor diesem ISO-Datum. compare/regressions: neuere openOMSI-Version. |
startup_stage | Wie weit openOMSI auf dem Gerät gekommen ist. Kommagetrennte Liste möglich. |
graphics_backend | Vom Tester gewählte Grafik-API. Kommagetrennte Liste möglich. |
gpu | Text, der im GPU-Namen enthalten ist. |
cpu | Text, der im CPU-Namen enthalten ist. |
manufacturer | Hersteller des Geräts (Teilübereinstimmung). |
device_model | Modell des Geräts (Teilübereinstimmung). |
os_version | Version des Betriebssystems (Teilübereinstimmung). |
media_indexing_observed | Android: Der Tester hat gemeldet, dass die Galerie oder der Medien-Scanner OMSI-Bilder indexiert hat (true) oder nicht (false). |
has_log | Nur Tests mit (true) oder ohne (false) bereinigtes Log. |
include_log | Nimmt sanitized_log in jeden Eintrag auf (Standard false: die Liste enthält nur has_sanitized_log). |
Enums / Taxonomien
Aus den eigenen Listen der Anwendung erzeugt. AUDIO wird in Filtern als Alias von SOUND akzeptiert.
ContentType
ADDONMAPBUSVEHICLEMODSCENERYOBJECTSPLINEPLUGINTOOLOTHER
CompatibilityResult
WORKSWORKS_WITH_ISSUESDOES_NOT_WORKINCONCLUSIVE
Platform
ANDROIDWINDOWSLINUXMACOS
Architecture
X86X64ARM64UNKNOWN
IssueCategory
GRAPHICSTEXTURESPHYSICSSCRIPTSSOUNDCOLLISIONSPERFORMANCELOADINGCONTROLSMULTIPLAYERINTERFACECRASHOTHER
Performance-Daten
FPS und Ladezeiten sind VON NUTZERN GEMELDETE Daten, kein kontrollierter Benchmark. Die Statistiken verwenden zuerst den Median und enthalten immer die Stichprobengröße (samples) sowie Minimum und Maximum.
Cache, CORS und Versionierung
- Antworten enthalten Cache-Control, ETag und Last-Modified. Browser dürfen sie einige Minuten wiederverwenden; gemeinsam genutzte Caches müssen neu validieren, damit das Kontingent immer durchgesetzt wird.
- CORS ist nur für GET, HEAD und OPTIONS offen. Es gibt keine schreibenden Methoden.
- Die API ist im Pfad versioniert (/api/public/v1). Ältere Pfade ohne Version leiten (308) auf v1 um. Inkompatible Änderungen erscheinen nur als neue Version.
- Die Website openOMSI Compatibility liest ihre eigene Datenbank direkt und verbraucht diese API oder ihr Kontingent nie.
Richtlinien für Integrationen
- Daten lokal zwischenspeichern.
- Polling vermeiden; nur bei Bedarf abfragen.
- Aggregierte Endpunkte nutzen (Inhaltsdetail, compatibility, issues, platforms).
- Retry-After und die RateLimit-*-Header beachten.
- Kein HTML-Scraping, wenn die API gleichwertige Daten bietet.
- Aus Community-Berichten keine bestätigten Engine-Bugs ableiten.
- Die openOMSI-Version in Ihren Analysen stets mitführen.
Über die Daten
Community-Berichte sind Beobachtungen, keine verbindliche Kompatibilitätszertifizierung. Ein einzelner Bericht bedeutet weder "dieser Mod ist kompatibel" noch "das ist ein openOMSI-Bug". Berücksichtigen Sie Stichprobenanzahl, openOMSI-Version, Plattform, Hardware, Inhaltsversion, Problemkategorie und die Konsistenz zwischen Berichten.
Datenschutz
Antworten enthalten nie Discord-IDs, E-Mail-Adressen, IP-Adressen, Sitzungen, Benachrichtigungsabonnements, Moderationsdaten oder Gerätekennungen. Berichte zeigen nur den öffentlichen Anzeigenamen und die Hardware, die der Tester veröffentlichen wollte. In einem Bericht ist issue_categories strukturiert, während issue_description die einzelne Freitextbeschreibung des Testers für den gesamten Bericht ist.
https://openomsi.omsimods.com.br/api/openapi.json