Profiles for builders
A small, well-shaped JSON object for the open web. Drop it into your app, your community, or your link-in-bio integration in a couple of lines.
{
"handle": "aditya",
"name": "Aditya",
"avatar": "https://altmeetyou.com/u/aditya.png",
"bio": "Building tiny tools for the open web.",
"verified": true,
"links": [
{ "label": "Site", "url": "https://example.com" },
{ "label": "GitHub", "url": "https://github.com/aditya" }
]
}A focused surface area designed to stay stable and easy to use across versions.
Read public profile data with cache-friendly responses optimized for edge delivery.
A predictable model for name, avatar, links, and verification you can build against.
Subscribe to profile updates and stay in sync with your own systems.
Drop our profile widget into existing apps without changing your sign-in flow.
Quick start
Create your account
Sign up and grab your handle. You will use it to test the public profile endpoint.
Read the JSON
Hit the public endpoint and inspect the profile shape — name, avatar, verified, links.
Render in your app
Use the snippet in any React, Vue, or vanilla project. SSR friendly out of the box.
// fetch a public profile (no auth required)
const res = await fetch('https://altmeetyou.com/api/profile/aditya');
const profile = await res.json();
console.log(profile.name); // "Aditya"
console.log(profile.verified); // true
console.log(profile.links); // [{ label, url }, ...]import { useEffect, useState } from 'react';
export function ProfileCard({ handle }) {
const [p, setP] = useState(null);
useEffect(() => {
fetch(`/api/profile/${handle}`)
.then((r) => r.json())
.then(setP);
}, [handle]);
if (!p) return null;
return (
<a href={p.url} className="card">
<img src={p.avatar} alt={p.name} />
<h3>{p.name}</h3>
<p>{p.bio}</p>
</a>
);
}Create an account to grab your handle, then you are one fetch call away.