Xive Developers

Build bots and tools for Xive creators

Chat bots, moderation tools and stream alerts. Create an app, let creators add it to their channel in one click, and get their chat and events on a single realtime connection.

  • Free to build
  • No public server needed
  • Creators choose every permission
What you can build

Everything a channel needs, made by you

  • Chat bots

    Answer commands, run games and greet viewers — posting as your bot, with its own name, icon and a BOT badge.

    chat:read chat:write
  • Moderation

    Delete messages, time out and ban in the channels that grant it, logged in the creator’s moderation log as your app.

    chat:moderate
  • Alerts & overlays

    React to follows, gifts, subs, raids, Sparks and channel-point redemptions the moment they happen.

    events:read
  • Live stream tools

    Know when a channel goes live, offline or changes its title, and build dashboards and integrations around it.

    events:read
Quick start

From zero to a working bot in three steps

verify.sh
# Your secret, from the Console
export XIVE_APP_SECRET="xive_sa_…"

# Check it works
curl https://api.thexive.com/api/apps/@me \
  -H "Authorization: Bearer $XIVE_APP_SECRET"

# → { "success": true, "application": { "name": "HypeBot", … } }
# Send creators here. They sign in, review, and add your app.
https://thexive.com/developers/authorize
  ?client_id=YOUR_CLIENT_ID
  &scope=chat:read+chat:write+events:read
  &redirect_uri=https://yourapp.example/xive/callback
  &state=random-value

# Afterwards they land on your redirect URL with:
#   ?channel_id=…&scope=…&state=random-value
import { Centrifuge } from "centrifuge";

const API = "https://api.thexive.com";
const auth = { Authorization: `Bearer ${process.env.XIVE_APP_SECRET}` };
const gateway = async () =>
  (await fetch(`${API}/api/apps/@me/gateway`, { method: "POST", headers: auth })).json();

const { url, token } = await gateway();
const ws = new Centrifuge(url, { token, getToken: async () => (await gateway()).token });

ws.on("publication", async ({ data: { metadata, payload: { event } } }) => {
  // Twitch EventSub shape: channel.chat.message, channel.follow, …
  if (metadata.subscription_type === "channel.chat.message" && event.message.text === "!hello") {
    await fetch(`${API}/api/apps/channels/${event.broadcaster_user_id}/chat`, {
      method: "POST",
      headers: { ...auth, "Content-Type": "application/json" },
      body: JSON.stringify({ content: `Hi ${event.chatter_user_name} 👋` }),
    });
  }
});

ws.connect();
1WebSocket for every channel that adds you
9Scopes, each one chosen by the creator
20 / 30sMessages per channel, so busy chats stay readable
5Live secrets per app, for rotation without downtime
Documentation

Everything in the docs

Ready to build?

Create your first app in under a minute. By creating one you agree to the Developer Agreement and Developer Policy.