Erste Schritte

Migrationsleitfaden

Migriere von SteamApis v1 auf v2. Aktualisierte Authentifizierung, Response-Envelope, Steam-User-Feldnamen und eine deutlich größere Endpoint-Oberfläche.

Migration von v1 auf v2

Dieser Leitfaden beschreibt die Änderungen, die du beim Upgrade von SteamApis API v1 auf v2 vornehmen musst. v2 ergänzt neue Kategorien (Konto, Market Data), reorganisiert Steam-User- und App-Endpoints und führt einen einheitlichen Response-Envelope ein.

Authentifizierung

v1 hat den API-Key als Query-Parameter übergeben, typischerweise api_key oder key:

GET /steam/profile/76561198038526790?api_key=YOUR_KEY

v2 übergibt den API-Key über den Request-Header x-api-key (empfohlen) oder den Query-Parameter ?key= (weiterhin unterstützt):

index.js
fetch('https://api.steamapis.com/v2/steam/users/76561198038526790', {
  headers: { 'x-api-key': 'YOUR_KEY' }
})

Der Header wird empfohlen, weil der Key so nicht in Server-Logs, Browser-Historie oder Referer-Headern landet.

Response-Envelope

v1-Endpoints lieferten die Daten direkt auf oberster Ebene zurück:

{
  "steamid": "76561198038526790",
  "personaname": "PEPZ"
}

v2 packt jede Antwort in einen Standard-Envelope. Die genaue Form hängt davon ab, ob der Endpoint eine einzelne Ressource oder eine paginierte Liste zurückgibt:

Einzelne Ressource
{
  "success": true,
  "result": { "steamID": "76561198038526790", "nickname": "PEPZ" }
}
Paginierte Liste
{
  "success": true,
  "results": [ { /* ... */ } ],
  "cursor": "6789abcdef012345",
  "hasMore": true
}

Fehler nutzen denselben Envelope mit success: false:

Fehler
{
  "success": false,
  "error": { "name": "NOT_FOUND", "message": "User not found", "meta": {} }
}

Um an die Daten zu kommen, verwende data.result (einzelne Ressource) oder data.results (Liste), statt die oberste Ebene direkt zu lesen.

Ein paar frühe v2-Endpoint-Dokus verweisen noch auf den alten response-Key statt result. Behandle das als Drift — der maßgebliche Envelope ist { success, result } / { success, results, cursor, hasMore }.

Umbenennungen bei Steam-User-Feldern

Der v2-User-Endpoint liefert dieselben zugrunde liegenden Steam-Daten zurück, aber mit camelCase-Feldnamen und einem verschachtelten avatar-Objekt. Falls du User-Responses parst, aktualisiere deine Typen:

v1-Feldv2-FeldHinweise
steamidsteamIDUmbenannt.
personanamenicknameUmbenannt.
profileurlurlUmbenannt.
personastatepersonaStatecamelCase.
personastateflagspersonaStateFlagscamelCase.
primaryclanidprimaryGroupIDUmbenannt.
timecreatedcreatedTimestampUmbenannt.
loccountrycodecountryCodeUmbenannt.
commentpermission (number)allowsComments (boolean)Typänderung.
communityvisibilitystate (enum)visible (boolean)Auf einen Boolean reduziert.
avatar, avatarmedium, avatarfull, avatarhashavatar.small, avatar.medium, avatar.large, avatar.hashFlache Felder in ein verschachteltes avatar-Objekt verschoben.
profilestate—Entfernt.
—lastLogOffTimestampNeu.

Steam-ID-Parameter

In v1 verlangten User-Endpoints eine SteamID64 (17-stellige numerische ID). In v2 akzeptiert der steamid-Parameter mehrere Steam-ID-Formate — SteamID64, SteamID, SteamID3 — und die API löst sie automatisch auf.

Endpoint-Mapping

Die folgenden Tabellen mappen jeden v1-Endpoint auf sein v2-Gegenstück, gruppiert nach Kategorie. Einträge mit „Neu in v2" haben keinen v1-Vorgänger.

Konto

