diff --git a/404.html b/404.html index d361e14..41501e1 100644 --- a/404.html +++ b/404.html @@ -1,10 +1,9 @@ -VRChat API Documentation -

404

Page not found :(

The requested page could not be found.

- \ No newline at end of file +Use of these names, logos, and brands does not imply endorsement.
Support
Inquiries
\ No newline at end of file diff --git a/docs/api/index.html b/docs/api/index.html index e8ea613..3670dd9 100644 --- a/docs/api/index.html +++ b/docs/api/index.html @@ -1,11 +1,9 @@ -VRChat HTTP API | VRChat API Documentation -
-
VRChat API Documentation - made with ❤️ by the Community
"VRChat" and the VRChat logo are registered trademarks of VRChat Incorporated in the United States. +VRChat HTTP API | VRChat API Documentation +
VRChat API Documentation - made with ❤️ by the Community
"VRChat" and the VRChat logo are registered trademarks of VRChat Incorporated in the United States. All trademarks referred to herein are the property of their respective owners. All company, product and service names used in this website are for identification purposes only, in accordance with Fair Use. -Use of these names, logos, and brands does not imply endorsement.
- \ No newline at end of file +Use of these names, logos, and brands does not imply endorsement.
\ No newline at end of file diff --git a/googled87ed992354151b1.html b/googled87ed992354151b1.html new file mode 100644 index 0000000..9f8f0b0 --- /dev/null +++ b/googled87ed992354151b1.html @@ -0,0 +1 @@ +google-site-verification: googled87ed992354151b1.html \ No newline at end of file diff --git a/index.html b/index.html index 90be234..4256059 100644 --- a/index.html +++ b/index.html @@ -1,7 +1,7 @@ -VRChat API Documentation -

VRChat
API Docs

VRChat API
Documentation

Here you'll find Community-created documentation about the VRChat REST
API, an OpenAPI specification, and generated SDK's in several languages.

API Docs

The API documentation project allows developers to build features that connect them to VRChat. The documentation is written in a standardised format called OpenAPI, providing capabilities for automatic documentation and SDK generation in a variety of languages.

VRChat Stoplight Editor
The OpenAPI Specification defines a standard, programming language-agnostic interface description for HTTP APIs, @@ -19,5 +19,4 @@ All trademarks referred to herein are the property of their respective owners. All company, product and service names used in this website are for identification purposes only, in accordance with Fair Use. -Use of these names, logos, and brands does not imply endorsement.
- \ No newline at end of file +Use of these names, logos, and brands does not imply endorsement.
Support
Inquiries
\ No newline at end of file diff --git a/sdk/index.html b/sdk/index.html index 5273ae6..1e6e64f 100644 --- a/sdk/index.html +++ b/sdk/index.html @@ -1,9 +1,10 @@ -VRChat API Documentation -

Languages

Language SDKs allow you to quickly get started using the API in your language of choice, rather than having to -(re-)implement all the HTTP methods from scratch.


Node SDK

NodeJS is a JavaScript runtime allowing you to write JavaScript or TypeScript on the backend. +(re-)implement all the HTTP methods from scratch.


+Node SDK

NodeJS is a JavaScript runtime allowing you to write JavaScript or TypeScript on the backend. Go to Docs
// Step 1. We begin with creating a Configuration
 // This contains the username and password for authentication.
 const vrchat = require("vrchat");
@@ -23,7 +24,8 @@
     const currentUser = resp.data;
     console.log(`Logged in as: ${currentUser.displayName}`);
 });
-

Python SDK

Python is an easy to learn scripting language for developing terminal or backend applications. +

+Python SDK

Python is an easy to learn scripting language for developing terminal or backend applications. Go to Docs
# Step 1. We begin with creating a Configuration, which contains the username and password for authentication.
 import vrchatapi
 from vrchatapi.api import authentication_api
@@ -58,24 +60,26 @@
         print("Exception when calling API: %s\n", e)
 
     print("Logged in as:", current_user.display_name)
-

Java SDK

Java is a high-level, class-based OOP language for both desktop, backend and Android. -Go to Docs
// Step 1. VRChat consists of several API's
-// e.g. (WorldsApi, UsersApi, FilesApi, NotificationsApi, FriendsApi, etc...)
-// Here we instantiate the Authentication API which is required for logging in.
-ApiClient defaultClient = Configuration.getDefaultApiClient();
-AuthenticationApi authApi = new AuthenticationApi(defaultClient);
-
-// Step 2. We begin with creating a Configuration
-// This contains the username and password for authentication.
-HttpBasicAuth authHeader = (HttpBasicAuth) defaultClient.getAuthentication("authHeader");
-authHeader.setUsername("username");
-authHeader.setPassword("password");
-
-// Step 3. Call getCurrentUser on Authentication API.
-// This logs you in if the user isn't already logged in.
-CurrentUser result = authApi.getCurrentUser();
-System.out.println(result.getDisplayName());
-

