Gaia Service Interface (GSI) API
The GSI (Game Server Interface) was Gaia Online's internal API, exposed at a semi-public endpoint. It was never officially documented for third-party developers, but the community reverse-engineered it extensively from ~2008 onward. Multiple open-source libraries and userscripts were built on top of it.
Base URL
https://www.gaiaonline.com/chat/gsi/json.php
An older endpoint was also used in some scripts:
http://www.gaiaonline.com/chat/gsi/index.php?v=json
The JSON endpoint is the canonical modern form. The index.php?v=json form was used in older userscripts and behaves identically.
Authentication
The GSI does not use API keys or OAuth. Some endpoints are publicly accessible without any credentials (user lookups, item lookups, aquarium data). Others require a valid Gaia session cookie.
For session-authenticated requests, the cookie gaia55_sid must be set. The Grabbit PHP library (see below) uses a placeholder session to work around this for aquarium endpoints:
'Cookie' => 'gaia55_sid=' . str_repeat('a', 48)
Whether this placeholder actually works or the endpoint just ignores the cookie for public data is not documented.
Request Format
All requests are HTTP POST (as implemented by Grabbit) or GET (as used in userscripts). The payload structure is:
m = [method_id, [arg1, arg2, ...]]
X = unix_timestamp (10-digit)
For batch requests (multiple methods in one call), m is a JSON array of pairs:
m = [[method_id_1, [args_1]], [method_id_2, [args_2]], ...]
Example URL-encoded GET (from the "Is It Glowing?" userscript):
GET /chat/gsi/index.php?v=json
&m=[[6500,[1]],[6510,["12345",0,1]],[6511,["12345",0]]]
&X=1694000000
Response Format
Responses are JSON arrays. Each element corresponds to one method call in the request:
[
[method_id, success_bool, data_object],
[method_id, success_bool, data_object],
...
]
success_boolistrueon success,falseon error- On error,
data_objectis typically[error_code, error_message] - On success,
data_objectshape varies by method
Known Limitations and Rate Limits
No official rate limits were published. Community experience suggests:
- Rapid repeated polling (< 5 second intervals) could result in temporary blocks
- The "Is It Glowing?" script polled every 30 seconds per tank, which was considered safe
- Batch requests (multiple methods in one call) were encouraged to reduce request count
The GSI may be partially or fully down as of 2024–2025. Gaia Online's activity has declined dramatically, and there is no evidence the company actively maintains the API infrastructure.
Libraries Built on GSI
Grabbit (PHP)
- Repo: https://github.com/GlowGaia/Grabbit
- Install:
composer require glowgaia/grabbit - Framework: Saloon HTTP client
- Methods supported: 102 (users), 712 (items), 6510 (aquarium), 6511 (inhabitants)
- Status: Active as of late 2025
glibrary (Python)
- Repo: https://github.com/0x0018/glibrary
- Description: "A (very) generic library for programs targeting Gaia Online"
- Language: Python 100%
gaia-shell
- Repo: https://github.com/Protozoid/gaia-shell
- Description: "Shell for performing certain actions on Gaia Online dynamically"
- Notes: Minimal documentation; 3 commits
JGaia (Java)
- Repo: https://github.com/jazzbom/JGaia
- Description: Java library for interacting with Gaia Online forums
- Status: Inactive (1 commit, 0 stars)
GaiaOnline.Unity.Library (C#)
- Repo: https://github.com/GaiaOnlineCommunity/GaiaOnline.Unity.Library
- Description: Unity3D integration for rendering Gaia content
- License: AGPL-3.0
Sources
Endpoint URLs recovered from:
- GlowGaia/Grabbit source code (GSIRequest.php, GaiaConnector.php)
- is-it-glowing.user.js (batch request URL construction)
- mail-checker.user.js (method 102 usage)