· Home

myframely /api/v1 demo

Exercises all three response shapes (JSON / HTML fragment / web component) against a single URL. Server-loads via the authenticated path; web-component live-fetch uses /demo/proxy as a stand-in for a consumer's backend proxy.

1. JSON shape=json

{
  "url": "https://x.com/AhmadxVibez/status/2046836348754022496",
  "canonical": "https://x.com/AhmadxVibez/status/2046836348754022496",
  "title": "Ahmad on X",
  "description": "One of the most “heartbreaking” movies 🍿 🎥",
  "siteName": "X",
  "siteLogoUrl": "https://storage.mostly.film/myframely/logo/x.com/6503a35c95cdf2d08ed83e17ae81c8b0e58f49c2.ico",
  "favicon": "https://x.com/favicon.ico",
  "images": {
    "thumbnail": "https://storage.mostly.film/myframely/previews/a3b54214-1af6-477e-a34b-781b01e524c8/8de45d932714.jpg",
    "hero": "https://storage.mostly.film/myframely/previews/a3b54214-1af6-477e-a34b-781b01e524c8/bb672e832444.jpg",
    "origin": "https://pbs.twimg.com/amplify_video_thumb/2046836252113010688/img/scpdfpgO2J3c-VG-.jpg"
  },
  "provider": {
    "name": "twitter",
    "videoId": "2046836348754022496",
    "embedUrl": "https://platform.twitter.com/embed/Tweet.html?id=2046836348754022496&frame=true&dnt=true&theme=light&hideConversation=true&hideThread=true",
    "thumbnailUrl": "https://pbs.twimg.com/amplify_video_thumb/2046836252113010688/img/scpdfpgO2J3c-VG-.jpg",
    "aspectRatio": "1 / 1",
    "media": {
      "kind": "video",
      "posterUrl": "https://pbs.twimg.com/amplify_video_thumb/2046836252113010688/img/scpdfpgO2J3c-VG-.jpg",
      "mp4Url": "https://video.twimg.com/amplify_video/2046836252113010688/vid/avc1/320x354/opndrXJ_Ayc8XxUv.mp4",
      "aspectRatio": "1 / 1",
      "durationMs": null
    },
    "author": {
      "name": "Ahmad",
      "verified": false,
      "avatarUrl": "https://pbs.twimg.com/profile_images/2024518094253588480/rABGxkx7_normal.jpg",
      "screenName": "AhmadxVibez"
    }
  },
  "fetchedAt": "2026-10-13T15:36:50.897Z"
}

2. HTML fragment shape=html

variant=thumbnail (default)
variant=hero
Ahmad @AhmadxVibez

One of the most “heartbreaking” movies 🍿 🎥

X
raw thumbnail HTML
<div class="mPreview_card" data-variant="thumbnail"><a class="mPreview_link" href="https://x.com/AhmadxVibez/status/2046836348754022496" target="_blank" rel="noopener nofollow"><img class="mPreview_thumb" src="https://storage.mostly.film/myframely/previews/a3b54214-1af6-477e-a34b-781b01e524c8/8de45d932714.jpg" alt="" loading="lazy"><div class="mPreview_body"><h3 class="mPreview_title">Ahmad on X</h3><p class="mPreview_description">One of the most “heartbreaking” movies 🍿 🎥</p><div class="mPreview_meta"><img class="mPreview_logo" src="https://storage.mostly.film/myframely/logo/x.com/6503a35c95cdf2d08ed83e17ae81c8b0e58f49c2.ico" alt="" loading="lazy"><span class="mPreview_site">X</span></div></div></a></div>

3. Web component (pre-fetched) <myframely-card preview=...>

default
theme="dark"
variant="hero"
themed via --mPreview-* (small/tight)

4. Web component (live-fetch) <myframely-card url=... endpoint=/demo/proxy>

This component fetches the preview from /demo/proxy on mount, no pre-serialized attribute. Simulates the pattern a consumer would use if they proxy the preview call through their own backend.