Dart SDK

Dart is a client-side language allowing compilation for Android, iOS, web, and terminal. +

+Java SDK

Java is a high-level, class-based OOP language for both desktop, backend and Android. +Go to Docs
// Step 1. VRChat consists of several API's
+// e.g. (WorldsApi, UsersApi, FilesApi, NotificationsApi, FriendsApi, etc...)
+// Here we instantiate the Authentication API which is required for logging in.
+ApiClient defaultClient = Configuration.getDefaultApiClient();
+AuthenticationApi authApi = new AuthenticationApi(defaultClient);
+
+// Step 2. We begin with creating a Configuration
+// This contains the username and password for authentication.
+HttpBasicAuth authHeader = (HttpBasicAuth) defaultClient.getAuthentication("authHeader");
+authHeader.setUsername("username");
+authHeader.setPassword("password");
+
+// Step 3. Call getCurrentUser on Authentication API.
+// This logs you in if the user isn't already logged in.
+CurrentUser result = authApi.getCurrentUser();
+System.out.println(result.getDisplayName());
+

+Dart SDK

Dart is a client-side language allowing compilation for Android, iOS, web, and terminal. Go to Docs
// Step 1. Create instance of VRChatAPI
 final api = VrchatDart(userAgent: 'VRChat Dart Demo').api;
 
@@ -89,7 +93,8 @@
 if (api.auth.currentUser != null) {
   print(api.auth.currentUser?.username);
 }
-

Rust SDK

Rust is a fast and secure language with no runtime nor garbace-collector, whos memory-management makes memory bugs impossible. +

+Rust SDK

Rust is a fast and secure language with no runtime nor garbace-collector, whos memory-management makes memory bugs impossible. Go to Docs
// Step 1. We begin with creating a Configuration
 // This contains the username and password for authentication.
 let config = apis::configuration::Configuration::default();
@@ -101,7 +106,8 @@
 
 // Step 3. Print out the result!
 println!("Current Online Users: {}", online);
-

C# SDK

C# is a high-level, class-based OOP langauge, part of .NET, and builds for desktop and Unity. +

+C# SDK

C# is a high-level, class-based OOP langauge, part of .NET, and builds for desktop and Unity. Go to Docs
// Configure API key authorization: apiKeyCookie
 Configuration.Default.Username = "username";
 Configuration.Default.Password = "password";
@@ -123,5 +129,4 @@
 All trademarks referred to herein are the property of their respective owners.
 All company, product and service names used in this website are for identification purposes only, in
 accordance with Fair Use.
