Partner docs

Import the Game Catalog

Add free HTML5 games to your website with a single iframe, or pull the whole catalog into your own game pages through a feed. The games are hosted and updated by PlayKovo, so you never upload or host game files.

Quick start

  1. Open the game catalog and click a game to see its details.
  2. Switch to the HTML tab and press Copy.
  3. Paste the code into the HTML editor of your page, blog post or CMS block, then publish.
  4. Optional: register your website so launches from your domain show up in the partner dashboard.

No account needed to embed

Browsing the catalog and copying embeds is open to everyone. A partner account is only needed for the dashboard.

Games are not yours to claim

The games belong to PlayKovo, its developers or their licensors. Never present them as your own creations. Read the Partner Terms before you publish.

The iframe embed

Every game has a ready-made snippet. This is what it looks like for one game:

HTML

<div style="position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;background:#000;">
  <iframe
    src="https://playkovo.com/embed/rainbow-run"
    title="Rainbow Run on PlayKovo"
    style="position:absolute;inset:0;width:100%;height:100%;border:0;"
    loading="lazy"
    allow="fullscreen; autoplay; gamepad; pointer-lock"
    allowfullscreen>
  </iframe>
</div>
PartWhat it does
srcThe hosted player. Keep the /embed/<slug> address exactly as copied so game updates and fixes reach your site automatically.
aspect-ratio:16/9Keeps the game responsive: the box scales with the width of your page and holds a landscape shape.
allowLets the game use fullscreen, sound, gamepads and pointer lock. Removing values can break controls.
loading="lazy"The game only loads when the visitor scrolls near it, which keeps your page fast.

Do not add a referrer restriction

Do not put referrerpolicy="no-referrer" on the iframe. PlayKovo identifies your website from the referrer, and without it your launches cannot be counted in analytics.

Sizing and portrait games

The default snippet is a 16:9 landscape box. Each game lists its orientation in the catalog (landscape, portrait or any) and its devices (desktop, mobile or all). Pick games that match the kind of visitors your site has.

For a portrait game, use a tall box and limit its width so it does not become huge on desktop:

HTML

<div style="position:relative;width:100%;max-width:420px;margin:0 auto;aspect-ratio:9/16;overflow:hidden;background:#000;">
  <iframe src="https://playkovo.com/embed/GAME-SLUG" title="Game on PlayKovo"
    style="position:absolute;inset:0;width:100%;height:100%;border:0;"
    loading="lazy" allow="fullscreen; autoplay; gamepad; pointer-lock" allowfullscreen></iframe>
</div>

Content Security Policy

If your site sets a Content-Security-Policy header, add frame-src https://playkovo.com (or your current PlayKovo domain), otherwise the browser blocks the game.

JSON and XML feed

If you want to build your own game listing, or import games into a CMS, read the feed instead of copying games one by one. There is no API key.

Endpoints

GET https://playkovo.com/api/embed-games?format=json
GET https://playkovo.com/api/embed-games?format=xml
  • JSON is the default when format is missing or unknown.
  • The response is cached for 5 minutes. Fetching it more often than that returns the same data.
  • The feed only contains games currently enabled for the catalog. Sync regularly and remove games from your site that disappear from the feed.

JSON response shape

JSON

{
  "provider": "PlayKovo",
  "count": 35,
  "updatedAt": "2026-09-21T10:00:00.000Z",
  "games": [
    {
      "id": "…",
      "slug": "rainbow-run",
      "title": "Rainbow Run",
      "shortDescription": "…",
      "thumbnailUrl": "https://assets.playkovo.com/…",
      "coverUrl": "https://assets.playkovo.com/…",
      "deviceSupport": "all",
      "screenOrientation": "landscape",
      "categories": ["arcade"],
      "embedUrl": "https://playkovo.com/embed/rainbow-run",
      "iframe": "<div style=…>…</div>"
    }
  ]
}

The XML feed has the same data: a <games> root with one <game> element per game, and <categories> and <tags> holding repeated child elements.

Terminal

curl "https://playkovo.com/api/embed-games?format=json" -o playkovo-games.json

Field reference

FieldTypeDescription
idstringStable game ID.
slugstringURL name of the game. Use it as your own unique key.
titlestringDisplay name. gameName holds the same value.
shortDescriptionstringOne or two sentences, good for cards.
descriptionstringFull description.
instructionsstringHow to play.
controlsstringKeyboard, mouse or touch controls.
thumbnailUrlstringCard image. thumbnail and iconUrl currently point to the same file.
coverUrlstringLarger banner image. Falls back to the thumbnail when a game has no cover.
deviceSupport"all" | "desktop" | "mobile"Devices the game supports.
screenOrientation"landscape" | "portrait" | "any"Screen orientation the game is designed for.
languagestringGame language code, for example en.
categoriesstring[]Category slugs.
tagsstring[]Tag slugs.
embedUrlstringAddress for your own iframe.
iframestringReady-made responsive snippet, same as in the catalog.
gameUrlstringThe game page on PlayKovo.
width / heightnumberSuggested size, 960 × 540.

Build your own game grid

This example loads the feed in the browser and shows every game as a card that opens the embed in a dialog. Adapt it to your framework.

JavaScript

<div id="games" style="display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px"></div>
<script>
  fetch("https://playkovo.com/api/embed-games?format=json")
    .then((response) => response.json())
    .then(({ games }) => {
      const root = document.getElementById("games");
      for (const game of games) {
        const card = document.createElement("a");
        card.href = game.embedUrl;
        card.target = "_blank";
        card.innerHTML =
          '<img src="' + game.thumbnailUrl + '" alt="" style="width:100%;border-radius:12px">' +
          "<strong>" + game.title + "</strong>";
        root.appendChild(card);
      }
    });
</script>

For a real site, cache the feed on your server, sort or filter with categories, deviceSupport and screenOrientation, and render game.iframe on your own game page.

Analytics and tracking

Embeds work without registration. To see your own launches in the partner dashboard, register the website that hosts the games.

  1. Register your website with the exact domain that shows the iframe.
  2. Wait for review. Only reviewed domains are attached to your account.
  3. Keep the embed as copied. PlayKovo reads your domain from the referrer of the page containing the iframe.
  4. Open the dashboard to see the results. Numbers are read live each time you open it.

What the numbers mean

MetricMeaning
Game launchesHow many times a visitor pressed Play on one of your embedded games.
Players reachedHow many different browsers launched a game. Someone who plays five times counts once for that day, and the same person on two devices counts twice.

Launches are counted only with cookie consent

A launch is recorded only when the visitor has accepted cookies. Visitors who decline are not counted, so the dashboard shows a lower number than the real traffic.

Troubleshooting

ProblemCheck this
The game area is blank or shows a browser errorYour site's Content-Security-Policy may block it. Add frame-src https://playkovo.com. Also check that the code was pasted in an HTML block, not as plain text.
The game is too small or cut offKeep the aspect-ratio wrapper. For portrait games use the tall version in the sizing section.
Sound or controls do not workKeep the full allow attribute from the snippet.
No numbers in the dashboardMake sure the domain is approved, the iframe has no referrerpolicy attribute, you have launched a game yourself with cookies accepted, then reload the dashboard.
A game stopped loadingIt may have been removed from the catalog. Check the feed and replace it with another game.

Need help?

Questions about embeds, website review or the catalog: partners@playkovo.com. The rules for using the catalog are in the Partner Terms.

We use cookies for basic site analytics. Read our Privacy policy for details.