{"id":15139574,"url":"https://github.com/solitarju/vrchat-api-library","last_synced_at":"2025-10-23T15:31:45.493Z","repository":{"id":152243580,"uuid":"625625607","full_name":"Solitarju/vrchat-api-library","owner":"Solitarju","description":"🔥🔥 Your All-in-One Node.js API Solution for Seamless Interaction with VRChat's REST API and real-time events using Websockets! ✅✅","archived":false,"fork":false,"pushed_at":"2024-03-12T15:57:46.000Z","size":220,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-29T21:10:31.623Z","etag":null,"topics":["api","api-wrapper","authentication","client","http","integration","javascript","library","nodejs","rest","vrchat","websocket"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Solitarju.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-09T17:33:09.000Z","updated_at":"2024-03-18T20:19:46.000Z","dependencies_parsed_at":"2023-10-22T18:23:37.165Z","dependency_job_id":"6cc57411-f9a0-4466-8809-1e80e4141e6d","html_url":"https://github.com/Solitarju/vrchat-api-library","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Solitarju%2Fvrchat-api-library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Solitarju%2Fvrchat-api-library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Solitarju%2Fvrchat-api-library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Solitarju%2Fvrchat-api-library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Solitarju","download_url":"https://codeload.github.com/Solitarju/vrchat-api-library/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237852445,"owners_count":19376684,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","api-wrapper","authentication","client","http","integration","javascript","library","nodejs","rest","vrchat","websocket"],"created_at":"2024-09-26T08:01:05.390Z","updated_at":"2025-10-23T15:31:45.487Z","avatar_url":"https://github.com/Solitarju.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"**DEPRECATION NOTICE:** This repository is largely unmaintained and no longer receives updates to keep in-sync \u0026 compatible with VRChat's internal API. \n\nIf you encounter any problems feel free to open an issue/PR, however I do not have the same interest or motivations for this project that I had in the past, and will not make major efforts towards it.\n\n# VRChat API Library\n\nVRChat API Library is a Node.js library that allows easy integration of the VRChat API into your applications.  \n\nIt provides real-time event handling through WebSockets, and REST API. \nAll endpoints and API sections are built according to the **community driven** [VRChat API Docs](https://vrchatapi.github.io/docs/api/).\n\nFeel free to reach out on the Discord server below for support or inquiries.  \n\nAll dates in this document are formatted as YYYY-MM-DD (ISO 8601).  \n\n\u003cdiv align=\"center\"\u003e\n  \u003ca style=\"text-decoration: none;\" href=\"https://github.com/Solitarju/vrchat-api-library\"\u003e\n    \u003cimg alt=\"GitHub\" src=\"https://img.shields.io/github/license/Solitarju/vrchat-api-library?logo=github\u0026label=GitHub\u0026link=https%3A%2F%2Fgithub.com%2FSolitarju%2Fvrchat-api-library\"\u003e\n  \u003c/a\u003e\n  \u003ca style=\"text-decoration: none;\" href=\"https://www.npmjs.com/package/vrchat-api-library\"\u003e\n    \u003cimg alt=\"NPM\" src=\"https://img.shields.io/npm/l/vrchat-api-library?logo=npm\u0026label=npm\u0026link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fvrchat-api-library\"\u003e\n  \u003c/a\u003e\n  \u003ca style=\"text-decoration: none;\" href=\"https://discord.gg/ER3Z7NBzvv\"\u003e\n  \u003cimg alt=\"Discord\" src=\"https://img.shields.io/discord/1163384360314081342?logo=discord\u0026label=Discord\u0026color=0%2C%200%2C%20255\u0026link=https%3A%2F%2Fdiscord.gg%2FER3Z7NBzvv\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n## Table of Contents\n\n- [Disclaimer](#disclaimer)\n- [Installation](#installation)  \n- [Getting Started](#getting-started)\n- [Classes/API Coverage](#classesapi-coverage)\n- [License Change](#license-change-2024-03-12--v200)\n- [TODO](#todo)\n- [Changelog](#changelog)\n\n## Disclaimer\n\n**Official Disclaimer from VRChat (Tupper):**  \nUse of the VRChat API using applications other than the approved methods (website, VRChat application) is not officially supported. When using the API, please adhere to the following guidelines:\n\n- We do not provide documentation or support for the API.\n- Do not make queries to the API more than once per 60 seconds.\n- Abuse of the API may result in account termination.\n- Access to API endpoints may break at any given time, with no warning.\n\n## Introduction\n\nVRChat API Library is a Node.js module that streamlines integration with the VRChat platform.  \n\nIt allows you to interact with VRChat's APIs, enabling essential features and offering QOL utilities \u0026 improvements, such as:  \n\n1. Setting \u0026 retrieving user information.\n2. Real-time events.\n3. Custom implemented user-online / user-offline events.  \n4. QOL duplicate event prevention.\n\nEach API section and endpoints are mostly built in reference to the **community-driven** [**VRChat API Docs**](https://vrchatapi.github.io/docs/api/), with exception to the real-time EventsApi.\n\n## Installation\n\nInstall the library via **NPM**:  \n\n```shell\nnpm install vrchat-api-library\n```\n\n## Getting Started\n\n1. Install the library using the [above command](#installation).\n2. Include the necessary classes in your application.\n\n```javascript\nconst { VRChat, Enums } = require('vrchat-api-library');\n```\n\n3. Authenticate your application using a VRChat account and start using the library.\n\n```javascript\nconst { VRChat, Enums } = require('vrchat-api-library');\nconst { stdin, stdout } = require('process');\nconst readline = require('readline');\n\nconst vrchat = new VRChat();\n\n// Promise based console input function.\n// Any promise-based input will work assuming it returns the two-factor authentication code.\nfunction Prompt(query) {\n    const question = readline.createInterface({\n        input: stdin,\n        output: stdout,\n    });\n\n    return new Promise(resolve =\u003e question.question(query, res =\u003e {\n        question.close();\n        resolve(res);\n    }));\n}\n\n// Main asynchronous method.\nconst asyncMethod = async () =\u003e {\n    const auth = await vrchat.Authenticate({\n        username: \"username\",\n        password: \"password\",\n        authCookie: \"\",\n        twoFactorAuth: \"\"\n    }, async (type) =\u003e {\n        return await Prompt(`Please input ${type} two factor code:\\n`);\n    });\n\n    console.log(auth); // Logs authentication information as a JSON object to console.\n\n    // Method ignoring errors.\n    const friendsArray = await vrchat.FriendsApi.ListFriends({ n: 100, offline: true }); // Get an Array of LimitedUser objects as documented on the Community-driven API Docs.\n    for(let i = 0; i \u003c friendsArray.length; i++) {\n      console.log(friendsArray[i].displayName); // Log display names of all offline friends to console returned from the API function call above.\n    }\n\n    // Method catching \u0026 handling errors. (I recommend catching \u0026 handling your errors, otherwise you could run into catastrophic errors that break your applications at runtime)\n    // Get an Array of LimitedUser objects as documented on the Community-driven API Docs and only log names if there was no error, otherwise log the error.\n    await vrchat.FriendsApi.ListFriends({ n: 100, offline: true }).then(res =\u003e {\n        for(let i = 0; i \u003c res.length; i++) {\n            console.log(res[i].displayName); // Log display names of all offline friends to console returned from the API function call above.\n        }\n    }).catch(err =\u003e console.log(err));\n\n    // Basic EventsApi usage, making use of the VRChat class.\n    vrchat.EventsApi.Connect();\n\n    // Usage of custom undocumented event type, this isn't valid, just for demonstration purposes.\n    // Upon getting an undocumented event type, the library will warn you in the console and ask you to report it. (Please do this!!)\n    vrchat.EventsApi.on(\"undocumented event\", (data) =\u003e {\n        console.log(\"Undocumented Event\");\n        console.log(data);\n    });\n\n    vrchat.EventsApi.on(Enums.EventType.error, (err) =\u003e {\n        console.log(\"Error: \" + err.message);\n    });\n\n    vrchat.EventsApi.on(Enums.EventType.userOnline, (data) =\u003e {\n        console.log(\"User online\");\n        console.log(data);\n    });\n\n    vrchat.EventsApi.on(Enums.EventType.userOffline, (data) =\u003e {\n        console.log(\"User offline\");\n        console.log(data);\n    });\n\n    // vrchat.EventsApi.Disconnect(); -- Optionally disconnect from the API\n}\n\nasyncMethod(); // run asynchronous code from a synchronous context.\n```\n\n## **Classes/API Coverage**\n\nHere's a comprehensive overview of the classes and APIs available in the library:  \nAll APIs can also be found at the **community-driven** [VRChat API Docs](https://vrchatapi.github.io/docs/api/), with exception to the EventsApi.  \n\nAll API's excluding the VRChat class, EventsApi \u0026 AuthenticationApi now use constructed response objects as documented in the community-driven VRChat Docs, such as the `GetOwnAvatar` function returning a constructed `Avatar` object.\n\n### **VRChat**\n\n- **Description**: The VRChat class is designed to simplify authentication and automatically manage the library for you. It's the central component that connects you to each of VRChat's APIs.\n\n### **EventsApi**\n\n- **Description**: The EventsApi class offers a highly stable WebSocket connection for real-time events related to users and friends.\n\n- **Features**:\n  - Custom \"user-online\" and \"user-offline\" events to monitor user presence.\n  - Event type modularity, allowing undocumented event types to work flawlessly.\n  - Smart event de-duplication, making sure identical events don't repeat/spam while letting authentic \u0026 valid events pass.\n\n### **AuthenticationApi**\n\n- **Description**: The AuthenticationApi class focuses on handling authentication and user-related features, allowing you to securely log in and interact with VRChat's APIs.\n\n### **AvatarsApi**\n\n- **Description**: The AvatarsApi class enables interactions with user avatars, providing functionalities to work with avatars effectively.\n\n### **EconomyApi**\n\n- **Description**: The EconomyApi class is responsible for managing economic aspects in VRChat, such as transactions and VRC+ subscriptions.\n\n### **FavouritesApi**\n\n- **Description**: The FavouritesApi class offers features related to managing your favourited content in VRChat, including friends, worlds and avatars.\n\n### **FilesApi**\n\n- **Description**: The FilesApi class allows you to interact with files and their associated operations within VRChat.\n\n### **FriendsApi**\n\n- **Description**: The FriendsApi class provides methods to manage your friends list, retrieve information about friends, and monitor friend-related activities.\n\n### **GroupsApi**\n\n- **Description**: The GroupsApi class allows you to create and manage groups in VRChat, enabling collaboration and social interaction within these groups.\n\n### **InvitesApi**\n\n- **Description**: The InvitesApi class handles the process of inviting users to events or groups in VRChat, facilitating social connections and collaboration.\n\n### **InstancesApi**\n\n- **Description**: The InstancesApi class provides functionalities related to specific instances of VRChat worlds, including getting information about a particular instance.\n\n### **NotificationsApi**\n\n- **Description**: The NotificationsApi class manages notifications and alerts for users in VRChat, ensuring that users stay informed about relevant events.\n\n### **PermissionsApi**\n\n- **Description**: The PermissionsApi class allows you to retrieve information about user permissions in VRChat, enabling you to manage access and interactions effectively.\n\n### **PlayerModerationApi**\n\n- **Description**: The PlayerModerationApi class offers features for moderating user behavior and interactions in VRChat, ensuring a safe and enjoyable environment.\n\n### **SystemApi**\n\n- **Description**: The SystemApi class provides access to system-related information in VRChat. While it doesn't require authentication, it remains accessible within the library.\n\n### **UsersApi**\n\n- **Description**: The UsersApi class focuses on interactions with user profiles, allowing you to retrieve user information and manage user-related operations.\n\n### **WorldsApi**\n\n- **Description**: The WorldsApi class enables interactions with VRChat worlds, including features to retrieve world information and manage world-related activities.\n\n### **Enums**\n\n- **Description**: The Enums class consolidates various enumerations, including event types, for better organization and ease of use in the VRChat library.\n\n## **License Change (2024-03-12 / v2.0.0)**\n\nAs of v2.0.0, this package no longer uses the [GPLv3](https://choosealicense.com/licenses/gpl-3.0/) license and now uses the permissive [MIT](https://choosealicense.com/licenses/mit/#) license, which as the sole developer of this project, I feel is more suitable for this project considering it is an NPM package that could be a dependency to other projects.  \n\nThis will allow you to use this package as a dependency without having to source the original work or use the same license.\n\n**THIS DOES NOT APPLY TO VERSIONS PRIOR TO v2.0.0**\n\n## TODO\n\n- Wiki/Documentation.\n- Code Consistency and General improvements.\n- Potentially adding support for OSC (Open Sound Control).\n\n## **Changelog**  \n\nAll dates in this document are formatted as YYYY-MM-DD (ISO 8601).\n- v2.0.1 (2025-09-05)\n  - Add deprecation notice.\n\n- v2.0.0 (2024-03-12)\n  - Implemented all documented structured response classes for all API's (excluding the Authentication API \u0026 Events API), making for an improved developer experience when handling API responses rather than using raw JSON with no intellisense.\n  - Implemented constructed error objects and better error handling.\n  - Added JSDoc to most functions.\n  - Switch to a more permissive license that is more suitable for an NPM package. ([MIT](https://choosealicense.com/licenses/mit/#))\n  - Updated User Agent parameters \u0026 contact information and made header version update automatically using version from package.json, as it's impractical to manually change the hard code each time.\n  - Fixed SystemApi.\n  - Slight README improvements \u0026 updates in accordance to the new response classes.\n  - Bump to v2.0.0\n\n- v1.2.5 (2023-10-16)\n  - Fixed missing Enums import for GenerateParamater function in Util class.\n  - Reformatted and updated README for improved clarity and more comprehensive general information.\n  - Changed Discord support server.\n\n- v1.2.4\n  - Added missing v1.2.3 changelog.\n  - Fixed any falsey arguments being completely omitted. (See [issues#1](https://github.com/Solitarju/vrchat-api-library/issues/1))\n\n- v1.2.3\n  - I'm going to be honest, I forgot to add the changelog last push and I don't remember what I did.\n\n- v1.2.2\n  - Singular markdown change.\n\n- v1.2.1\n  - Sorted each API section into their own modules for better organization.\n\n- v1.2.0\n  - Finally completed 100% API coverage!\n  - Renamed \"Vrchat\" manager class to \"VRChat\".\n\n- v1.1.0\n  - Simple fix for major authentication bug on \"Vrchat\" manager class.\n\n- v1.0.9\n  - Added functionality for FriendsApi, WorldsApi \u0026 AvatarsApi to an extent.\n  - Renamed classes to include 'Api' such as 'AuthenticationApi' including managed classes under the 'Vrchat' class.\n  - Moved all Enums to a single class for better organization, the EventType class is now under Enums class and not usable in the same way as before.\n  - Markdown changes.\n\n- v1.0.8\n  - Added the last changelog version.\n  - Removed typescript declarations as it creates critical issues.\n  - Reverted exports change.\n\n- v1.0.7\n  - Markdown changes.\n\n- v1.0.6\n  - Updated \u0026 more re-usable header generation and removed the apiKey parameter as it is no longer required.\n  - Added typescript declarations file.\n  - README markdown updates. (TODO, Changelogs, Disclamers).\n\nLicense: [MIT](https://choosealicense.com/licenses/mit/#)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolitarju%2Fvrchat-api-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolitarju%2Fvrchat-api-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolitarju%2Fvrchat-api-library/lists"}