-Use of these names, logos, and brands does not imply endorsement.
- \ No newline at end of file +Use of these names, logos, and brands does not imply endorsement.
Support
Inquiries
\ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index dbdcf12..3af0a43 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1,255 @@ -https://vrchatapi.github.io/sdk/javascript/https://vrchatapi.github.io/sdk/python/https://vrchatapi.github.io/sdk/java/https://vrchatapi.github.io/sdk/dart/https://vrchatapi.github.io/sdk/rust/https://vrchatapi.github.io/sdk/csharp/https://vrchatapi.github.io/tutorials/contribute-api/https://vrchatapi.github.io/tutorials/contribute-website/https://vrchatapi.github.io/docs/https://vrchatapi.github.io/tutorials/getting-started/https://vrchatapi.github.io/tutorials/instances/https://vrchatapi.github.io/sdk/https://vrchatapi.github.io/tutorials/tags/https://vrchatapi.github.io/tutorials/https://vrchatapi.github.io/https://vrchatapi.github.io/docs/api/https://vrchatapi.github.io/tutorials/websocket/ \ No newline at end of file + + + + https://vrchatapi.github.io + + + https://vrchatapi.github.io/docs/api + + + https://vrchatapi.github.io/sdk/csharp + + + https://vrchatapi.github.io/sdk/dart + + + https://vrchatapi.github.io/sdk/java + + + https://vrchatapi.github.io/sdk/node + + + https://vrchatapi.github.io/sdk/python + + + https://vrchatapi.github.io/sdk/rust + + + https://vrchatapi.github.io/sdk + + + https://vrchatapi.github.io/tutorials/getting-started + + + https://vrchatapi.github.io/tutorials/instances + + + https://vrchatapi.github.io/tutorials/tags + + + https://vrchatapi.github.io/tutorials + + + https://vrchatapi.github.io/tutorials/websocket + + + https://vrchatapi.github.io/docs/api#get-/auth + + + https://vrchatapi.github.io/docs/api#put-/logout + + + https://vrchatapi.github.io/docs/api#get-/auth/user + + + https://vrchatapi.github.io/docs/api#post-/auth/twofactorauth/totp/verify + + + https://vrchatapi.github.io/docs/api#post-/auth/twofactorauth/otp/verify + + + https://vrchatapi.github.io/docs/api#put-/user/-userId-/delete + + + https://vrchatapi.github.io/docs/api#get-/users + + + https://vrchatapi.github.io/docs/api#get-/users/-username-/name + + + https://vrchatapi.github.io/docs/api#get-/users/-userId- + + + https://vrchatapi.github.io/docs/api#put-/users/-userId- + + + https://vrchatapi.github.io/docs/api#get-/health + + + https://vrchatapi.github.io/docs/api#get-/config + + + https://vrchatapi.github.io/docs/api#get-/visits + + + https://vrchatapi.github.io/docs/api#get-/time + + + https://vrchatapi.github.io/docs/api#get-/auth/user/friends + + + https://vrchatapi.github.io/docs/api#get-/user/-userId-/friendStatus + + + https://vrchatapi.github.io/docs/api#post-/user/-userId-/friendRequest + + + https://vrchatapi.github.io/docs/api#delete-/user/-userId-/friendRequest + + + https://vrchatapi.github.io/docs/api#delete-/auth/user/friends/-userId- + + + https://vrchatapi.github.io/docs/api#get-/auth/user/notifications + + + https://vrchatapi.github.io/docs/api#put-/auth/user/notifications/-notificationId-/see + + + https://vrchatapi.github.io/docs/api#put-/auth/user/notifications/-notificationId-/hide + + + https://vrchatapi.github.io/docs/api#put-/auth/user/notifications/-notificationId-/accept + + + https://vrchatapi.github.io/docs/api#put-/auth/user/notifications/clear + + + https://vrchatapi.github.io/docs/api#get-/files + + + https://vrchatapi.github.io/docs/api#post-/file + + + https://vrchatapi.github.io/docs/api#get-/file/-fileId- + + + https://vrchatapi.github.io/docs/api#delete-/file/-fileId- + + + https://vrchatapi.github.io/docs/api#post-/file/-fileId- + + + https://vrchatapi.github.io/docs/api#get-/file/-fileId-/{versionId} + + + https://vrchatapi.github.io/docs/api#delete-/file/-fileId-/{versionId} + + + https://vrchatapi.github.io/docs/api#get-/file/-fileId-/{versionId}/{fileType}/status + + + https://vrchatapi.github.io/docs/api#put-/file/-fileId-/{versionId}/{fileType}/start + + + https://vrchatapi.github.io/docs/api#put-/file/-fileId-/{versionId}/{fileType}/finish + + + https://vrchatapi.github.io/docs/api#get-/worlds + + + https://vrchatapi.github.io/docs/api#post-/worlds + + + https://vrchatapi.github.io/docs/api#get-/worlds/active + + + https://vrchatapi.github.io/docs/api#get-/worlds/recent + + + https://vrchatapi.github.io/docs/api#get-/worlds/favorites + + + https://vrchatapi.github.io/docs/api#get-/worlds/-worldId- + + + https://vrchatapi.github.io/docs/api#put-/worlds/-worldId- + + + https://vrchatapi.github.io/docs/api#delete-/worlds/-worldId- + + + https://vrchatapi.github.io/docs/api#get-/worlds/-worldId-/{instanceId} + + + https://vrchatapi.github.io/docs/api#get-/worlds/-worldId-/metadata + + + https://vrchatapi.github.io/docs/api#get-/worlds/-worldId-/publish + + + https://vrchatapi.github.io/docs/api#put-/worlds/-worldId-/publish + + + https://vrchatapi.github.io/docs/api#delete-/worlds/-worldId-/publish + + + https://vrchatapi.github.io/docs/api#get-/favorites + + + https://vrchatapi.github.io/docs/api#post-/favorites + + + https://vrchatapi.github.io/docs/api#get-/favorites/-favoriteId- + + + https://vrchatapi.github.io/docs/api#delete-/favorites/-favoriteId- + + + https://vrchatapi.github.io/docs/api#get-/favorite/groups + + + https://vrchatapi.github.io/docs/api#get-/favorite/group/-favoriteGroupType-/{favoriteGroupName}/{userId} + + + https://vrchatapi.github.io/docs/api#put-/favorite/group/-favoriteGroupType-/{favoriteGroupName}/{userId} + + + https://vrchatapi.github.io/docs/api#delete-/favorite/group/-favoriteGroupType-/{favoriteGroupName}/{userId} + + + https://vrchatapi.github.io/docs/api#get-/avatars/favorites + + + https://vrchatapi.github.io/docs/api#get-/avatars + + + https://vrchatapi.github.io/docs/api#post-/avatars + + + https://vrchatapi.github.io/docs/api#get-/avatars/-avatarId- + + + https://vrchatapi.github.io/docs/api#put-/avatars/-avatarId- + + + https://vrchatapi.github.io/docs/api#delete-/avatars/-avatarId- + + + https://vrchatapi.github.io/docs/api#put-/avatars/-avatarId-/select + + + https://vrchatapi.github.io/docs/api#get-/auth/user/playermoderations + + + https://vrchatapi.github.io/docs/api#post-/auth/user/playermoderations + + + https://vrchatapi.github.io/docs/api#delete-/auth/user/playermoderations + + + https://vrchatapi.github.io/docs/api#put-/auth/user/unplayermoderate + + + https://vrchatapi.github.io/docs/api#get-/auth/user/playermoderations/-playerModerationId- + + + https://vrchatapi.github.io/docs/api#delete-/auth/user/playermoderations/-playerModerationId- + + + https://vrchatapi.github.io/docs/api#get-/auth/permissions + + + https://vrchatapi.github.io/docs/api#get-/permissions/-permissionId- + + \ No newline at end of file diff --git a/tutorials/contribute-api/index.html b/tutorials/contribute-api/index.html index 806ba92..62892ea 100644 --- a/tutorials/contribute-api/index.html +++ b/tutorials/contribute-api/index.html @@ -1,13 +1,13 @@ Contributing to the API | VRChat API DocumentationContributing to the API | VRChat API Documentation + -