v1-Endpointv2-EndpointHinweise
—GET /v2/accountNeu in v2. Liefert Balance, Overage-Konfiguration und Abo-Status pro Produkt mit Nutzung im aktuellen Zyklus.

Steam-User

v1-Endpointv2-EndpointHinweise
GET /steam/profile/{SteamID64}GET /v2/steam/users/{steamid}Umbenannt. Auch die Feldnamen haben sich geändert — siehe Umbenennungen bei Steam-User-Feldern.
GET /steam/profile/{SteamID64}/summaryGET /v2/steam/users/{steamid} + GET /v2/steam/users/{steamid}/badgesSummary aufgeteilt. Kernprofil verschmilzt mit dem User-Endpoint; Badges haben ihren eigenen Endpoint.
GET /steam/profile/{SteamID64}/gamesGET /v2/steam/users/{steamid}/gamesPfad geändert.
GET /steam/profile/vanity/{VanityName}GET /v2/steam/users/vanity/{vanityUrl}Pfad geändert.
GET /steam/inventory/{SteamID64}/{AppId}/{ContextId}GET /v2/steam/users/{steamid}/inventory/{appId}/{contextId}Pfad geändert (Inventory-Endpoint bleibt unter Steam-Usern).
—GET /v2/steam/users/{steamid}/bansNeu in v2. Dedizierter Ban-Status-Endpoint.
—GET /v2/steam/users/{steamid}/recently-playedNeu in v2. In den letzten zwei Wochen gespielte Spiele mit Minuten pro Plattform.
—GET /v2/steam/users/{steamid}/achievements/{appid}Neu in v2. Pro-Spiel-Erfolge mit Freischalt-Zeitstempeln.
—GET /v2/steam/users/{steamid}/stats/{appid}Neu in v2. Pro-Spiel-Stats und freigeschaltete Erfolge.
—GET /v2/steam/users/{steamid}/friendsNeu in v2. Freundesliste mit Freundschafts-Zeitstempeln.
—GET /v2/steam/users/{steamid}/groupsNeu in v2. Gruppen, in denen der Benutzer Mitglied ist.

Steam-Apps

v1-Endpointv2-EndpointHinweise
GET /market/appsGET /v2/steam/appsUmbenannt und umgebaut. Gibt eine paginierte Liste aller getrackten Steam-Apps zurück. Nutze cursor zur Paginierung.
GET /market/app/{AppID}GET /v2/steam/apps/{appId}Umbenannt. App-Details (Name, Typ, Last Modified usw.).
GET /market/stats—Kein direktes Gegenstück. Die nächstgelegenen Äquivalente sind GET /v2/steam/apps/player-counts und GET /v2/steam/apps/store/rankings/{type}.
—GET /v2/steam/apps/player-countsNeu in v2. Aktuelle Concurrent-Spielerzahlen pro App, paginiert.
—GET /v2/steam/apps/{appId}/changesNeu in v2. App-Changelog.
—GET /v2/steam/apps/{appId}/global-achievementsNeu in v2. Globaler Freischalt-Prozentsatz pro Erfolg.
—GET /v2/steam/apps/{appId}/newsNeu in v2. Aggregierte Community Announcements und externe Presseberichte.
—GET /v2/steam/apps/{appId}/schemaNeu in v2. Vollständiges Stats-/Erfolg-Schema (Anzeigenamen, Beschreibungen, Icon-URLs).
—GET /v2/steam/apps/store/rankings/{type}Neu in v2. Steam-Store-Ranking-Listen (popularnew, topsellers, popularcomingsoon, specials, trendingfree, mostplayed).

Steam-Items

