Heartbeat Public API

Heartbeat has no documented API, but the JSON calls its own pages make under h.ki/api answer without sign-in; seven were seen on Nov 7, 2026 (a moment, a playlist's or viki's moments, a video's community moments, suggestions, comments, tags and a heartbeat's playlists), each wrapped in {"code":0,"data":{"objList":[...]}}.

Heartbeat publishes no API documentation, but the pages of h.ki fetch their data as JSON from https://h.ki/api/..., and seven of those calls answered a plain request without sign-in on Nov 7, 2026: one moment, a playlist's or viki's moments, a video's community moments, suggested moments, comments, tags, and a heartbeat's playlists. The community list is the one the Dec 25, 2023 features video describes, where you "look at other people's moments in the community" beside a video. Everything below is what Vi.ki saw by watching h.ki's own network requests and trying each address once; it is not an official interface and may change without notice.

Quick facts

Base address https://h.ki/api/
Sign-in None needed for the seven calls below
Format JSON: {"code":0,"message":"","data":{"objList":[...]}}
Documentation None published; no API key, terms or rate limit stated
Paging page and per_page (h.ki's pages ask for 8 to 100)
Ids Moments mo..., vikis vi..., playlists li..., heartbeats he..., photos ph...
For lists of everything The sitemaps at h.ki/sitemaps/index.xml, which robots.txt names
Checked Nov 7, 2026

The seven calls

Call Returns
GET /api/moments/{custom_id} One moment, e.g. /api/moments/morxesfsh
GET /api/moments?playlist_id={id}&source=me&page=1&per_page=50 A playlist's or viki's moments in order (data.objList[0] = {total, items}); add sort_by[][field]=order&sort_by[][sort]=asc for h.ki's order
GET /api/moments?source=others&yt_video_id={YouTube id}&moment_id={custom_id}&page=1&per_page=50 A video's community moments, the list beside the player (Moment Pages)
GET /api/recommender/suggested?page=1&per_page=8&exclude_moments[]={custom_id} Suggested moments, the row under a moment page's list
GET /api/comments?video_id={YouTube id}&page=1&per_page=35 A video's comments on Heartbeat (comments, pagination)
GET /api/moments/tags?yt_video_id={YouTube id}&per_page=100&source=others The tags on a video's moments (source=me for your own)
GET /api/playlists?handle=@{handle}&source=owner&page=1&per_page=50&sort_column=created_at&sort=desc A heartbeat's playlists, each with custom_id (li...), name, visibility, default_sort_order, moments_count (Playlists)

h.ki's pages add fields=fav_count,own_fav to the moment lists; signed out, own_fav has nothing to say. The viki h.ki/about, for example, is playlist 21279: its moment list answered with 239 moments.

A sample request

curl "https://h.ki/api/moments/morxesfsh"

The answer, shortened (Nov 7, 2026):

{"code":0,"message":"","data":{"objList":[{
  "id":7815,
  "custom_id":"morxesfsh",
  "title":"Press H while watching any video on YouTubeto crea te a moment",
  "start_time":20.594200134277344,
  "end_time":null,
  "url":"https://www.youtube.com/embed/Nr2Q9KEiUjQ?showinfo=0&rel=0&autohide=1&enablejsapi=1&autoplay=0",
  "source":"user",
  "fav_count":0,
  "playback_count":12,
  "visibility":"public",
  "created_at":"2023-12-25T16:06:20.000Z",
  "heartbeats":[{"custom_id":"hez7xmbh5","name":"...","handle":"...","avatar":"..."}],
  ...
}]}}

Fields of a moment

Field Meaning
custom_id The moment's address on h.ki: https://h.ki/<custom_id>
title, description As the creator wrote them
start_time Seconds from the start, with fractions (20.594 is 0:20.6)
end_time Seconds, or null for a moment that plays on
url The YouTube embed address of the video
yt_video_id, video The YouTube id; video adds the YouTube title, channel and aspect ratio ("16:9")
source "user" for one a person made
fav_count, playback_count, trending_score Favorites, plays on Heartbeat, a ranking score
visibility "public" for the moments we read
is_title_draft, is_title_foreign Flags on the title (0 or 1)
hash A 64-character hex digest Heartbeat keeps for the moment
created_at, updated_at, deleted_at Times in UTC
heartbeats The creator: custom_id (he...), name, handle, avatar, description
tags, playlist_details The moment's tags and the playlists it is in

List items add views, length_in_sec, handle, heartbeat_owner_display_name, is_short, total_comments, unlisted, unlisted_video and order. Thumbnails are YouTube's own, https://img.youtube.com/vi/<id>/0.jpg.

What is not there

  • Search and the home page: their results came with the page itself; no JSON call was seen for them (Search).
  • Anything signed in: saving, editing, favorites and payments go through calls Vi.ki did not see.
  • Analytics: h.ki's pages post beacons to a.h.ki/collect; a.h.ki itself sits behind a login.
  • gRPC: h.ki/about says the front end uses gRPC; only the REST addresses above were seen.

Using it politely

These addresses exist for Heartbeat's own pages, and every request reaches Heartbeat's servers. If you read them, ask one thing at a time, keep what you get instead of asking again, and never loop over every moment or heartbeat: for a list of everything, the sitemaps (creators.xml, moments.xml, playlists.xml, pretty_links.xml, tags.xml, vikis.xml in h.ki/sitemaps/index.xml) are what robots.txt points crawlers to. Moments belong to the people who made them, and the creator's name and avatar come with each one; the Privacy Policy covers them. Vi.ki tried each call once and looped over none.

We think a small documented version of these calls (a moment, a viki's moments, a heartbeat's playlists) would be Heartbeat's quickest route to being built on, since the data is already public and the shapes are already simple. Until then, treat them as unofficial: a field name or path can change with any release of h.ki (the footer read "Heartbeat 2.107.59" on Nov 7, 2026).

Frequently asked questions

Does Heartbeat have a public API?

Not a documented one. The JSON calls its pages make under h.ki/api/ answered without sign-in on Nov 7, 2026, and they are listed above.

Take the id from h.ki/<id> and request https://h.ki/api/moments/<id>; start_time is in seconds.

Is there an API key or rate limit?

No key is needed and no limit is published. Ask sparingly and keep what you get.

How do I list every viki or moment?

Use the sitemaps listed in h.ki/sitemaps/index.xml rather than paging through the API.

Can I write to Heartbeat through the API?

Not without signing in; saving and editing were not part of what a visitor could see.

Sources

Moments

Heartbeat features - No fluff

Freedom!

  1. Heartbeat publishes no API documentation, but the pages of h.ki fetch their data as JSON from https://h.ki/api/…

See also

About this page

Last updated Nov 7, 2026 by the Vi.ki team. Page text CC BY-SA 4.0.

Edit History

Hotkeys

/
Jump to the search box
? or Ctrl + /
Open this list
Esc
Close this list, the photo viewer, or the account menu

Video

Space or K
Play or pause
← →
Back or forward 5 seconds
J L
Back or forward 10 seconds
0 to 9
Go to 0% to 90% of the video
, .
Previous or next frame, while paused
M
Mute or unmute
C
Captions on or off
F
Full screen on or off
A D
Previous or next moment

Photo viewer

← → or A D
Previous or next photo
↑ ↓ or W S
Previous or next photo
Home End
First or last photo
I
Show or hide the photo's info
Z
Clickless on or off: a pointer over a thumbnail shows it
N
Compare with the last photo: back to the one shown before this, and N again comes back
Q
Move the thumbnails to the next edge: top, bottom, left and round
, or Ctrl + ,
Open or close the viewer's settings
V
Clickless pan: a zoomed photo follows the pointer, rather than being dragged
Shift
Browse on or off
B
Show or hide the button bar
T
Show or hide the thumbnails
1
100% zoom on or off
0
Rate the photo as no opinion; again takes the answer back
+ -
Rate the photo a step higher or lower
F
Full screen: the photo alone. F again puts everything back.
Back to top