Contributing to the API

Please read “Contributing to the Website” first. You will need a local instance of the website to preview what the docs will look like.

Structure

The documentation effort is primarily divided into two projects, the website and the specification.

The website project contains the source code building up the website, all the graphic resources such as images and CSS, and the Tutorials. This is where you want to contribute if you want to write or improve one of the tutorials. For more information, please see Contributing to the Website.

The specification is an OpenAPI document specifying the API in the tiniest detail. OpenAPI is both a human and machine-readable format and allows us to do a lot of cool post-processing stuff with it. The primary usage is generating the entire API documentation page, but it is also used to automatically generate the several language SDK’s we maintain. Once a new endpoint is documented it can be automatically updated on the website and in all the SDKs at once. This is where you want to contribute if you have found an error in the API docs or want to add a new endpoint.

Pre-requisites:

1. Cloning the repository

Start with creating a fork of https://github.com/vrchatapi/specification and clone it with your favorite Git software.

2. Getting started with OpenAPI

To modify the spec it is strongly recommended to use Stoplight Studio.

While it is possible to modify the spec in a normal editor like VSCode, it is strongly recommended to use Stoplight, as it will additionally check for linting errors and speed up your workflow. Stoplight Studio still allows you to edit in text-mode if you prefer that.

The following optional video goes into better explanation of what OpenAPI is:

3. Open project

Open the specification folder you cloned earlier. It is very important to open the root folder, and not the openapi folder.

After opening the project, click on “Files” top-left. If there is a .spectral.yml file in the root folder then it is correct. Spectral is the linter for OpenAPI specifications, and is the configuration on what to warn about if done incorrectly in the spec. In the future look in the top corner if you have any active warnings.

4. Example exercise: Add the “/selectFallback” avatar endpoint

In this tutorial we will be implementing the /selectFallback endpoint. Crucially the research has already been done for this endpoint, which saves a lot of time. If you want to follow along with exact steps, run the following command:

git checkout 1baabd944ba82f4180e7927789f8b10206bee8a9
 

This will checkout/restore the project at the specific point in time of where it is as of the writing of this tutorial. Please also study the research notes in the GitHub Issue thread closely to familiar yourself with what is needed to be done before proceeding.

Go back to the “API” tab and click on the file openapi > components > paths > avatars.yaml. This will bring up the following window:

All of the contact info, license and global properties are empty. This is because “avatars” section is only a small part of the overall API. To make it more manageable, it has been split up into several smaller parts, and is afterwards combined with a bundler tool.

The research by waterflame concluded that the /selectFallback endpoint has the same inputs and outputs as the existing /select endpoint. We will therefore proceed with clicking the </> Code button top-right to switch into text mode, and then select the /avatars/{avatarsId}/select endpoint in the lower left corner. This will show most of the endpoint in blue:

