FilterAPI 1.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package FilterAPI --version 1.0.1
                    
NuGet\Install-Package FilterAPI -Version 1.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FilterAPI" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FilterAPI" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="FilterAPI" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FilterAPI --version 1.0.1
                    
#r "nuget: FilterAPI, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FilterAPI@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FilterAPI&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=FilterAPI&version=1.0.1
                    
Install as a Cake Tool

FilterAPI

FilterAPI brings the official AMCI (All-client Mod Client Identification) protocol introduced in Among Us 18.0 to BepInEx mods: modded lobbies get a real identity, modded hosting, and mod-filtered lobby search — with a single attribute and a single button.

Features

  • Mod registration — register your mod with the official AMCI protocol by adding one attribute to your plugin class ([AmciModGuid]).
  • "Mod" button — a dedicated button in the create-game screen (cloned from the vanilla mode buttons) toggles modded lobby filtering on and off.
  • Modded hosting — while enabled, hosting uses the HostModdedGame tag (25) with your mod GUID appended, so the server can identify the lobby as modded.
  • Mod-filtered search — while enabled, the lobby search carries a mod filter, so only lobbies running the same mod GUID are shown.
  • Zero vanilla-client pollution — vanilla clients never see modded lobbies in the public list (they are excluded from the normal matchmaking pool), and modded clients with the filter off behave exactly like vanilla clients.

Requirements

  • Among Us 18.0 or newer (the AMCI client integration only exists in 18.0+)
  • BepInEx 6 (IL2CPP), e.g. BepInEx.Unity.IL2CPP 6.0.0-be.735
  • A server that implements AMCI:
    • the official Innersloth servers, or
    • a custom server such as Impostor with AMCI support (HostModdedGame handling + mod filter matching + modded-lobby exclusion from the normal list)

Installation (players)

  1. Drop FilterAPI.dll into BepInEx/plugins/.
  2. Install at least one mod that registers an AMCI GUID (i.e. a mod built against FilterAPI with the [AmciModGuid] attribute, e.g. FilterAPI.Example). Without it there is nothing to register and the button does nothing.

Usage (mod authors)

  1. Reference this project or the FilterAPI NuGet package.
  2. Add the attribute to your plugin class:
using FilterAPI.Attributes;

[BepInPlugin("com.example.mymod", "My Mod", "1.0.0")]
[AmciModGuid("5b9e6f2a-1c4d-4a7e-9f3b-8d2c6e0a4f1d")] // your own self-assigned v4 GUID
public class MyModPlugin : BasePlugin
{
}

Get a GUID from any UUID generator, e.g. https://www.uuidgenerator.net/.

  1. (Optional) Reference FilterAPI.Networking.AmciMods from your mod to query the registered GUIDs:
AmciMods.Primary      // Guid? — the primary registered AMCI GUID
AmciMods.Registered   // IReadOnlyDictionary<string, Guid> — all registered mod ids → GUIDs
AmciMods.IsEnabled    // bool — whether modded filtering is currently active

Behavior

Client state Hosting Lobby search
Mod button on HostModdedGame tag + mod GUID → lobby is modded Only lobbies with the same mod GUID (modded lobbies of other mods and vanilla lobbies are hidden)
Mod button off normal HostGame → vanilla lobby Only vanilla lobbies (modded lobbies are excluded, same as a vanilla client)
Vanilla client (no FilterAPI) Never sees modded lobbies

Note: the "off" state intentionally mirrors the vanilla client — modded lobbies are only visible through a mod filter, matching the official AMCI design ("modded games are excluded from the normal matchmaking pool").

Configuration

BepInEx/config/ume.filter.api.cfg:

Key Default Description
AMCI.Enable true Whether the AMCI mod GUID is registered with the matchmaker (hosting + search). Equivalent to the in-game "Mod" button.

How it works

  1. FilterAPI scans all loaded BepInEx plugins for the [AmciModGuid] attribute and collects their GUIDs (AmciMods).
  2. AmciMods.Apply() writes the primary GUID into the vanilla CurrentModRegistration.ModRegistrationGuidString.
  3. The vanilla 18.0 client does the rest:
    • InnerNetClient.HostGame checks CurrentModRegistration.TryGetModRegistrationGuid() and switches to the HostModdedGame tag (25) with the 16-byte GUID appended.
    • HttpMatchmakerManager.CoRequestGameListFiltered calls UpdateFilterSetWithModRegistrationSettings, which adds a mod filter to every matchmaking request.
  4. The server marks the lobby as modded, excludes it from the normal pool, and only returns it to searches carrying the matching mod filter.

Server side (Impostor)

The server must support:

  • the HostModdedGame message (tag 25) with the trailing 16-byte mod GUID (marks the lobby as modded),
  • the "mod" matchmaking filter (ModFilter with AcceptedValues),
  • excluding modded lobbies from unfiltered searches.

Building

dotnet build FilterAPI/FilterAPI.csproj -c Release
dotnet pack FilterAPI/FilterAPI.csproj -c Release   # produces the NuGet package

The project references AmongUs.GameLibs.Steam and BepInEx from the BepInEx NuGet feed (https://nuget.bepinex.dev/v3/index.json) — see nuget.config if restore fails.

Example

FilterAPI.Example is a minimal plugin that registers a sample AMCI GUID. Install it alongside FilterAPI to test the flow end to end (host a lobby with the Mod button on, then search for it from a second client with the Mod button on).

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.2 76 8/20/2026
1.0.1 78 8/19/2026
1.0.0 65 8/19/2026