v1-Endpointv2-EndpointHinweise
GET /market/items/{AppID}GET /v2/steam/itemsUmbenannt und umgebaut. Paginierte Liste aller getrackten Items; filter nach appId.
GET /market/item/{AppID}/{MarketHashName}GET /v2/steam/items/{appId}/{marketHashName}Pfad geändert. Einzelnes Item mit aktuellem Preis/Volumen.
GET /market/items/{AppID}/histogramsGET /v2/steam/items/{itemId}/histogramsPfad geändert. Jetzt über die interne itemId statt appId.
GET /market/items/{AppID}/descriptions—Entfernt. Steam-Beschreibungen werden nicht mehr als eigenständiger Endpoint angeboten.
GET /market/items/cards—Entfernt. Kein direktes Gegenstück.
GET /market/items/{AppID}/assetinfos—Entfernt.
—GET /v2/steam/items/{itemId}/metaNeu in v2. Item-Metadaten (Typ, Tags, Beschreibung).
—GET /v2/steam/items/{itemId}/pricesNeu in v2. Zeitreihe der Preishistorie des Items.
—GET /v2/steam/items/{itemId}/changesNeu in v2. Item-Changelog.
—GET /v2/steam/items/{appId}/listNeu in v2. Vorgefertigte Bulk-Preisliste für den gesamten Markt einer App (302-Redirect auf eine CDN-Datei).

Bilder

v1-Endpointv2-EndpointHinweise
GET /image/item/{AppID}/{MarketHashName}—Entfernt. Konstruiere Steam-CDN-URLs direkt aus den Hash-Feldern des Items.
GET /image/items/{AppID}—Entfernt.

Market Data (Drittanbieter-Marktplätze)

Market Data ist eine neue Kategorie in v2. Sie aggregiert Preis-, Angebots-, Verkaufs- und Order-Book-Daten von 26 Drittanbieter-Marktplätzen — Funktionalität, die es in v1 nicht gab.

Market-Data-Endpoints werden unter https://marketplaceapi.steamapis.com/ gehostet — eine andere Base-URL als die Haupt-API (https://api.steamapis.com/).

Zusätzlich zu den REST-Endpoints unten stellt v2 auch einen Echtzeit-WebSocket-Offer-Stream bereit:

v1-Endpointv2-EndpointProtokollHinweise
—wss://marketplaceapi.steamapis.com/ws/v2/offersWebSocketNeu in v2. Pusht einzelne Marktplatz-Listings, sobald sie erkannt werden.
v1-Endpointv2-EndpointHinweise
—GET /v2/marketplacesNeu in v2. Liste der unterstützten Marktplätze.
—GET /v2/itemsNeu in v2. Einzelnes Item über mehrere Marktplätze hinweg.
—GET /v2/items/searchNeu in v2. Items nach Name suchen.
—GET /v2/items/compareNeu in v2. Ein Item über Marktplätze hinweg vergleichen.
—GET /v2/buy-ordersNeu in v2.
—GET /v2/price-historyNeu in v2. Preishistorie-Zeitreihe.
—GET /v2/salesNeu in v2. Aktuelle Verkäufe.

Zusammenfassung der Breaking Changes

  1. Authentifizierung — API-Key vom api_key-Query-Parameter in den x-api-key-Request-Header umziehen (oder als ?key= belassen, wenn Header-Zugriff nicht praktikabel ist).
  2. Response-Envelope — data.result (einzelne Ressource) oder data.results (Liste) auspacken, statt die oberste Ebene direkt zu lesen. Paginierte Listen-Responses enthalten zusätzlich cursor und hasMore.
  3. Steam-User-Felder — steamid → steamID, personaname → nickname, profileurl → url und weitere umbenennen (siehe vollständige Tabelle oben). Flache Avatar-Felder in ein verschachteltes avatar-Objekt verschoben.
  4. Endpoint-Pfade — Steam-User-Endpoints liegen jetzt unter /v2/steam/users/, App-Endpoints unter /v2/steam/apps/, Item-Endpoints unter /v2/steam/items/.
  5. Steam-ID-Eingabe — v2 akzeptiert mehrere Steam-ID-Formate, nicht nur SteamID64.
  6. Neue Endpoints — Konto, Bans, Recently Played, Achievements, Stats, Friends, Groups, Player Counts, Global Achievements, News, Schema, Store Rankings, Item-Liste und die komplette Market-Data-Kategorie.
  7. Fehlerformat — Fehler liefern { "success": false, "error": { "name": "...", "message": "...", "meta": ... } } statt eines pro Endpoint abweichenden Formats.