We then proceed with copying the entire endpoint, including the parameters and the URL header, and pasting it right below. We also make sure to update the path to /selectFallback instead of /select, and update the summary (which will be the title), the operationId (which will be the function call in many SDK’s), and the description. Once you are done it should look something like:

We can click on the “= Form” button top-right to see what this looks visually.

This looks good, we are almost done. As a minor addition, the research also found unlike /select, this endpoint has an additional possible error message, Code 403, This avatar isn't tagged as a quest fallback avatar.. To add this we click on “Files”, and open the folder openapi > components > responses > avatars and create a New File (because proper support for external Responses is not added yet) and name it AvatarNotTaggedAsFallbackError.yaml.

Easiest then is to copy the contents of the contents of the AvatarSeeOtherUserFavoritesError.yaml file and modify the message, title and description:

We then go back to the “API” section, select the avatars.yaml file, click "</> Code" and then select the /selectFallback endpoint bottom-left. We now add the additional error message we created, where the responses tab should look like the following. In case something is misspelled you will see an error in the top-right corner.

      responses:
@@ -43,23 +43,22 @@
 
 # Linux or Git Bash
 HUGO_SPEC_URL=http://localhost:8080/openapi.yaml ./hugo server
-

(Note: The API Docs will not automatically reload if you re-bundle the API spec.)

🎉


Back to tutorials
Back to tutorials
Back to tutorials
- \ No newline at end of file +Use of these names, logos, and brands does not imply endorsement.
Support
Inquiries
\ No newline at end of file diff --git a/tutorials/contribute-website/index.html b/tutorials/contribute-website/index.html index 488892c..80c8d59 100644 --- a/tutorials/contribute-website/index.html +++ b/tutorials/contribute-website/index.html @@ -1,13 +1,13 @@ Contributing to the Website | VRChat API DocumentationContributing to the Website | VRChat API Documentation + -

Contributing to the Website

Structure

The documentation effort is primarily divided into two projects, the website and the specification.

The website project contains the source code building up the website, all the graphic resources such as images and CSS, and the Tutorials. This is where you want to contribute if you want to write or improve one of the tutorials.

The specification is an OpenAPI document specifying the API in the tiniest detail. OpenAPI is both a human and machine-readable format and allows us to do a lot of cool post-processing stuff with it. The primary usage is generating the entire API documentation page, but it is also used to automatically generate the several language SDK’s we maintain. Once a new endpoint is documented it can be automatically updated on the website and in all the SDKs at once. This is where you want to contribute if you have found an error in the API docs or want to add a new endpoint. For more information, please see Contributing to the API.

Pre-requisites:

1. Cloning the repository

First, we need to fetch the project. Begin with “Forking” the project. This creates a copy which you can work on before submitting the changes back into the main project.

Second, we need to clone it to our computer. To do this it is recommended to use GitHub Desktop:


Please follow the Getting Started with GitHub Desktop tutorial for how to clone the fork you just made.


Alternatively it is also possible to clone via terminal if you have git installed:

git clone git@github.com:YOUR_USERNAME/vrchatapi.github.io.git
 

2. Starting the local development server

The website is built with a blogging engine called Hugo. While we don’t use the typical blogging structure, Hugo allows us to include reusable modules such as the Navbar and Footer and define layouts for pages while writing the main content in Markdown. This significantly simplifies maintenance and contributing, as people only must learn Markdown rather than go digging in HTML.

Hugo is distributed as a portable binary and is already included in the project, so you don’t have to install anything. Simply run the following command at it will start a local webserver on http://localhost:1313.

./hugo.exe server
 

This will start a debugging server, which will automatically reload the page whenever you edit any of the files.

3. Create a new Tutorial

Being with creating a new post by running the following command:

./hugo.exe new tutorials/my-test-tutorial.markdown
@@ -27,23 +27,22 @@
 
 This is an example text.
 

We now see it show up in the list of tutorials:

And the content of the Markdown file renders on the page. If you edit the tutorial file then the website should reload automatically. Please try edit it and see it reflected live:

4. Adding an Image

To add an image, start with creating a folder for the tutorial under static/assets/img/tutorials/ and must be named exactly the same as the tutorial file, but without the .markdown part, so static/assets/img/tutorials/my-test-tutorial. Then link to it in the post with the following syntax:

![](/assets/img/tutorials/my-test-tutorial/example.png)
-

5. Contributing to the project

We are now ready to contribute back to the main project. Start with writing a title and description for the changes you’ve done. The title should be short and concise.

After making a commit, press “Push origin” to send it to your personal clone of the project on GitHub.

Finally we need to go to the the fork at https://github.com/YOUR_USERNAME/vrchatapi.github.io and click “Contribute” > “Open Pull Request”.

