Public website API
Use published Forgeport content and live Lineage 2 data in your own website
The public website API is a read-only JSON endpoint for custom frontends. It needs no API key and exposes only content and game data already intended for the public website.
No frontend secret
Do not add a Forgeport or game-server secret to the website. Browser code cannot keep one private. Cross-origin access is intentionally public; CORS is not an authentication boundary.
GET https://app.forgeport.net/api/v1/site/<portal-slug>The portal slug is the identifier used by its Forgeport address. For example,
my-server.forgeport.net uses my-server.
Fetch the website data
const response = await fetch(
"https://app.forgeport.net/api/v1/site/my-server",
{ headers: { Accept: "application/json" } },
);
if (!response.ok) {
throw new Error(`Forgeport API returned ${response.status}`);
}
const website = await response.json();The response contains:
| Field | Contents |
|---|---|
portal, appearance, site.content | Published identity, theme and enabled CMS sections |
news | Published announcements |
live | Online count, rankings, clans, sieges and bosses for the primary game server |
store, vote | Featured public offers and vote providers, with Player Portal links |
servers | The same live, store and vote data for every enabled game server |
links | Canonical website, Player Portal, registration, API and asset URLs |
version is currently 1. New fields may be added without changing the
version, so ignore fields your frontend does not use.
Multiple game servers
Use the top-level live, store and vote fields for the primary server. To
let visitors choose a server, render servers and use the selected entry's
online, rankings, clans, sieges, bosses, store, vote and
panelUrl fields.
A live-data field can be null when its connector is offline or does not
provide that capability. Treat null as unavailable; it is not the same as an
online count of 0 or an empty ranking.
Player actions
The API does not expose login, checkout, rewards or delivery operations. Send
visitors to the URLs returned by links, store, vote or the selected
server. Use a normal navigation and do not embed the Player Portal in an
iframe.
Availability and limits
The endpoint supports cross-origin browser requests and returns fresh data
with cache-control: no-store. The current limit is 120 requests per minute
for each portal and visitor IP.
| Status | Meaning |
|---|---|
200 | Published website data is available |
404 | The portal or a published public website was not found |
429 | Rate limit reached; respect the Retry-After header |
503 | The website or live API is temporarily unavailable |
The public website must be published and the Forgeport Trial or subscription must be active. Build an unavailable state into the custom frontend instead of keeping stale live data on screen.