Skip to content
Aspen edited this page Oct 15, 2025 · 1 revision

API Reference

Complete API documentation for steamworks.js.

Note: Some Steamworks features (notably legacy P2P networking) are deprecated upstream by Valve in favor of Steam Networking Sockets. Where applicable, this is called out below.


Table of Contents


Initialization

steamworks.init(appId?: number): SteamClient

Initializes the Steamworks API. If appId is omitted, place a steam_appid.txt with the ID in your app directory.

Throws if Steam isn't running or the API fails to init.

const steamworks = require('steamworks.js');
const client = steamworks.init(480);

steamworks.electronEnableSteamOverlay()

Enables the Steam Overlay for Electron. Call after creating your BrowserWindow.

const { BrowserWindow } = require('electron');
const steamworks = require('steamworks.js');
const win = new BrowserWindow(/* ... */);
steamworks.electronEnableSteamOverlay();

Local Player

client.localplayer.getName(): string

Steam persona name of the current user.

client.localplayer.getSteamId(): SteamId

Returns { steamId64: string, accountId: number }.

client.localplayer.getLevel(): number

Steam account level.

client.localplayer.getPlayerCount(): number

Current players for this app (as reported by Steam).


Achievements

client.achievement.activate(id: string): boolean

Unlocks an achievement. Call client.stats.storeStats() to commit.

client.achievement.isActivated(id: string): boolean

Returns whether an achievement is unlocked.

client.achievement.clear(id: string): boolean

Locks an achievement (testing).

client.achievement.clearAll(): boolean

Clears all achievements (testing).

client.achievement.getAchievementNames(): string[]

List of achievement API names for this app.

client.achievement.getAchievement(id: string)

Returns { name: string, description: string, hidden: boolean, achieved: boolean }.


Stats

client.stats.getStatInt(name: string): number

client.stats.getStatFloat(name: string): number

client.stats.setStatInt(name: string, value: number): boolean

client.stats.setStatFloat(name: string, value: number): boolean

client.stats.storeStats(): boolean

Commits pending stat/achievement changes to Steam.

client.stats.resetAllStats(achievementsToo: boolean): boolean

Resets stats (and optionally achievements) — testing only.


Cloud

client.cloud.isEnabledForAccount(): boolean

client.cloud.isEnabledForApp(): boolean

client.cloud.getFileCount(): number

client.cloud.getFileSize(fileName: string): number

client.cloud.fileExists(fileName: string): boolean

client.cloud.readFile(fileName: string): Buffer

client.cloud.writeFile(fileName: string, data: Buffer | string): boolean

client.cloud.deleteFile(fileName: string): boolean


Friends

client.friends.getFriendCount(): number

client.friends.getFriends(): SteamId[]

client.friends.getFriendPersonaName(id: SteamId): string

Rich Presence

client.friends.setRichPresence(key: string, value: string): boolean
client.friends.clearRichPresence(): void

Apps

client.apps.isSubscribedApp(appId: number): boolean

client.apps.isAppInstalled(appId: number): boolean

client.apps.getAppInstallDir(appId: number): string

client.apps.getCurrentGameLanguage(): string

client.apps.getCurrentBetaName(): string


Utils

client.utils.getAppId(): number

client.utils.getCurrentGameLanguage(): string

client.utils.isSteamRunningOnSteamDeck(): boolean

client.utils.getServerRealTime(): number // Unix seconds

client.utils.isSteamInBigPictureMode(): boolean


Overlay

client.overlay.isEnabled(): boolean

client.overlay.activateToWebPage(url: string): void

client.overlay.activateToStore(appId: number, flag: number): void

client.overlay.activateInviteDialog(lobbyId: SteamId): void

client.overlay.setNotificationPosition(pos: number): void


Input

client.input.init(): boolean

client.input.shutdown(): void

client.input.runFrame(): void

client.input.getConnectedControllers(): number[]

client.input.getActionSetHandle(name: string): number

client.input.getDigitalActionData(controller: number, action: number)

Returns { state: boolean, active: boolean }.


UGC / Workshop

client.ugc.subscribeItem(fileId: string, cb: (r) => void): void

client.ugc.unsubscribeItem(fileId: string, cb: (r) => void): void

client.ugc.getNumSubscribedItems(): number

client.ugc.getItemState(fileId: string): number // bitflags

client.ugc.getItemInstallInfo(fileId: string)

Returns { folder: string, sizeOnDisk: number }.


Networking (Legacy P2P)

Upstream Steamworks marks ISteamNetworking P2P as deprecated — prefer Networking Sockets where available.

client.networking.sendP2PPacket(id: SteamId, data: Buffer, sendType: number, channel: number): boolean

client.networking.isP2PPacketAvailable(channel: number): number // size or 0

client.networking.readP2PPacket(size: number, channel: number)

Returns { data: Buffer, steamId: SteamId }.

client.networking.acceptP2PSessionWithUser(id: SteamId): boolean

client.networking.closeP2PSessionWithUser(id: SteamId): boolean


Matchmaking

client.matchmaking.createLobby(type: number, maxMembers: number, cb: (r) => void): void

client.matchmaking.joinLobby(id: SteamId, cb: (r) => void): void

client.matchmaking.leaveLobby(id: SteamId): void

client.matchmaking.getNumLobbyMembers(id: SteamId): number

client.matchmaking.getLobbyMemberByIndex(id: SteamId, index: number): SteamId

client.matchmaking.setLobbyData(id: SteamId, key: string, value: string): boolean

client.matchmaking.getLobbyData(id: SteamId, key: string): string


Screenshots

client.screenshots.writeScreenshot(data: Buffer, width: number, height: number): number

client.screenshots.hookScreenshots(hook: boolean): void

client.screenshots.triggerScreenshot(): void


DLC

client.dlc.getDLCCount(): number

client.dlc.getDLCDataByIndex(index: number)

Returns { appId: number, available: boolean, name: string }.

client.dlc.installDLC(appId: number): void

client.dlc.uninstallDLC(appId: number): void


Type Definitions

SteamId

{
  steamId64: string; // 64-bit ID as string
  accountId: number; // 32-bit account ID
}

SteamClient

Contains the namespaces: localplayer, achievement, stats, cloud, friends, apps, utils, overlay, input, ugc, networking, matchmaking, screenshots, dlc.


References

  • See the repository README for init and overlay details.
  • For a complete, up-to-date function list, check client.d.ts in the repo.

Clone this wiki locally