RoZod is the most complete and production-ready Roblox API client for TypeScript/JavaScript. It powers RoGold, a browser extension serving 800,000+ active users with millions of daily API requests.
Why Choose RoZod?
800+ Endpoints - Complete coverage (690+ Classic + 117 OpenCloud APIs)
Production Proven - Battle-tested at massive scale (800k+ users)
Enterprise Security - Automatic CSRF, Hardware-Backed Auth, Challenge handling, Cookie Rotation
Full Type Safety - Native Zod validation catches errors at compile time
Universal Runtime - Works seamlessly in NodeJS, Bun, Deno, and browsers
Zero Configuration - Automatic authentication in browsers, simple configureServer()for servers
API Coverage Comparison
| Library | Classic APIs | OpenCloud APIs | Total | Production Scale |
|---|---|---|---|---|
| RoZod | 690+ | 117 | 807+ | |
| noblox.js | ~200 | ~200 | Limited | |
| openblox | ~200 | ~90 | ~290 | Unknown |
All endpoints are code-generated from official Roblox documentation for guaranteed accuracy and completeness.
Enterprise-Grade Security
RoZod automatically handles Roblox’s complex security requirements:
- XCSRF Token Management - Automatic retrieval and caching per user
- Hardware-Backed Authentication - Full HBA signature support via roblox-bat
- Cookie Rotation Support - Automatic detection and callback for Roblox’s new cookie rotation
- Challenge Handling - Captchas, 2FA, and authentication challenges
- Cookie Security - Secure parsing and validation
- Cookie Pools - Multiple accounts with round-robin or random rotation
Developer Experience
Full TypeScript Support with complete type safety and autocomplete!
💻 Code Examples & Usage
import { fetchApi, isAnyErrorResponse } from 'rozod';
import { getUsersUserdetails } from 'rozod/lib/endpoints/usersv1';
// Full type safety - errors caught at compile time!
const userInfo = await fetchApi(getUsersUserdetails, { userIds: [1, 123456] });
if (isAnyErrorResponse(userInfo)) {
console.error(userInfo.message);
return;
}
console.log(userInfo.data[0].displayName); // Fully typed autocomplete
Automatic Authentication (Browsers):
// No setup needed - cookies sent automatically!
const response = await fetchApi(getGamesIcons, { universeIds: [1534453623] });
Server Configuration (Node.js/Bun/Deno):
import { configureServer } from 'rozod';
// Configure once at startup - all requests automatically authenticated
configureServer({ cookies: 'your_roblosecurity_cookie_here' });
// Multiple accounts with automatic rotation
configureServer({
cookies: ['account1_cookie', 'account2_cookie', 'account3_cookie'],
cookieRotation: 'round-robin', // or 'random'
});
// OpenCloud API key
configureServer({ cloudKey: 'your_opencloud_api_key_here' });
OpenCloud Support:
import { fetchApi } from 'rozod';
import { v2 } from 'rozod/lib/opencloud';
const universeInfo = await fetchApi(v2.getCloudV2UniversesUniverseId, {
universe_id: '123456789',
});
console.log(universeInfo.displayName);
🔄 Advanced Features
Automatic Pagination:
import { fetchApiPages } from 'rozod';
import { getGroupsGroupidWallPosts } from 'rozod/lib/endpoints/groupsv2';
// Automatically fetches all pages
const allPosts = await fetchApiPages(getGroupsGroupidWallPosts, { groupId: 11479637 });
Generator-Based Pagination (Process pages as they arrive):
import { fetchApiPagesGenerator } from 'rozod';
const pages = fetchApiPagesGenerator(getGroupsGroupidWallPosts, { groupId: 11479637 });
for await (const page of pages) {
console.log(`Processing page with ${page.data.length} posts`);
}
Batch Processing:
import { fetchApiSplit } from 'rozod';
// Automatically splits large requests to avoid API limits
const data = await fetchApiSplit(
getGamesIcons,
{ universeIds: [/* hundreds of IDs */] },
{ universeIds: 100 } // Split into batches of 100
);
Throw-on-Error Mode:
try {
const res = await fetchApi(getGamesIcons, { universeIds: [123] }, { throwOnError: true });
console.log(res.data); // Guaranteed success - errors throw
} catch (err) {
console.error((err as Error).message);
}
Cookie Rotation Handling:
import { configureServer, refreshCookie, getCookies } from 'rozod';
// Automatically persist new cookies when Roblox rotates them
configureServer({
cookies: process.env.ROBLOX_COOKIE,
onCookieRefresh: async ({ oldCookie, newCookie, poolIndex }) => {
await db.updateCookie(poolIndex, newCookie);
console.log('Cookie rotated and saved!');
}
});
// Proactively refresh cookies before they expire
const result = await refreshCookie(0);
if (result.success) {
await db.updateCookie(0, result.newCookie);
}
Production Success Story
RoGold uses RoZod to serve 800,000+ users daily:
Handles millions of API requests per day
Zero authentication issues with automatic CSRF/HBA handling
Type-safe development prevents runtime errors
Complete API coverage eliminates the need for multiple libraries
Automatic pagination and batching for optimal performance
Respects Roblox captchas and lets the actual users solve them
Getting Started
- Install RoZod:
npm install rozod
# or
yarn add rozod
# or
pnpm add rozod
- Basic Usage:
import { fetchApi, isAnyErrorResponse } from 'rozod';
import { getUsersUserdetails } from 'rozod/lib/endpoints/usersv1';
const userInfo = await fetchApi(getUsersUserdetails, { userIds: [1, 123456] });
if (!isAnyErrorResponse(userInfo)) {
console.log(userInfo.data[0].displayName);
}
- That’s it! RoZod handles authentication, CSRF tokens, and all the complex stuff automatically.
Migrating from noblox.js?
RoZod offers a superior developer experience with minimal migration effort:
noblox.js:
const noblox = require('noblox.js');
await noblox.setCookie('cookie');
const user = await noblox.getPlayerInfo(123456);
RoZod:
import { fetchApi, configureServer } from 'rozod';
import { getUsersUserdetails } from 'rozod/lib/endpoints/usersv1';
// Configure once, use everywhere
configureServer({ cookies: 'your_cookie_here' });
const user = await fetchApi(getUsersUserdetails, { userIds: [123456] });
Documentation & Resources
- Complete Documentation - Full API reference
- GitHub Repository - Source code and issues
- npm Package - Latest releases
Support & Community
- GitHub Issues - Bug reports and feature requests
- Documentation - Comprehensive API reference
- Discord - You can join our RoGold Discord for anything else
RoZod is maintained by Alrovi ApS, the company behind RoGold. We’re committed to providing a reliable and complete Roblox API client for the developer community.
RoZod is not affiliated with, maintained, authorized, endorsed, or sponsored by Roblox Corporation.

