DevelopersEmbed kit
Show what a project is building, on any site.
A live widget from HEY's own records: activity status, the latest ship, meaningful ships in 30 days, verified builder, and the changes HEY recorded. Every widget links to the project's evidence on HEY. No price, no score, no ranking.
Published projects only. A contract is read on Robinhood Chain (4663).
Live preview
This preview is HEY testing its own widget, so it is never counted as a site using it.
HTML · Web Component
<script src="https://heyresearch.xyz/embed/hey-project.js" async></script>
<hey-project project="pcdotfan-kyberswap-cli" variant="builder" theme="auto">
<a href="https://heyresearch.xyz/project/pcdotfan-kyberswap-cli">kyberswap-cli on HEY Research Lab</a>
</hey-project>React
import { useEffect, useRef, useState } from 'react';
// HEY Research Lab project intelligence, from https://heyresearch.xyz/developers/embeds
export function HeyProject() {
const frame = useRef(null);
const [height, setHeight] = useState(196);
useEffect(() => {
const onMessage = (event) => {
if (!frame.current || event.source !== frame.current.contentWindow) return;
const data = event.data;
if (data && data.type === 'hey-embed:height' && typeof data.height === 'number') {
setHeight(Math.min(Math.max(Math.ceil(data.height), 60), 1200));
}
};
window.addEventListener('message', onMessage);
return () => window.removeEventListener('message', onMessage);
}, []);
return (
<iframe
ref={frame}
src={"https://heyresearch.xyz/embed/project/pcdotfan-kyberswap-cli?variant=builder&theme=auto"}
title={"kyberswap-cli on HEY Research Lab"}
height={height}
loading="lazy"
sandbox="allow-scripts allow-popups allow-popups-to-escape-sandbox"
style={{ border: 0, width: '100%', display: 'block' }}
/>
);
}
API · the same facts as JSON
curl "https://heyresearch.xyz/api/projects/pcdotfan-kyberswap-cli/snapshot"A page that allows no scripts: plain iframe
iframe
<iframe src="https://heyresearch.xyz/embed/project/pcdotfan-kyberswap-cli?variant=builder&theme=auto" title="kyberswap-cli on HEY Research Lab" width="100%" height="196" loading="lazy" sandbox="allow-scripts allow-popups allow-popups-to-escape-sandbox" style="border:0;display:block;max-width:100%"></iframe>What a widget shows, and what it never does
- The same facts as the project page. Each figure is read by the function HEY's own page uses; nothing is recomputed for a widget. A figure HEY does not hold is left out, never shown as 0.
- Builder evidence only. No price, market cap, liquidity, volume, score or rank. The change and signal widgets leave market events out, so a market move never reads as a builder claim.
- Nothing on your page is read. The script reads its own attributes, draws one sandboxed frame and resizes it when that frame reports its height. No cookie, no storage, no third-party request, and the frame's policy allows only its own stylesheet and one same-origin script.
- What HEY counts. That a widget was shown, by variant, and the registrable domain of the page it was shown on (from the frame request's referrer; never a full URL), plus clicks through to HEY. No visitor identifier, no fingerprint, and crawlers are not counted.
- Fresh within minutes. A widget reads HEY's database, never a provider, and may be up to two minutes behind the project page.
Prefer an image? Every project also has a README badge. Need the facts in your own design? The public API answers the same questions as JSON.