# Endpoints

The base URL for the PluralKit API is https://api.pluralkit.me/v2. Endpoint URLs should be added to the base URL to get a full URL to query.

All query string parameters are optional, but if present they require a non-null value.


# Systems

systemRef can be a system's short (5 or 6 character) ID, a system's UUID, the ID of a Discord account linked to the system, or the string @me to refer to the currently authenticated system.

# Get System

GET /systems/{systemRef}

Returns a system object.

# Update System

PATCH /systems/{systemRef}

Takes a partial system object.

Returns a system object.

# Get System Settings

GET /systems/{systemRef}/settings

Returns a system settings object.

# Update System Settings

PATCH /systems/{systemRef}/settings

Takes a partial system settings object.

Returns a system settings object.

# Get System Guild Settings

GET /systems/@me/guilds/{guild_id}

Returns a system guild settings object.

TIP

You must already have updated per-guild settings for your system in the target guild before being able to get or update them from the API.

# Update System Guild Settings

PATCH /systems/@me/guilds/{guild_id}

Takes a partial system guild settings object.

Returns a system guild settings object on success.

# Get System Autoproxy Settings

GET /systems/@me/autoproxy

Query String Parameters

name type
guild_id? snowflake
channel_id? snowflake

Returns an autoproxy settings object on success.

WARNING

Currently, only autoproxy with guild_id is supported. The API will return an error message if you specify channel_id, or do not specify a guild_id.

# Update System Autoproxy Settings

PATCH /systems/@me/autoproxy

Query String Parameters

name type
guild_id? snowflake
channel_id? snowflake

Takes a partial autoproxy settings object.

Returns an autoproxy settings object on success.

WARNING

Currently, only autoproxy with guild_id is supported. The API will return an error message if you specify channel_id, or do not specify a guild_id.


# Members

memberRef can be a member's short (5 or 6 character ID) or a member's UUID.

# Get System Members

GET /systems/{systemRef}/members

Returns a list of member objects.

# Create Member

POST /members

Takes a partial member object as input. Key name is required.

Returns a member object on success.

# Get Member

GET /members/{memberRef}

Returns a member object.

# Update Member

PATCH /members/{memberRef}

Takes a partial member object as input.

Returns a member object on success.

# Delete Member

DELETE /members/{memberRef}

Returns 204 No Content on success.

# Get Member Groups

GET /members/{memberRef}/groups

# Add Member To Groups

POST /members/{memberRef}/groups/add

Takes a list of group references as input. Returns 204 No Content on success.

# Remove Member From Groups

POST /members/{memberRef}/groups/remove

TIP

If you want to remove all groups from a member, consider using the Overwrite Member Groups endpoint instead.

Takes a list of group references as input. Returns 204 No Content on success.

# Overwrite Member Groups

POST /members/{memberRef}/groups/overwrite

Takes a list of group references as input. (An empty list is accepted.) Returns 204 No Content on success.

# Get Member Guild Settings

GET /members/{memberRef}/guilds/{guild_id}

Returns a member guild settings object.

TIP

You must already have updated per-guild settings for the target member in the target guild before being able to get or update them from the API.

# Update Member Guild Settings

PATCH /members/{memberRef}/guilds/{guild_id}

Takes a partial member guild settings object.

Returns a member guild settings object on success.


# Groups

groupRef can be a group's short (5 or 6 character ID) or a group's UUID.

# Get System Groups

GET /systems/{systemRef}/groups

Query String Parameters

name type description
with_members boolean includes members key with array of member UUIDs in each group object

Returns a list of group objects.

# Create Group

POST /groups

Takes a partial group object as input. Key name is required.

Returns a group object on success, or an error object on failure.

# Get Group

GET /groups/{groupRef}

Returns a group object.

# Update Group

PATCH /groups/{groupRef}

Takes a partial group object as input.

Returns a group object on success, or an error object on failure.

# Delete Group

DELETE /groups/{groupRef}

Returns 204 No Content on success.

# Get Group Members

GET /groups/{groupRef}/members

Returns an array of member objects.

# Add Members To Group

POST /groups/{groupRef}/members/add

Takes an array of member references as input. Returns 204 No Content on success.

# Remove Member From Group

POST /groups/{groupRef}/members/remove

TIP

If you want to remove all members from a group, consider using the Overwrite Group Members endpoint instead.

Takes an array of member references as input. Returns 204 No Content on success.

# Overwrite Group Members

POST /groups/{groupRef}/members/overwrite

Takes an array of member references as input. (An empty list is accepted.) Returns 204 No Content on success.


# Switches

switchRef must be a switch's UUID. systemRef can be a system's short (5 or 6 character) ID, a system's UUID, the ID of a Discord account linked to the system, or the string @me to refer to the currently authenticated system.

# Get System Switches

GET /systems/{systemRef}/switches

Query String Parameters

key type description
before timestamp date to get latest switch from
limit int number of switches to get (defaults to 100)

WARNING

This endpoint returns at most 100 switches. To get more switches, make multiple requests using the before parameter for pagination.

Returns a switch object containing a list of IDs.

# Get Current System Fronters

GET /systems/{systemRef}/fronters

Returns a switch object containing a list of member objects.

# Create Switch

POST /systems/{systemRef}/switches

JSON Body Parameters

key type description
?timestamp datetime* when the switch started
members list of strings** members present in the switch (or empty list for switch-out)

* Defaults to "now" when missing.

** Can be short IDs or UUIDs.

# Get Switch

GET /systems/{systemRef}/switches/{switchRef}

Returns a switch object containing a list of member objects.

# Update Switch

PATCH /systems/{systemRef}/switches/{switchRef}

JSON Body Parameters

key type description
timestamp datetime when the switch started

Returns a switch object containing a list of member objects on success.

# Update Switch Members

PATCH /systems/{systemRef}/switches/{switchRef}/members

Takes a list of member short IDs or UUIDs as input.

Returns a switch object containing a list of member objects on success.

# Delete Switch

DELETE /systems/{systemRef}/switches/{switchRef}

Returns 204 No Content on success.


# Misc

# Get Proxied Message Information

GET /messages/{message}

Message can be the ID of a proxied message, or the ID of the message that sent the proxy.

WARNING

Looking up messages by the original message ID only works up to 30 minutes after the message was sent.

Returns a message object.