You will be shown a final confirmation page showing the difference, and that we are about to create a Pull Request from our personal form to the main repository. Click “Create Pull Request”.

That’s it! 🎉

Your PR will then be reviewed, and any requested changes can be updated in the same commit-push procedure as above.


Back to tutorials
Back to tutorials
Back to tutorials
- \ No newline at end of file +Use of these names, logos, and brands does not imply endorsement.
Support
Inquiries
\ No newline at end of file diff --git a/tutorials/getting-started/index.html b/tutorials/getting-started/index.html index 1da39a5..71fb3f1 100644 --- a/tutorials/getting-started/index.html +++ b/tutorials/getting-started/index.html @@ -1,10 +1,10 @@ Getting Started | VRChat API DocumentationGetting Started | VRChat API Documentation + -

Getting Started

Welcome to the VRChat API

The VRChat API can be used to programmatically retrieve or update information regarding your profile, friends, avatars, worlds and more. The API is designed around the REST ideology, providing semi-simple and usually predictable URIs to access and modify objects. This Getting Started quick-start guide is the fastest to get started using the API.

Where to Begin

These beginning steps will help you to set up the necessary environment, download the API specification, and start exploring the API. Start with creating a simple API request and then viewing the response. or more advanced guides, view all the tutorials available under Tutorials or click the “Next” button to the right.

Setup Environment

Download Insomnia

Insomnia is a popular and fast REST client that’s available for Windows, Linux and Mac. @@ -30,23 +30,22 @@ You can now go back to the “Get Current User Info” endpoint and try get your own info again.

⚠️ Account Lockout Warning!
If you got an error, please stop and contact help on Discord, as spamming the 2FA can get your account temporarily locked!

That’s it! 🎉 Congratulations on getting started with the VRChat API!

But you are not done! In fact, your journey starts now! You can now begin to start exploring the API and play around with what is possible. Most of the endpoints are self-explanatory, and if you have any questions, you can always check in the API Documentation or contact on Discord. Please keep the number of requests you send per minute to a minimum. If you send requests too quickly you will get rate limited.

Please also keep in mind that any actions you take is your own responsibility, and that deleted resources such as worlds or avatars cannot be recovered. -The writer of this tutorial accidentally deleted every single player moderation (mute, block, show avatar) they’ve made during the last 2 years. But that’s a story for another time.


Back to tutorials
Back to tutorials
- \ No newline at end of file +Use of these names, logos, and brands does not imply endorsement.
Support
Inquiries
\ No newline at end of file diff --git a/tutorials/index.html b/tutorials/index.html index 3fbb8ac..2b1f7aa 100644 --- a/tutorials/index.html +++ b/tutorials/index.html @@ -1,21 +1,20 @@ -VRChat API Documentation -
VRChat API Documentation - made with ❤️ by the Community
"VRChat" and the VRChat logo are registered trademarks of VRChat Incorporated in the United States. All trademarks referred to herein are the property of their respective owners. All company, product and service names used in this website are for identification purposes only, in accordance with Fair Use. -Use of these names, logos, and brands does not imply endorsement.
- \ No newline at end of file +Use of these names, logos, and brands does not imply endorsement.
Support
Inquiries
\ No newline at end of file diff --git a/tutorials/instances/index.html b/tutorials/instances/index.html index 2b46e35..3c138d6 100644 --- a/tutorials/instances/index.html +++ b/tutorials/instances/index.html @@ -1,32 +1,31 @@ Instances | VRChat API DocumentationInstances | VRChat API Documentation + -

Instances

Instances are parallell “rooms” or “lobbies” of a world. Each instance can only hold a limited number of users, but there is no limit on how many instances can exist of a world. Instances are uniquely identified by the combined World ID and Instance ID.

Instance Generator

Must be a valid World ID.
Typically a 5-digit number, but can be any alphanumeric string [a-zA-Z0-9_-].
Instance Type defines who can join or be invited into the instance.
Must be a valid User ID.
Regional of the Photon servers.
Nonce
https://vrchat.com/home/launch?

Instance ID

The instance ID is the combined sum of all the arguments to the instance e.g. name, owner, and privacy setting. The arguments are in the order of name, friends, hidden, private, canRequestInvite, region, nonce.

Owner ID

Differentiate two concepts, “Instance Owner” and “Instance Master”. The “Owner” of an instance is the creator of the instance, is permanent, and has permission to insta-kick users without having to go through the Voting system. -The “Instance Master” is the Photon sync master and is responsible for object syncing. The Instance Master is whoever has stayed in the instance the longest.

Nonce

