Xatools by 3men2

Tools for Xat

@Marv (1997)
xat.com ↗

Xatools public API for xat

Xatools public API: xat powers, prices, pawns, stickers and countdown

Free JSON with no sign-up for your website, bot or app. Data is read straight from xat.com every 5 minutes (every new power is detected automatically) and completed with fair-trade trade prices. Open CORS, responses cached for 5 minutes.

Status Checking…
Base URLhttps://api.xatools.net/v1
LimitsFair use: 120 requests/min per IP. Cache the responses (they change every 5 min).
AttributionLink to xatools.net · data: xat.com · prices: fair-trade.

Try it live

Runs in your browser against the real API
api.xatools.net/v1/
Pulsa «Consultar» o elige un ejemplo.

Endpoints

All respond with JSON containing code: 200 y updated (unix) of the last update. Add ?pretty to pretty-print it. Power names are case-insensitive.

GET/v1/latestLatest power with full details, next-power countdown and the 14 most recent

Fields: latest (full details, see /v1/power), countdown (see /v1/countdown), recent[] (summary), stickers[] (latest powers with stickers).

GET/v1/countdownNext-power countdown (real announcements only)

status: announced (official xat announcement), manual (set by the Xatools team), or none (sin anuncio: no se estima ni se predice nada) o released (lanzado en las últimas 12 h). time (unix), iso, seconds_left, power (id y nombre si xat lo indica), max_per_user, amount, last (latest power), median_interval_days. Announce.php se lee cada 60 s (relay propio), así que el contador aparece en cuanto xat lo anuncia; el power nuevo se detecta en ≤2 min y el contador se reinicia solo.

GET/v1/releasesRelease history

announces[] (anuncios de xat registrados: seen, time, power_id, name, max_per_user, amount) y detected[] (cuándo apareció cada power en la tienda). El historial de un power concreto también va en /v1/power/{name} → history[].

GET/v1/powersFull catalogue (summary per power)

Parameters: q (text in name, description or smilies), status (unlimited, limited, epic, collection, subscription), category (group, stickers, ace, hug, game, epic, allpowers, new… or the name of a store section), type (smiley, function, stickers, supers…), limit, offset, full=1 (includes smilies, pawns, stickers, hugs…).

GET/v1/power/{nombre|id}Full details of a power

id, name, status, type, category, short, long, store {xats|days, text}, trade {min, max, min_days, max_days} (fair-trade), released, released_int, categories[], smilies[], pawns[] {name, hat}, stickers[], stickers_total, hugs[], backgrounds[], aces[], effects[], frames[], collection {required[], pawns[], smilies[]}, images {icon, strip80, smiley}.

GET/v1/collections · /v1/collection/{nombre}Collections (super powers)

Each collection: id, name, required[] {id, name} (required powers according to xat), pawns[] (pawns it unlocks), smilies[].

GET/v1/pawnsActive xat pawns

active[] {key, power_id, name, hat} straight from xat (ready-to-use code, e.g. (hat#hJa)), time (validity) and fair_trade[] for reference.

GET/v1/stickers · /v1/stickers/{power}Powers with stickers and their list
GET/v1/pricesStore price and trade range of every power

Store price according to xat.com and trade range according to fair-trade, updated every 6 h.

GET/v1/hugs · /v1/aces · /v1/effects · /v1/backgrounds · /v1/free · /v1/typesHugs, aces, effects and frames, backgrounds per power, free smilies, store sections
GET/v1/smiley/{código} · /v1/search?q=Which power a smiley belongs to · quick search
GET/v1/promoted?lang=es · /v1/announce · /v1/statusPromoted chats by language · xat announcements · service status
GET/v1/user/{id|nick} · /v1/user/{id|nick}/online · /v1/user/{id|nick}/powersID ↔ name · is online? · a user's powers, doubles and missing

Live data from xat.com through the Xatools bot. Status is cached 1 minute and powers 5 minutes; xat only reveals a user's powers when the bot sees them in a chat (or they answer a locate), so it may return 404 until then. Also /v1/room/{chat} (room info) and /v1/bot (bot status). Web UI: /usuario/.

Usage example

// JavaScript (navegador o Node 18+)
const r = await fetch('https://api.xatools.net/v1/latest');
const { latest, countdown } = await r.json();
console.log(latest.name, latest.store.text, latest.smilies);
if (countdown.time) console.log('Próximo power:', new Date(countdown.time * 1000));

// PHP
$j = json_decode(file_get_contents('https://api.xatools.net/v1/power/purple'), true);
echo $j['power']['trade']['min'] . ' - ' . $j['power']['trade']['max'] . ' xats';

// Python
import requests
p = requests.get('https://api.xatools.net/v1/powers', params={'status': 'limited', 'limit': 10}).json()
print([x['name'] for x in p['powers']])

Xatools is not affiliated with xat.com. Data comes from xat.com public sources; prices: fair-trade. If your project makes heavy use, cache responses for at least 5 minutes.

xat data ready for your website, Discord bot or app: powers with description, price and status, collections with their requirements, active pawns with their code, stickers, hugs, aces, promoted chats and a next-power countdown that resets itself when xat releases a new one. Read straight from xat.com every 5 minutes and completed with prices from fair-trade.

Frequently asked questions

Do I need a key or an account?+

No. The API is public and CORS-enabled. We only ask for fair use (cache responses for at least 5 minutes) and a link to xatools.net if you display the data.

Where does the data come from?+

From xat.com public files (power catalogue, store, pawns and announcements) read every 5 minutes, and from fair-trade for trade prices.

How does the next-power countdown work?+

It is shown only when xat officially publishes a date (or the Xatools team sets it from an announcement). It is never estimated or predicted: with no announcement the status is "no countdown". A new power is detected on xat.com within 5 minutes.