Skip to content
Looking for in-game vote rewards?

Connect your server to confirmed votes with a private API and duplicate-safe delivery.

Set up vote rewards ↗

THE OWNER TOOLKIT

Your community.
Connected.

Bring your ShardHop listing to your own website. Pick a style, paste a snippet, and give players a direct path to your server.

Free to useNo API keyLight & dark themesPlain HTML friendly

Build your widget

One snippet. No dependencies.

The last part of your listing URL: shardhop.com/server/your-server. Your listing must be approved and publicly visible.

WordPress: use a Custom HTML block where scripts are allowed. Other builders: use their HTML/embed block. A script-blocking host needs a plain listing link or a custom API integration.
EXAMPLE PREVIEW · NOT A LIVE SERVER
SHARDHOP

Your world goes here.

Your game · Your rules

A place for your next great adventure, and the people who make it happen.

View on ShardHop ↗

Your title, game and description come from your public listing.
Responsive, with styles isolated from your website.

Need a listing? Add your server →

BUILD SOMETHING YOUR OWN

A small API. Plenty of possibilities.

Read public listing details as JSON for your own server page, community dashboard or custom badge. No account token, callback secret or API key belongs in this request.

GET https://shardhop.com/integrations/server?v=1&slug=your-server

Fetch a listing

const response = await fetch(
  'https://shardhop.com/integrations/server?v=1&slug=your-server',
  { credentials: 'omit' }
);
if (!response.ok) throw new Error('Listing unavailable');
const { data } = await response.json();
document.querySelector('#server-name').textContent = data.title;

Replace your-server with your listing slug. Add an element with id="server-name" to use this example. Render API text with textContent, and handle errors gracefully.

Response fields

FieldWhat it contains
api_version1
data.id / slug / titlePublic listing identifiers and name.
data.tagline / rates / eraOwner-written listing details; may be empty.
data.gameGame slug and title.
data.profile_urlCanonical ShardHop listing URL.
data.statsStored monthly and total votes, review count and average rating. Rating is null when there are no reviews.
capabilitiesThe voting flag reports whether voting is enabled. Live player counts remain unavailable. Use the private reward API for reward verification.

Good defaults for your integration

  • GET and HEAD read a single listing. OPTIONS supports browser preflight. Other methods return 405.
  • Allow at least 60 seconds between refreshes. Successful responses can be cached for 60 seconds. Widgets fetch once per page load.
  • Cross-origin public reads are enabled. Send requests without credentials; write operations and private owner data are not supported.
  • A malformed slug or unsupported version returns 400. Missing, hidden, suspended or inactive-game listings return the same 404 response.
  • Errors use {"error":{"code":"not_found","message":"Public listing not found."}}. Site maintenance or access restrictions may return a non-JSON response: always check the status and catch parsing/network errors.
Does this add voting or in-game rewards?

This public widget does not grant rewards. Use our private vote reward API to retrieve confirmed votes and acknowledge in-game delivery. Signed push callbacks are available in the private vote reward API. Live player counts remain unavailable.

What happens when my listing is unavailable?

The widget displays an honest unavailable message and a link to ShardHop. It never exposes pending moderation data or pretends a server is online.

Can I use a strict Content Security Policy?

Allow scripts and images from https://shardhop.com and connections to https://shardhop.com. The widget uses inline Shadow DOM styles; if your policy forbids these, use the JSON API with your own approved styles instead.

Where do I get help?

Visit Development & Server Operations for integration questions, or contact ShardHop for listing issues.

Back
Top