Nonce is the Cryptographic key used to lock non-public instances to prevent people from guessing the Instance ID. It is not included in the location of public instances, and is formatted as “nonce(key)” where key is the cryptographic key.

Region

Region indicates the geographical location of the Photon servers used for the instance. Default: us

RegionHosted inToken
USA, WestSan Joséus
USA, EastWashington D.C.use
EuropeAmsterdameu
JapanTokyojp

Back to tutorials
Back to tutorials
- \ No newline at end of file +Use of these names, logos, and brands does not imply endorsement.
Support
Inquiries
\ No newline at end of file diff --git a/tutorials/tags/index.html b/tutorials/tags/index.html index 72c70dd..3874d43 100644 --- a/tutorials/tags/index.html +++ b/tutorials/tags/index.html @@ -1,28 +1,27 @@ Tags | VRChat API DocumentationTags | VRChat API Documentation + -

Tags

Tags are a way to grant access, assign restrictions, or attach other kinds of metadata to various to objects e.g. worlds, users and avatars. -These tags are in the form of simple strings, grouped together in a string array, and commonly prefixed with a namespace designating the type of tag.

Tags starting with admin_ are always assigned to the user manually by a staff. Tags starting with system_ are automatically assigned by the system.

User Tags

TagDescription
admin_avatar_accessUser can upload Avatars without needing the neccesary trust rank
admin_can_grant_licensesUser can give out licenses to other users
admin_canny_accessUser can access Canny without needing the neccesary trust rank
admin_lock_tagsUser’s tags have been locked and cannot be edited by the user
admin_lock_levelUser’s Trust rank has been locked and can no longer be changed automatically
admin_moderatorUser is part of the VRChat Staff team
admin_official_thumbnailReplaces the users profile picture with the VRChat logo
admin_scripting_access and system_scripting_accessUser can upload user-made scripts (Deprecated)
admin_world_accessUser can upload Worlds without needing the neccesary trust rank
show_social_rankToggle whether to show the user’s real social rank
(Deprecated: This is now a registry key and sent over Photon)
show_mod_tagToggle whether to show the Red Staff nameplate
system_avatar_accessUser can upload and publish Avatars
system_early_adopterUser bought VRC+ in the early period of it’s launch, around December 2020
system_feedback_accessUser can send Feedback
system_probable_trollUser has been reported multiple times and is (probably) a troll
system_supporterUser has an active VRC+ subscription
system_legendUser is an Experienced player and was active during the Summer of 2018
(Tag removed in 2022-05-05)
system_trollUser is a confirmed troll
system_trust_basicUser is “New User” (blue) Trust rank
system_trust_knownUser is “User” (green) Trust rank
system_trust_trustedUser is “Known User” (orange) Trust rank
system_trust_veteranUser is “Trusted User” (purple) Trust rank
system_trust_intermediateUnknown
(Tag removed in 2022-05-05)
system_trust_advancedUnknown
(Tag removed in 2022-05-05)
system_trust_legendUser is “Veteran User” (gold color) Trust rank
(Role was removed in Sep 2018. Tag removed in 2022-05-05)
system_world_accessUser can upload and publish Worlds

Trust rank tags have an offset of 1 with their name, so system_trust_trusted is actually only Known User (orange). The arrows in the following picture highlight the offset naming inaccuracy. The naming system is because of legacy reasons. Visistors have no trust rank at all. It is common for people User and above to be missing the tag for New User.

Trust ranks

World Tags

TagDescription
author_tag_*Custom tag added by the world author, with the last word being anything; used during searching by tag
author_tag_avatarWorld will show up in “Avatar Worlds” row
author_tag_gameWorld will show up in the “Games” world row
admin_featuredWorld has been manually selected by staff to appear in the “Featured” world category
admin_approvedWorld has been manually approved by staff
admin_avatar_worldWorld was manually been selected by staff as avatar world (Deprecated)
admin_community_spotlightWorld has been manually selected by staff to appear in “Spotlight” row
admin_hiddenWorld will always be hidden from search
admin_hide_activeWorld will be hidden from “Active” row
admin_hide_newWorld will be hidden from “Recently Updated Worlds” row when updated
admin_hide_popularWorld will be hidden from “Popular Worlds” row
debug_allowedWorld Debugging has been enabled by author, allowing to see state of triggers
system_approvedWorld has been automatically approved through the Community Labs
system_created_recentlyWorld was recently created
system_labsWorld has been submitted to Community Labs
system_updated_recentlyWorld has been recently updated and will show up in “Updated Recently” worlds row if also system approved
content_sexWorld has been uploaded with “Nudity/Sexuality” warning.
content_violenceWorld has been uploaded with “Realistic Violence” warning.
content_goreWorld has been uploaded with “Blood/Gore” warning.
content_otherWorld has been uploaded with “Other NSFW” warning.

