Profiles
Hosted single-page profile sites on a *.hep.gg slot or your own custom domain, with live Discord presence, embedded music, and built-in contact forms.
Profiles
Profiles are hosted single-page websites (think Carrd.co) that Hep.gg serves for you on a *.hep.gg slot or your own custom domain. You build a profile entirely in the dashboard at hep.gg/dashboard/profiles: pick a template, edit the theme and content, attach a domain, and toggle the contact forms. Once a profile is published it is served as a server-rendered page on its mounted host, complete with live Discord presence, an embedded music player, social-share cards, and one-way contact forms that reach you over SMS, email, or Discord.
This is a hosted site product, not a programmatic API. There is no "Profiles API key" and no public endpoint to create, edit, or list profiles. All profile management is done in the dashboard behind your hep.gg session. What is documented here is the set of public, unauthenticated endpoints that a published profile exposes to visitors and their browsers: the rendered page, the Open Graph card, the live presence feed, the music proxy, and the contact forms. These are the pieces you would script against or wire into a custom-built profile.
Authentication
There is no public API key for Profiles.
- Visitor-facing endpoints are unauthenticated. Page render, the OG image, presence reads, the music proxy, and the contact-form POSTs are all public. Access is gated by the profile row, not by a token: a profile is only served when it is published (
is_public), not suspended, and not expired. - Contact forms require a Cloudflare Turnstile token instead of an API key. The token proves the request came from a real browser; see Contact forms.
- Management is dashboard-only. Creating, editing, listing, and deleting profiles, plus attaching domains and buying slots, all happen in the dashboard authenticated by your hep.gg session cookie. None of those routes are public and none are documented here.
Where the public SMS, email, and Discord forms need credentials to deliver (an SMS key, an email key, a verified phone, a Discord channel), Hep.gg attaches your stored credentials server-side. You set those up once in the dashboard; visitors never see or supply them.
Visibility and availability
A profile is served publicly only when all of these are true on its row:
is_public = 1(you have published it from the dashboard).suspended = 0(the account and profile are in good standing).expires_atis null, or still in the future.
If any of these fails, the rendered page and the OG image both return 404, and the contact forms return 404.
Free vs premium slots. A free approved account gets 1 profile slot; a premium account gets 2. Either tier can stack additional 30-day slots bought from the dashboard ($2 each). When premium lapses, profiles past the free-tier cap are unpublished newest-first (the data is preserved and republishes automatically when premium is restored).
Premium-only features on the public page:
- The live Discord presence card is hidden for non-premium owners, even if the toggle is on.
- The "Powered by Hep.gg" footer is forced visible for non-premium owners; premium owners can hide it.
These are enforced both when you edit the profile and again at render time, so a stale flag can never expose a premium-only feature on a free profile.
Quickstart
Read the live Discord presence snapshot for a profile owner. This is the smallest public call, no auth required:
curl https://hep.gg/api/v1/profiles/presence/USER_IDconst res = await fetch("https://hep.gg/api/v1/profiles/presence/USER_ID");
const { data } = await res.json();
console.log(data.presence); // PresenceSnapshot or nullUSER_ID is the profile owner's Hep.gg user ID (their Discord-linked account ID). The response is the standard envelope, { "ok": true, "data": { "presence": ... } }, where presence is a snapshot object or null when the cache is empty.