API Reference
ApiClient provides 150+ methods covering the entire Fluxer REST API. All methods return CompletableFuture<T> for non-blocking usage.
ApiClient api = new ApiClient("Bot YOUR_TOKEN", config);
// All calls are async
api.getCurrentUser()
.thenAccept(user -> System.out.println(user.getUsername()))
.exceptionally(ex -> {
System.err.println("Error: " + ex.getMessage());
return null;
});
Authentication
| Method | Returns | Description |
login(LoginRequest) | LoginResponse | Authenticate with credentials |
logout() | Void | End current session |
register(RegisterRequest) | LoginResponse | Create new account |
loginMfaTotp(String) | LoginResponse | Complete login with TOTP code |
loginMfaSms(String) | LoginResponse | Complete login with SMS code |
verifyEmail(String) | Void | Verify email address |
forgotPassword(String) | Void | Request password reset |
resetPassword(String, String) | Void | Reset password with token |
getSessions() | List<AuthSession> | List active sessions |
logoutSessions(List) | Void | Logout specific sessions |
Messages
| Method | Returns | Description |
sendMessage(long channelId, Message) | Message | Send a message to a channel |
getMessage(long channelId, long msgId) | Message | Get a specific message |
editMessage(long channelId, long msgId, Message) | Message | Edit a message |
deleteMessage(long channelId, long msgId) | Void | Delete a message |
bulkDeleteMessages(long channelId, List) | Void | Delete multiple messages |
getPinnedMessages(long channelId) | List<Message> | Get pinned messages |
pinMessage(long channelId, long msgId) | Void | Pin a message |
unpinMessage(long channelId, long msgId) | Void | Unpin a message |
triggerTypingIndicator(long channelId) | Void | Show typing indicator |
acknowledgeMessage(long channelId, long msgId) | Void | Mark message as read |
searchChannel(long channelId, ...) | SearchResult | Search messages in a channel |
// Send a simple message
Message msg = new Message();
msg.setContent("Hello, world!");
api.sendMessage(channelId, msg).join();
// Send a message with an embed
Embed embed = new EmbedBuilder()
.withTitle("Status")
.withDescription("All systems operational")
.withColor(0x3fb950)
.build();
msg.setEmbeds(List.of(embed));
api.sendMessage(channelId, msg).join();
Channels
| Method | Returns | Description |
getChannels(long guildId) | List<Channel> | List all guild channels |
getChannel(long channelId) | Channel | Get channel details |
createChannel(long guildId, Channel) | Channel | Create a channel |
updateChannel(long channelId, Channel) | Channel | Update channel settings |
deleteChannel(long channelId) | Void | Delete a channel |
addRecipient(long channelId, long userId) | Void | Add user to group DM |
removeRecipient(long channelId, long userId) | Void | Remove user from group DM |
updatePermissionOverwrite(long, ChannelPermissionOverwrite) | Void | Set permission overwrite |
deletePermissionOverwrite(long, long) | Void | Remove permission overwrite |
getChannelInvites(long channelId) | List<Invite> | Get channel invites |
Guilds
| Method | Returns | Description |
getGuild(long guildId) | Guild | Get guild details |
getCurrentUserGuilds() | List<Guild> | List guilds the bot is in |
createGuild(Guild) | Guild | Create a new guild |
updateGuild(long guildId, GuildProperties) | Guild | Update guild settings |
deleteGuild(long guildId) | Void | Delete a guild (owner only) |
getGuildAuditLog(long guildId) | GuildAuditLog | Get audit log |
getGuildVanityUrl(long guildId) | Invite | Get vanity URL |
updateGuildVanityUrl(long, String) | Invite | Set vanity URL |
Members
| Method | Returns | Description |
getMembers(long guildId) | List<GuildMember> | List guild members |
getGuildMember(long guildId, long userId) | GuildMember | Get a specific member |
updateMember(long guildId, long userId, ...) | GuildMember | Update member (nick, roles, etc.) |
kickMember(long guildId, long userId) | Void | Kick a member |
removeMember(long guildId, long userId) | Void | Remove a member |
Roles
| Method | Returns | Description |
getGuildRoles(long guildId) | List<GuildRole> | List all roles |
getGuildRole(long guildId, long roleId) | GuildRole | Get a specific role |
createRole(long guildId, GuildRole) | GuildRole | Create a role |
updateRole(long guildId, long roleId, GuildRole) | GuildRole | Update a role |
deleteRole(long guildId, long roleId) | Void | Delete a role |
updateRolePositions(long guildId, List) | List<GuildRole> | Reorder roles |
Users
| Method | Returns | Description |
getCurrentUser() | User | Get current bot/user |
getUser(long userId) | User | Get user by ID |
updateCurrentUser(User) | User | Update current user profile |
getCurrentUserSettings() | UserSettings | Get user settings |
updateCurrentUserSettings(UserSettings) | UserSettings | Update user settings |
getFriends() | List<Relationship> | List friends |
addFriend(long userId) | Void | Send friend request |
removeFriend(long userId) | Void | Remove friend |
getUserNote(long userId) | String | Get user note |
updateUserNote(long userId, String) | Void | Set user note |
Invites
| Method | Returns | Description |
getInvite(String code) | Invite | Get invite details |
createInvite(long channelId, ...) | Invite | Create a channel invite |
deleteInvite(String code) | Void | Delete an invite |
joinGuild(String code) | Invite | Join a guild via invite |
getGuildInvites(long guildId) | List<Invite> | List guild invites |
Webhooks
| Method | Returns | Description |
getChannelWebhooks(long channelId) | List<WebhookInfo> | List channel webhooks |
createWebhook(long channelId, WebhookInfo) | WebhookInfo | Create a webhook |
getWebhook(long webhookId) | WebhookInfo | Get webhook details |
updateWebhook(long webhookId, WebhookInfo) | WebhookInfo | Update a webhook |
deleteWebhook(long webhookId) | Void | Delete a webhook |
Reactions
| Method | Returns | Description |
addReaction(long channelId, long msgId, String emoji) | Void | Add a reaction |
removeOwnReaction(long, long, String) | Void | Remove own reaction |
removeUserReaction(long, long, String, long) | Void | Remove user's reaction |
removeAllReactions(long channelId, long msgId) | Void | Remove all reactions |
removeAllReactionsForEmoji(long, long, String) | Void | Remove all of specific emoji |
getReactions(long, long, String) | List<User> | Get users who reacted |
Attachments
| Method | Returns | Description |
uploadAttachments(long channelId, ...) | List<Attachment> | Upload file attachments |
deleteAttachment(long attachmentId) | Void | Delete an attachment |
deleteMessageAttachment(long channelId, long msgId, long) | Void | Delete attachment from a message |
Bans
| Method | Returns | Description |
getBans(long guildId) | List<GuildBan> | List all bans |
banMember(long guildId, long userId) | Void | Ban a user |
unbanMember(long guildId, long userId) | Void | Unban a user |
Rate Limiting
Fluxer4J includes a built-in sliding-window rate limiter that automatically throttles API calls to stay within limits.
✓
Rate limiting is enabled by default. Set enableRateLimiting(false) in FluxerConfig to disable it.
| Class | Description |
RateLimitManager | Manages all rate limit buckets. Access via getBucket(key) |
RateLimitBucket | Per-bucket state with acquireAsync(), getRemainingAsync(), resetAsync() |
RateLimitConfig | Configuration for a specific bucket (max requests, window size) |
RateLimitConfigs | Pre-configured limits for standard Fluxer endpoints |
RateLimitMappings | Maps endpoint patterns to rate limit configs |
Data Models (55+ classes)
All models live in fluxer4j.data.models and use Jackson annotations for JSON serialization.
| Category | Models |
| User | User, UserSettings, UserProfile, ClientStatus |
| Channel | Channel, ChannelPermissionOverwrite, ChannelRecipient |
| Guild | Guild, GuildProperties, GuildMember, GuildRole, GuildBan, GuildAuditLog, GuildEmoji, GuildSticker |
| Message | Message, MessageRef, MessageSnapshot, Attachment, StickerItem, CallInfo |
| Embed | Embed, EmbedField, EmbedAuthor, EmbedFooter, EmbedMedia, EmbedProvider |
| Invite | Invite, Relationship |
| Auth | AuthSession, LoginRequest, LoginResponse, BetaCode, GiftCode |
| Activity | Activity, ActivityEmoji, ActivityTimestamps |
| Other | WebhookInfo, FavoriteMeme |
Enums (19 types)
All enums live in fluxer4j.data.enums.
| Enum | Description | Notable Values |
Permissions | Permission flags (54+ types) | Administrator, ManageChannels, SendMessages, KickMembers, BanMembers, Connect, Speak |
ChannelType | Channel type constants | DM, GUILD_TEXT, GUILD_VOICE, GROUP_DM |
Status | User status | Online, Idle, DoNotDisturb, Offline |
MessageType | Message types | Default, RecipientAdd, Call, ChannelNameChange |
MessageFlags | Message flag bits | Crossposted, IsCrosspost, SuppressEmbeds, Urgent |
GuildVerificationLevel | Guild verification | None, Low, Medium, High, VeryHigh |
GuildMfaLevel | MFA requirements | None, Elevated |
UserFlags | User profile flags | Staff, Partner, BugHunter, PremiumEarlySupporter |
PremiumType | Subscription type | None, NitroClassic, Nitro |
RelationshipType | Relationship type | Friend, Blocked, IncomingRequest, OutgoingRequest |
InviteType | Invite type | Guild, GroupDM |
StickerFormatType | Sticker format | PNG, APNG, Lottie |