Worlds can also have a range of different event-specific tags such as admin_vket2021 for the Vket row, admin_muzzfesst for the MUZZFEST event, or admin_halloween_2019 for the 2019 Halloween row. These are not listed because it would be impossible to accurately keep such list up-to-date, and each tag is of little use outside of that specific event.

Language Tags

Language tags primarily appear on User profiles, with each user being allowed to have at most 3 language tags. Language tags can also appear on Instances, showing the languages the people in that instance speak.

TagDescription
language_engEnglish / English
language_kor한국어 / Korean
language_rusРусский / Russian
language_spaEspañol / Spanish
language_porPortuguês / Portuguese
language_zho中文 / Chinese
language_deuDeutsch / German
language_jpn日本語 / Japanese
language_fraFrançais / French
language_sweSvenska / Swedish
language_nldNederlands / Dutch
language_polPolski / Polish
language_danDansk / Danish
language_norNorsk / Norwegian
language_itaItaliano / Italian
language_thaภาษาไทย / Thai
language_finSuomi / Finnish
language_hunMagyar / Hungarian
language_cesČeština / Czech
language_turTürkçe / Turkish
language_araالعربية / Arabic
language_ronRomână / Romanian
language_vieTiếng Việt / Vietnamese
language_aseAmerican Sign Language
language_bfiBritish Sign Language
language_dseDutch Sign Language
language_fslFrench Sign Language
language_kvkKorean Sign Language

Group Tags

TagDescription
admin_hide_member_countHides both online members and total number of members in the group. Used for the VRCHAT.0000 staff group.

Useless Tags

Tag
Description
system_neuralink_betaMeaningless tag used by Tupper
system_extremely_cool_guyMeaningless tag used by Tupper
system_stop_being_nosyMeaningless tag used by Tupper
system_notamodMeaningless tag used by Tupper
system_no_seriously_im_not_a_mod_how_many_times_do_i_have_to_tell_peopleMeaningless tag used by Tupper
system_the_tag_is_just_named_thatMeaningless tag used by Tupper
system_haha_you_have_to_document_this_one_tooMeaningless tag used by Tupper
system_legen_wait_for_it_daryMeaningless tag used by Tupper
system_cute_robotMeaningless tag used by Tupper
Never gonna give you upMeaningless tag used by Fusl
system_not_cuteMeaningless tag used by Fusl
'; DROP DATABASE tags; --Meaningless tag used by Fusl
'; DROP TABLE tags; --Meaningless tag used by Fusl
¯\_(ツ)_/¯Meaningless tag used by Fusl
Meaningless tag used by Fusl
we've been trying to reach you about your car's extended warrantyMeaningless tag used by Fusl
<script>alert(document.cookie);</script>Meaningless tag used by Fusl
eeeeeeeeeeMeaningless tag used by eeeeeeeeee
if you're reading this, you've been in a coma for almost 20 years now. we're trying a new technique. we don't know where this message will end up in your dream, but we hope we're getting through. please wake up-Meaningless tag used by Fusl
system_smart_fridge_betaMeaningless tag used by Nyx
system_hey_mom_look_im_in_a_git_commitMeaningless tag used by Nyx
system_trust_sussyMeaningless tag used by Squid
system_lizardMeaningless tag used by Afromana
system_me_I_read_themMeaningless tag used by Afromana
system_slugMeaningless tag used by Slorg

Back to tutorials
Back to tutorials
- \ No newline at end of file +Use of these names, logos, and brands does not imply endorsement.
Support
Inquiries
\ No newline at end of file diff --git a/tutorials/websocket/index.html b/tutorials/websocket/index.html index afee487..857890b 100644 --- a/tutorials/websocket/index.html +++ b/tutorials/websocket/index.html @@ -1,13 +1,13 @@ Websocket API | VRChat API DocumentationWebsocket API | VRChat API Documentation + -

Websocket API

The VRChat Websocket API (a.k.a. “Pipeline”) is used receiving updates regarding the API, such as receiving an invite request. The WebSocket is receive-only, meaning that you can only listen for messages. Sending messages is undefined behavior.

Connecting

Connecting to the VRChat webhook server is done via the URL: wss://pipeline.vrchat.cloud/?authToken=authcookie_...

The auth-token query parameter is the authorization cookie you receive when logging into VRChat. @@ -259,23 +259,22 @@ } } } -


Back to tutorials
Back to tutorials
Back to tutorials
- \ No newline at end of file +Use of these names, logos, and brands does not imply endorsement.
Support
Inquiries
\ No newline at end of file