● KissKH Embed API

Embed KissKH
on Any Website

A complete embed solution for webmasters. Drop a single <iframe> into your page and ship a fully-featured KissKH player with auto-decrypted subtitles and playback events.

Reliable Delivery

Content stays accessible even if the original source rotates or goes down.

Auto Subtitles

Multi-language subtitles are fetched, decrypted, and wired into the player automatically.

Playback Events

Receive real-time postMessage events - progress, complete, error.

KissKH Episodes

Embed KissKH drama episodes from a single endpoint.

Custom Accent

Match your site's branding - pass any hex color and the player skin updates instantly.

Iframe Ready

The endpoint returns a complete HTML page - drop it into any <iframe> and it works.

Frequently Asked Questions

What is KissKH Player?

KissKH Player is an embed API that lets you add a KissKH video player to your website with a single <iframe> tag.

What content is supported?

Only KissKH episode IDs are supported.

How do I embed a KissKH episode on my website?

Copy the iframe embed code from the Player tab and paste it into your HTML. For example: <iframe src="/kisskh/136523" width="100%" height="100%" allowfullscreen></iframe>

Where do subtitles come from?

Subtitles are fetched directly from KissKH. Some upstream subtitles ship AES-encrypted - the server decrypts them and delivers plain SRT to the player, so your viewers never see a broken caption track.

Can I track playback progress?

Yes. The player sends postMessage events to the parent window including time, complete, and error events. Use these to build progress tracking, auto-next, or watch history.

Can I access the player URL directly in a browser?

No. Player pages are iframe-only - direct browser access is blocked. You must embed them via an <iframe> on your own domain.

How do I change the player accent color?

Append ?color=%23ff0000 (URL-encoded hex) to any embed URL. The player skin will use your custom accent color.

Is autoplay supported?

Yes. Append ?autoplay=true to the embed URL to auto-start playback (subject to the browser's autoplay policy - a prior user gesture on the parent page is usually required).

Fill in a KissKH episode ID and press Load in the sidebar to preview.
Endpoint

Usage

Replace {braces} with your values. The endpoint returns a full HTML page ready to embed in an <iframe>.

GET /kisskh/{episode-id}
Embed a KissKH episode by its numeric episode ID. Multi-language subtitles are fetched, decrypted, and wired into the player automatically.
ParameterDescriptionRequired
episode-idNumeric KissKH episode IDRequired
?colorHex color for player accent (e.g. %23ff0000)Optional
?autoplayAuto-start playback - true to enable, omit for off (default)Optional
ID lookup

How to find the right episode ID

Open the KissKH episode page and read the ep= query parameter from the URL.

KissKH episode ID
URL: https://kisskh.co/Drama/Twinkling-Watermelon/Episode-1?id=7977&ep=136523&page=0&pageSize=100
Episode ID: 136523
Another example
URL: https://kisskh.co/Drama/Queen-of-Tears/Episode-1?id=11234&ep=210822&page=0&pageSize=100
Episode ID: 210822
Embed Example

Embed Example

HTML
<!-- Basic embed -->
<iframe
  src="/kisskh/136523"
  width="100%"
  height="100%"
  frameborder="0"
  allowfullscreen
></iframe>

<!-- With accent color and autoplay -->
<iframe
  src="/kisskh/136523?color=%232ad4b8&autoplay=true"
  ...
></iframe>
Integration

Player Events

The player posts postMessage events to the parent frame. Use these to build auto-next, progress tracking, and watch history.

time

Sent continuously during playback with current position.

complete

Sent when the episode finishes playing.

error

Sent when playback fails or a stream error occurs.

watching-log

Periodic watch-time log with currentTime and duration.

JavaScript
window.addEventListener("message", function (event) {
  let data = event.data;

  if (typeof data === "string") {
    try { data = JSON.parse(data); } catch (e) { return; }
  }

  if (data.channel === "kisskh") {
    if (data.event === "complete") { /* auto-next */ }
    if (data.event === "time")     { /* progress */ }
    if (data.event === "error")    { /* fallback */ }
  }

  if (data.type === "watching-log") {
    // data.currentTime, data.duration
  }
});
Direct URL access is disabled by frame-busting hosts. Embed via <iframe> on your own domain.