me.linkna.linkinbio

lexicon.store View official

Documentation

A user's link-in-bio page containing cards, theme configuration, and social icons.

main record

A user's link-in-bio page containing cards, theme configuration, and social icons.

Record Key literal:self Fixed literal value

Properties

socialIcons array of ref #socialIcon Optional

Social media icons displayed on the profile.

theme string Optional

Deprecated: use themeConfig instead.

themeConfig ref #themeConfig Optional

No description available.

View raw schema
{
  "key": "literal:self",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "cards"
    ],
    "properties": {
      "cards": {
        "type": "array",
        "items": {
          "refs": [
            "#linkCard",
            "#headerCard",
            "#widgetGoodreads",
            "#widgetGithub",
            "#widgetTealfm",
            "#widgetLastfm",
            "#widgetClock",
            "#widgetYoutube",
            "#widgetPatreon",
            "#widgetSubstack",
            "#widgetBeehiiv",
            "#widgetVideo",
            "#widgetTwitch",
            "#widgetDiscord",
            "#widgetReddit",
            "#widgetMedium",
            "#widgetMap"
          ],
          "type": "union"
        },
        "description": "Ordered list of cards on the page."
      },
      "theme": {
        "type": "string",
        "description": "Deprecated: use themeConfig instead."
      },
      "socialIcons": {
        "type": "array",
        "items": {
          "ref": "#socialIcon",
          "type": "ref"
        },
        "description": "Social media icons displayed on the profile."
      },
      "themeConfig": {
        "ref": "#themeConfig",
        "type": "ref"
      },
      "connectedServices": {
        "ref": "#connectedServices",
        "type": "ref"
      }
    }
  },
  "description": "A user's link-in-bio page containing cards, theme configuration, and social icons."
}
connectedServices object

Saved service credentials/identifiers for pre-filling widget forms.

Properties

githubUsername string Optional

GitHub username.

goodreadsUserId string Optional

Goodreads numeric user ID.

lastfmUsername string Optional

Last.fm username.

View raw schema
{
  "type": "object",
  "properties": {
    "githubUsername": {
      "type": "string",
      "description": "GitHub username."
    },
    "lastfmUsername": {
      "type": "string",
      "description": "Last.fm username."
    },
    "goodreadsUserId": {
      "type": "string",
      "description": "Goodreads numeric user ID."
    }
  },
  "description": "Saved service credentials/identifiers for pre-filling widget forms."
}
githubContributionDay object

A single day's contribution data from GitHub.

Properties

count integer Required

Number of contributions on this day.

date string Required

Date in YYYY-MM-DD format.

level integer Required

Contribution intensity level (0=none, 4=highest).

minimum: 0maximum: 4
View raw schema
{
  "type": "object",
  "required": [
    "date",
    "count",
    "level"
  ],
  "properties": {
    "date": {
      "type": "string",
      "description": "Date in YYYY-MM-DD format."
    },
    "count": {
      "type": "integer",
      "description": "Number of contributions on this day."
    },
    "level": {
      "type": "integer",
      "maximum": 4,
      "minimum": 0,
      "description": "Contribution intensity level (0=none, 4=highest)."
    }
  },
  "description": "A single day's contribution data from GitHub."
}
goodreadsBook object

A book from a Goodreads shelf.

Properties

author string Required

Book author.

coverUrl string Optional

URL to the book cover image.

rating integer Optional

User's rating (1-5), or absent if unrated.

minimum: 0maximum: 5
title string Required

Book title.

View raw schema
{
  "type": "object",
  "required": [
    "title",
    "author"
  ],
  "properties": {
    "link": {
      "type": "string",
      "description": "URL to the book on Goodreads."
    },
    "title": {
      "type": "string",
      "description": "Book title."
    },
    "author": {
      "type": "string",
      "description": "Book author."
    },
    "rating": {
      "type": "integer",
      "maximum": 5,
      "minimum": 0,
      "description": "User's rating (1-5), or absent if unrated."
    },
    "coverUrl": {
      "type": "string",
      "description": "URL to the book cover image."
    }
  },
  "description": "A book from a Goodreads shelf."
}
headerCard object

A section header/divider card.

Properties

alignment string Optional

Text alignment for the header. Defaults to the user's button alignment.

enabled boolean Optional

Whether the header is visible on the public page. Defaults to true.

id string Required

Unique identifier for the card.

text string Required

Header text displayed as a section divider.

maxLength: 100 bytes
type string Required

Card type discriminator.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "text"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "text": {
      "type": "string",
      "maxLength": 100,
      "description": "Header text displayed as a section divider."
    },
    "type": {
      "type": "string",
      "const": "header",
      "description": "Card type discriminator."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the header is visible on the public page. Defaults to true."
    },
    "alignment": {
      "enum": [
        "left",
        "center",
        "right"
      ],
      "type": "string",
      "description": "Text alignment for the header. Defaults to the user's button alignment."
    }
  },
  "description": "A section header/divider card."
}
linkCard object

A standard link card.

Properties

enabled boolean Optional

Whether the card is visible on the public page. Defaults to true.

highlighted boolean Optional

Whether the card is visually highlighted.

id string Optional

Unique identifier for the card.

text string Optional

Display text for the card (falls back to URL domain if empty).

maxLength: 100 bytes
type string Optional

Card type discriminator. Value: 'link' or absent for link cards.

url string uri Optional

URL the card links to.

View raw schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "URL the card links to."
    },
    "text": {
      "type": "string",
      "maxLength": 100,
      "description": "Display text for the card (falls back to URL domain if empty)."
    },
    "type": {
      "type": "string",
      "description": "Card type discriminator. Value: 'link' or absent for link cards."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the card is visible on the public page. Defaults to true."
    },
    "highlighted": {
      "type": "boolean",
      "description": "Whether the card is visually highlighted."
    }
  },
  "description": "A standard link card."
}
mediumArticle object

A Medium article.

Properties

claps integer Required

Number of claps.

publishedAt string Required

When the article was published.

readingTime integer Optional

Estimated reading time in minutes.

subtitle string Optional

Article subtitle.

title string Required

Article title.

url string Required

Article URL.

View raw schema
{
  "type": "object",
  "required": [
    "title",
    "url",
    "publishedAt",
    "claps"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "Article URL."
    },
    "claps": {
      "type": "integer",
      "description": "Number of claps."
    },
    "title": {
      "type": "string",
      "description": "Article title."
    },
    "subtitle": {
      "type": "string",
      "description": "Article subtitle."
    },
    "publishedAt": {
      "type": "string",
      "description": "When the article was published."
    },
    "readingTime": {
      "type": "integer",
      "description": "Estimated reading time in minutes."
    }
  },
  "description": "A Medium article."
}
redditPost object

A Reddit post.

Properties

numComments integer Required

Number of comments.

score integer Required

Post score.

subreddit string Required

Subreddit name.

title string Required

Post title.

url string Required

Post URL.

View raw schema
{
  "type": "object",
  "required": [
    "title",
    "subreddit",
    "url",
    "score",
    "numComments"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "Post URL."
    },
    "score": {
      "type": "integer",
      "description": "Post score."
    },
    "title": {
      "type": "string",
      "description": "Post title."
    },
    "subreddit": {
      "type": "string",
      "description": "Subreddit name."
    },
    "numComments": {
      "type": "integer",
      "description": "Number of comments."
    }
  },
  "description": "A Reddit post."
}
socialIcon object

A social media icon link.

Properties

id string Required

Unique identifier for the icon.

platform string Required

Platform identifier (e.g., 'bluesky', 'twitter', 'instagram').

url string uri Required

URL to the user's profile on this platform.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "platform",
    "url"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the icon."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "URL to the user's profile on this platform."
    },
    "platform": {
      "type": "string",
      "description": "Platform identifier (e.g., 'bluesky', 'twitter', 'instagram')."
    }
  },
  "description": "A social media icon link."
}
tealfmPlay object

A recently played track from teal.fm.

Properties

artistName string Required

Artist name(s).

coverUrl string Optional

URL to the album cover image (from Cover Art Archive).

originUrl string Optional

URL to the track on the original music service.

playedTime string datetime Optional

When the track was played.

releaseName string Optional

Album/release name.

trackName string Required

Track/song name.

View raw schema
{
  "type": "object",
  "required": [
    "trackName",
    "artistName"
  ],
  "properties": {
    "coverUrl": {
      "type": "string",
      "description": "URL to the album cover image (from Cover Art Archive)."
    },
    "originUrl": {
      "type": "string",
      "description": "URL to the track on the original music service."
    },
    "trackName": {
      "type": "string",
      "description": "Track/song name."
    },
    "artistName": {
      "type": "string",
      "description": "Artist name(s)."
    },
    "playedTime": {
      "type": "string",
      "format": "datetime",
      "description": "When the track was played."
    },
    "releaseName": {
      "type": "string",
      "description": "Album/release name."
    }
  },
  "description": "A recently played track from teal.fm."
}
themeConfig object

Theme configuration for the page appearance.

Properties

backgroundColor string Optional

Page background color.

backgroundGradient string Optional

CSS gradient for the page background.

backgroundImage blob Optional

Background wallpaper image blob.

maxSize: 10.0 MB
backgroundImageCredit string uri Optional

Optional credit URL for the wallpaper image artist. Stored for attribution purposes only, not displayed on the public page.

buttonAlignment string Optional

Button content alignment. Default: left.

Known values: left, right
buttonHoverGlow boolean Optional

Whether buttons glow on hover. Default: false.

buttonHoverGlowColor string Optional

Color for the button hover glow effect.

cardBackgroundColor string Optional

Individual card/button background color.

cardBorderColor string Optional

Card/button border color.

cardBorderRadius string Optional

Card/button border radius.

Known values: none, sm, md, lg, full
cardHoverColor string Optional

Card/button border color on hover.

cardShadow string Optional

Card/button shadow intensity.

Known values: none, sm, md, lg, xl
cardTextColor string Optional

Card/button text color.

contentCardColor string Optional

Card container background color.

cursorSparkles boolean Optional

Whether cursor has sparkle trail. Default: false.

cursorStyle string Optional

Custom cursor style. Default: default.

Known values: default, hello-kitty
fontFamily string Optional

Font family for the page.

fontSize string Optional

Font size. Default: md.

Known values: sm, md, lg
particles string Optional

Background particle effect. Default: none.

Known values: none, white, blue, leaves, grid-sm, grid-lg
preset string Optional

Theme preset ID (e.g., 'custom', 'agate', 'air', 'astrid', 'aura').

profileAlignment string Optional

Profile section alignment. Default: center.

Known values: left, center, right
profilePictureShape string Optional

Profile picture shape. Default: circle.

Known values: circle, rounded, square
profilePictureSize string Optional

Profile picture size. Default: sm.

Known values: sm, md, lg
profileTextColor string Optional

Profile section text color.

showBranding boolean Optional

Whether Linkname branding is visible. Default: true.

socialIconsBorderColor string Optional

Border color for social icons dock/sphere.

socialIconsColor string Optional

Social icons color.

socialIconsShape string Optional

Social icons container shape. Default: dock.

Known values: dock, sphere
socialIconsShapeColor string Optional

Background color for social icons dock/sphere.

View raw schema
{
  "type": "object",
  "properties": {
    "preset": {
      "type": "string",
      "description": "Theme preset ID (e.g., 'custom', 'agate', 'air', 'astrid', 'aura')."
    },
    "fontSize": {
      "type": "string",
      "description": "Font size. Default: md.",
      "knownValues": [
        "sm",
        "md",
        "lg"
      ]
    },
    "particles": {
      "type": "string",
      "description": "Background particle effect. Default: none.",
      "knownValues": [
        "none",
        "white",
        "blue",
        "leaves",
        "grid-sm",
        "grid-lg"
      ]
    },
    "cardShadow": {
      "type": "string",
      "description": "Card/button shadow intensity.",
      "knownValues": [
        "none",
        "sm",
        "md",
        "lg",
        "xl"
      ]
    },
    "fontFamily": {
      "type": "string",
      "description": "Font family for the page."
    },
    "cursorStyle": {
      "type": "string",
      "description": "Custom cursor style. Default: default.",
      "knownValues": [
        "default",
        "hello-kitty"
      ]
    },
    "showBranding": {
      "type": "boolean",
      "description": "Whether Linkname branding is visible. Default: true."
    },
    "cardTextColor": {
      "type": "string",
      "description": "Card/button text color."
    },
    "cardHoverColor": {
      "type": "string",
      "description": "Card/button border color on hover."
    },
    "cursorSparkles": {
      "type": "boolean",
      "description": "Whether cursor has sparkle trail. Default: false."
    },
    "backgroundColor": {
      "type": "string",
      "description": "Page background color."
    },
    "backgroundImage": {
      "type": "blob",
      "accept": [
        "image/png",
        "image/jpeg",
        "image/webp"
      ],
      "maxSize": 10000000,
      "description": "Background wallpaper image blob."
    },
    "buttonAlignment": {
      "type": "string",
      "description": "Button content alignment. Default: left.",
      "knownValues": [
        "left",
        "right"
      ]
    },
    "buttonHoverGlow": {
      "type": "boolean",
      "description": "Whether buttons glow on hover. Default: false."
    },
    "cardBorderColor": {
      "type": "string",
      "description": "Card/button border color."
    },
    "cardBorderRadius": {
      "type": "string",
      "description": "Card/button border radius.",
      "knownValues": [
        "none",
        "sm",
        "md",
        "lg",
        "full"
      ]
    },
    "contentCardColor": {
      "type": "string",
      "description": "Card container background color."
    },
    "profileAlignment": {
      "type": "string",
      "description": "Profile section alignment. Default: center.",
      "knownValues": [
        "left",
        "center",
        "right"
      ]
    },
    "profileTextColor": {
      "type": "string",
      "description": "Profile section text color."
    },
    "socialIconsColor": {
      "type": "string",
      "description": "Social icons color."
    },
    "socialIconsShape": {
      "type": "string",
      "description": "Social icons container shape. Default: dock.",
      "knownValues": [
        "dock",
        "sphere"
      ]
    },
    "backgroundGradient": {
      "type": "string",
      "description": "CSS gradient for the page background."
    },
    "profilePictureSize": {
      "type": "string",
      "description": "Profile picture size. Default: sm.",
      "knownValues": [
        "sm",
        "md",
        "lg"
      ]
    },
    "cardBackgroundColor": {
      "type": "string",
      "description": "Individual card/button background color."
    },
    "profilePictureShape": {
      "type": "string",
      "description": "Profile picture shape. Default: circle.",
      "knownValues": [
        "circle",
        "rounded",
        "square"
      ]
    },
    "buttonHoverGlowColor": {
      "type": "string",
      "description": "Color for the button hover glow effect."
    },
    "backgroundImageCredit": {
      "type": "string",
      "format": "uri",
      "description": "Optional credit URL for the wallpaper image artist. Stored for attribution purposes only, not displayed on the public page."
    },
    "socialIconsShapeColor": {
      "type": "string",
      "description": "Background color for social icons dock/sphere."
    },
    "socialIconsBorderColor": {
      "type": "string",
      "description": "Border color for social icons dock/sphere."
    }
  },
  "description": "Theme configuration for the page appearance."
}
videoAspectRatio object

Video aspect ratio dimensions.

Properties

height integer Required

Video height.

width integer Required

Video width.

View raw schema
{
  "type": "object",
  "required": [
    "width",
    "height"
  ],
  "properties": {
    "width": {
      "type": "integer",
      "description": "Video width."
    },
    "height": {
      "type": "integer",
      "description": "Video height."
    }
  },
  "description": "Video aspect ratio dimensions."
}
widgetBeehiiv object

A Beehiiv publication widget card.

Properties

description string Optional

Publication description.

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

id string Required

Unique identifier for the card.

imageUrl string Optional

Publication image URL.

lastSyncedAt string datetime Optional

When the publication data was last fetched.

publicationId string Required

Beehiiv publication ID.

publicationName string Required

Beehiiv publication name.

publicationUrl string Required

URL to the Beehiiv publication.

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2, 2x1
type string Required

Card type discriminator.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "publicationId",
    "publicationName",
    "publicationUrl"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2",
        "2x1"
      ]
    },
    "type": {
      "type": "string",
      "const": "beehiiv",
      "description": "Card type discriminator."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "imageUrl": {
      "type": "string",
      "description": "Publication image URL."
    },
    "description": {
      "type": "string",
      "description": "Publication description."
    },
    "lastSyncedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the publication data was last fetched."
    },
    "publicationId": {
      "type": "string",
      "description": "Beehiiv publication ID."
    },
    "publicationUrl": {
      "type": "string",
      "description": "URL to the Beehiiv publication."
    },
    "publicationName": {
      "type": "string",
      "description": "Beehiiv publication name."
    }
  },
  "description": "A Beehiiv publication widget card."
}
widgetClock object

A clock, countdown, or stopwatch timer widget card.

Properties

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

id string Required

Unique identifier for the card.

label string Optional

Optional display label for the widget.

maxLength: 100 bytes
mode string Required

Widget mode: clock (timezone display), countdown (to a target date), or timer (interactive stopwatch).

Known values: clock, countdown, timer
size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2, 2x1
targetDate string datetime Optional

ISO 8601 target date for countdown mode.

timezone string Optional

IANA timezone identifier for clock mode (e.g. 'America/New_York').

type string Required

Card type discriminator.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "mode"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "mode": {
      "type": "string",
      "description": "Widget mode: clock (timezone display), countdown (to a target date), or timer (interactive stopwatch).",
      "knownValues": [
        "clock",
        "countdown",
        "timer"
      ]
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2",
        "2x1"
      ]
    },
    "type": {
      "type": "string",
      "const": "clock",
      "description": "Card type discriminator."
    },
    "label": {
      "type": "string",
      "maxLength": 100,
      "description": "Optional display label for the widget."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "timezone": {
      "type": "string",
      "description": "IANA timezone identifier for clock mode (e.g. 'America/New_York')."
    },
    "targetDate": {
      "type": "string",
      "format": "datetime",
      "description": "ISO 8601 target date for countdown mode."
    }
  },
  "description": "A clock, countdown, or stopwatch timer widget card."
}
widgetDiscord object

A Discord server widget card.

Properties

bannerUrl string Optional

Server banner URL.

description string Optional

Server description.

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

iconUrl string Optional

Server icon URL.

id string Required

Unique identifier for the card.

inviteUrl string Required

Discord invite URL.

lastSyncedAt string datetime Optional

When the server data was last fetched.

memberCount integer Optional

Total member count.

presenceCount integer Optional

Online member count.

serverId string Required

Discord server ID.

serverName string Required

Discord server name.

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2, 2x1
type string Required

Card type discriminator.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "serverId",
    "serverName",
    "inviteUrl"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2",
        "2x1"
      ]
    },
    "type": {
      "type": "string",
      "const": "discord",
      "description": "Card type discriminator."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "iconUrl": {
      "type": "string",
      "description": "Server icon URL."
    },
    "serverId": {
      "type": "string",
      "description": "Discord server ID."
    },
    "bannerUrl": {
      "type": "string",
      "description": "Server banner URL."
    },
    "inviteUrl": {
      "type": "string",
      "description": "Discord invite URL."
    },
    "serverName": {
      "type": "string",
      "description": "Discord server name."
    },
    "description": {
      "type": "string",
      "description": "Server description."
    },
    "memberCount": {
      "type": "integer",
      "description": "Total member count."
    },
    "lastSyncedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the server data was last fetched."
    },
    "presenceCount": {
      "type": "integer",
      "description": "Online member count."
    }
  },
  "description": "A Discord server widget card."
}
widgetGithub object

A GitHub contributions graph widget card.

Properties

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

githubUsername string Required

GitHub username.

id string Required

Unique identifier for the card.

lastSyncedAt string datetime Optional

When the contribution data was last fetched from GitHub.

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2
totalContributions integer Optional

Total number of contributions in the last year.

type string Required

Card type discriminator.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "githubUsername",
    "contributions"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2"
      ]
    },
    "type": {
      "type": "string",
      "const": "github",
      "description": "Card type discriminator."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "lastSyncedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the contribution data was last fetched from GitHub."
    },
    "contributions": {
      "type": "array",
      "items": {
        "ref": "#githubContributionDay",
        "type": "ref"
      },
      "description": "Contribution data for the last year."
    },
    "githubUsername": {
      "type": "string",
      "description": "GitHub username."
    },
    "totalContributions": {
      "type": "integer",
      "description": "Total number of contributions in the last year."
    }
  },
  "description": "A GitHub contributions graph widget card."
}
widgetGoodreads object

A Goodreads bookshelf widget card.

Properties

books array of ref#goodreadsBook Required

Books on the currently-reading shelf.

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

goodreadsUserId string Required

Goodreads numeric user ID.

id string Required

Unique identifier for the card.

lastSyncedAt string datetime Optional

When the book data was last fetched from Goodreads.

readBooks array of ref#goodreadsBook Optional

Books on the read shelf (used by 1x2 size).

shelf string Required

Shelf name (currently-reading, read, or to-read).

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2
type string Required

Card type discriminator.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "goodreadsUserId",
    "shelf",
    "books"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2"
      ]
    },
    "type": {
      "type": "string",
      "const": "goodreads",
      "description": "Card type discriminator."
    },
    "books": {
      "type": "array",
      "items": {
        "ref": "#goodreadsBook",
        "type": "ref"
      },
      "description": "Books on the currently-reading shelf."
    },
    "shelf": {
      "type": "string",
      "description": "Shelf name (currently-reading, read, or to-read)."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "readBooks": {
      "type": "array",
      "items": {
        "ref": "#goodreadsBook",
        "type": "ref"
      },
      "description": "Books on the read shelf (used by 1x2 size)."
    },
    "lastSyncedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the book data was last fetched from Goodreads."
    },
    "goodreadsUserId": {
      "type": "string",
      "description": "Goodreads numeric user ID."
    }
  },
  "description": "A Goodreads bookshelf widget card."
}
widgetLastfm object

A Last.fm recently played tracks widget card.

Properties

coverArtNotice string Optional

Copyright notice for cover art images.

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

id string Required

Unique identifier for the card.

lastSyncedAt string datetime Optional

When the play data was last fetched from Last.fm.

lastfmUsername string Required

Last.fm username for fetching scrobbles.

plays array of ref#tealfmPlay Required

Recently played tracks from Last.fm.

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2
type string Required

Card type discriminator.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "lastfmUsername",
    "plays"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2"
      ]
    },
    "type": {
      "type": "string",
      "const": "lastfm",
      "description": "Card type discriminator."
    },
    "plays": {
      "type": "array",
      "items": {
        "ref": "#tealfmPlay",
        "type": "ref"
      },
      "description": "Recently played tracks from Last.fm."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "lastSyncedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the play data was last fetched from Last.fm."
    },
    "coverArtNotice": {
      "type": "string",
      "description": "Copyright notice for cover art images."
    },
    "lastfmUsername": {
      "type": "string",
      "description": "Last.fm username for fetching scrobbles."
    }
  },
  "description": "A Last.fm recently played tracks widget card."
}
widgetMap object

A map location widget card.

Properties

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

id string Required

Unique identifier for the card.

latitude number Required

Latitude coordinate.

locationName string Required

Display name for the location.

longitude number Required

Longitude coordinate.

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2, 2x1
style string Optional

Map style. Default: light.

Known values: light, dark
type string Required

Card type discriminator.

zoom integer Optional

Map zoom level (1-18). Default: 12.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "locationName",
    "latitude",
    "longitude"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2",
        "2x1"
      ]
    },
    "type": {
      "type": "string",
      "const": "map",
      "description": "Card type discriminator."
    },
    "zoom": {
      "type": "integer",
      "description": "Map zoom level (1-18). Default: 12."
    },
    "style": {
      "type": "string",
      "description": "Map style. Default: light.",
      "knownValues": [
        "light",
        "dark"
      ]
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "latitude": {
      "type": "number",
      "description": "Latitude coordinate."
    },
    "longitude": {
      "type": "number",
      "description": "Longitude coordinate."
    },
    "locationName": {
      "type": "string",
      "description": "Display name for the location."
    }
  },
  "description": "A map location widget card."
}
widgetMedium object

A Medium profile widget card.

Properties

bio string Optional

Medium bio.

displayName string Optional

Medium display name.

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

followerCount integer Optional

Number of followers.

id string Required

Unique identifier for the card.

lastSyncedAt string datetime Optional

When the Medium data was last fetched.

profileUrl string Required

Medium profile URL.

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2, 2x1
type string Required

Card type discriminator.

username string Required

Medium username.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "username",
    "profileUrl"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "bio": {
      "type": "string",
      "description": "Medium bio."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2",
        "2x1"
      ]
    },
    "type": {
      "type": "string",
      "const": "medium",
      "description": "Card type discriminator."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "articles": {
      "type": "array",
      "items": {
        "ref": "#mediumArticle",
        "type": "ref"
      },
      "description": "Recent articles."
    },
    "username": {
      "type": "string",
      "description": "Medium username."
    },
    "profileUrl": {
      "type": "string",
      "description": "Medium profile URL."
    },
    "displayName": {
      "type": "string",
      "description": "Medium display name."
    },
    "lastSyncedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the Medium data was last fetched."
    },
    "followerCount": {
      "type": "integer",
      "description": "Number of followers."
    }
  },
  "description": "A Medium profile widget card."
}
widgetPatreon object

A Patreon campaign widget card.

Properties

campaignId string Required

Patreon campaign ID.

campaignUrl string Required

URL to the Patreon campaign.

creationName string Optional

Name of the creation/project.

creatorName string Required

Patreon creator name.

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

id string Required

Unique identifier for the card.

imageUrl string Optional

Campaign image URL.

lastSyncedAt string datetime Optional

When the campaign data was last fetched.

patronCount integer Optional

Number of patrons.

postCount integer Optional

Number of posts.

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2, 2x1
type string Required

Card type discriminator.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "campaignId",
    "creatorName",
    "campaignUrl"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2",
        "2x1"
      ]
    },
    "type": {
      "type": "string",
      "const": "patreon",
      "description": "Card type discriminator."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "imageUrl": {
      "type": "string",
      "description": "Campaign image URL."
    },
    "postCount": {
      "type": "integer",
      "description": "Number of posts."
    },
    "campaignId": {
      "type": "string",
      "description": "Patreon campaign ID."
    },
    "campaignUrl": {
      "type": "string",
      "description": "URL to the Patreon campaign."
    },
    "creatorName": {
      "type": "string",
      "description": "Patreon creator name."
    },
    "patronCount": {
      "type": "integer",
      "description": "Number of patrons."
    },
    "creationName": {
      "type": "string",
      "description": "Name of the creation/project."
    },
    "lastSyncedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the campaign data was last fetched."
    }
  },
  "description": "A Patreon campaign widget card."
}
widgetReddit object

A Reddit profile widget card.

Properties

avatarUrl string Optional

Reddit avatar URL.

commentKarma integer Optional

Comment karma.

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

id string Required

Unique identifier for the card.

karma integer Optional

Total karma.

lastSyncedAt string datetime Optional

When the Reddit data was last fetched.

linkKarma integer Optional

Link karma.

profileUrl string Required

Reddit profile URL.

recentPosts array of ref#redditPost Optional

Recent posts.

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2, 2x1
type string Required

Card type discriminator.

username string Required

Reddit username.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "username",
    "profileUrl"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2",
        "2x1"
      ]
    },
    "type": {
      "type": "string",
      "const": "reddit",
      "description": "Card type discriminator."
    },
    "karma": {
      "type": "integer",
      "description": "Total karma."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "username": {
      "type": "string",
      "description": "Reddit username."
    },
    "avatarUrl": {
      "type": "string",
      "description": "Reddit avatar URL."
    },
    "linkKarma": {
      "type": "integer",
      "description": "Link karma."
    },
    "profileUrl": {
      "type": "string",
      "description": "Reddit profile URL."
    },
    "recentPosts": {
      "type": "array",
      "items": {
        "ref": "#redditPost",
        "type": "ref"
      },
      "description": "Recent posts."
    },
    "commentKarma": {
      "type": "integer",
      "description": "Comment karma."
    },
    "lastSyncedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the Reddit data was last fetched."
    }
  },
  "description": "A Reddit profile widget card."
}
widgetSubstack object

A Substack publication widget card.

Properties

authorName string Optional

Author name.

coverImageUrl string Optional

Publication cover image URL.

description string Optional

Publication description.

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

id string Required

Unique identifier for the card.

imageUrl string Optional

Publication image URL.

lastSyncedAt string datetime Optional

When the publication data was last fetched.

postCount integer Optional

Number of posts.

publicationId string Required

Substack publication ID.

publicationName string Required

Substack publication name.

publicationUrl string Required

URL to the Substack publication.

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2, 2x1
subscriberCount integer Optional

Number of subscribers.

type string Required

Card type discriminator.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "publicationId",
    "publicationName",
    "publicationUrl"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2",
        "2x1"
      ]
    },
    "type": {
      "type": "string",
      "const": "substack",
      "description": "Card type discriminator."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "imageUrl": {
      "type": "string",
      "description": "Publication image URL."
    },
    "postCount": {
      "type": "integer",
      "description": "Number of posts."
    },
    "authorName": {
      "type": "string",
      "description": "Author name."
    },
    "description": {
      "type": "string",
      "description": "Publication description."
    },
    "lastSyncedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the publication data was last fetched."
    },
    "coverImageUrl": {
      "type": "string",
      "description": "Publication cover image URL."
    },
    "publicationId": {
      "type": "string",
      "description": "Substack publication ID."
    },
    "publicationUrl": {
      "type": "string",
      "description": "URL to the Substack publication."
    },
    "publicationName": {
      "type": "string",
      "description": "Substack publication name."
    },
    "subscriberCount": {
      "type": "integer",
      "description": "Number of subscribers."
    }
  },
  "description": "A Substack publication widget card."
}
widgetTealfm object

A teal.fm recently played tracks widget card.

Properties

coverArtNotice string Optional

Copyright notice for cover art images.

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

id string Required

Unique identifier for the card.

lastSyncedAt string datetime Optional

When the play data was last fetched from the PDS.

plays array of ref#tealfmPlay Required

Recently played tracks.

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2
source string Optional

Data source for the widget. 'lastfm' for imported Last.fm scrobbles, 'tealfm' (default) for native AT Protocol plays.

Known values: tealfm, lastfm
type string Required

Card type discriminator.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "plays"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2"
      ]
    },
    "type": {
      "type": "string",
      "const": "tealfm",
      "description": "Card type discriminator."
    },
    "plays": {
      "type": "array",
      "items": {
        "ref": "#tealfmPlay",
        "type": "ref"
      },
      "description": "Recently played tracks."
    },
    "source": {
      "type": "string",
      "description": "Data source for the widget. 'lastfm' for imported Last.fm scrobbles, 'tealfm' (default) for native AT Protocol plays.",
      "knownValues": [
        "tealfm",
        "lastfm"
      ]
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "lastSyncedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the play data was last fetched from the PDS."
    },
    "coverArtNotice": {
      "type": "string",
      "description": "Copyright notice for cover art images."
    }
  },
  "description": "A teal.fm recently played tracks widget card."
}
widgetTwitch object

A Twitch channel widget card.

Properties

displayName string Optional

Twitch display name.

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

id string Required

Unique identifier for the card.

isLive boolean Optional

Whether the channel is currently live.

lastSyncedAt string datetime Optional

When the channel data was last fetched.

profileImageUrl string Optional

Twitch profile image URL.

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2, 2x1
streamGame string Optional

Current stream game/category.

streamTitle string Optional

Current stream title.

type string Required

Card type discriminator.

username string Required

Twitch username.

viewerCount integer Optional

Current viewer count.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "username"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2",
        "2x1"
      ]
    },
    "type": {
      "type": "string",
      "const": "twitch",
      "description": "Card type discriminator."
    },
    "isLive": {
      "type": "boolean",
      "description": "Whether the channel is currently live."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "username": {
      "type": "string",
      "description": "Twitch username."
    },
    "streamGame": {
      "type": "string",
      "description": "Current stream game/category."
    },
    "displayName": {
      "type": "string",
      "description": "Twitch display name."
    },
    "streamTitle": {
      "type": "string",
      "description": "Current stream title."
    },
    "viewerCount": {
      "type": "integer",
      "description": "Current viewer count."
    },
    "lastSyncedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the channel data was last fetched."
    },
    "profileImageUrl": {
      "type": "string",
      "description": "Twitch profile image URL."
    }
  },
  "description": "A Twitch channel widget card."
}
widgetVideo object

A video widget card.

Properties

alt string Optional

Alt text for accessibility.

maxLength: 1000 bytes
createdAt string datetime Optional

When the video was uploaded.

did string Required

Author DID for constructing PDS blob URLs.

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

id string Required

Unique identifier for the card.

loop boolean Optional

Whether the video loops. Defaults to true.

muted boolean Optional

Whether the video is muted. Defaults to true.

showOverlay boolean Optional

Whether to show the title overlay. Defaults to false.

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2, 2x1
title string Optional

Video title overlay.

maxLength: 100 bytes
type string Required

Card type discriminator.

videoBlobRef blob Required

Reference to the uploaded video blob.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "videoBlobRef",
    "did"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "alt": {
      "type": "string",
      "maxLength": 1000,
      "description": "Alt text for accessibility."
    },
    "did": {
      "type": "string",
      "description": "Author DID for constructing PDS blob URLs."
    },
    "loop": {
      "type": "boolean",
      "description": "Whether the video loops. Defaults to true."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2",
        "2x1"
      ]
    },
    "type": {
      "type": "string",
      "const": "video",
      "description": "Card type discriminator."
    },
    "muted": {
      "type": "boolean",
      "description": "Whether the video is muted. Defaults to true."
    },
    "title": {
      "type": "string",
      "maxLength": 100,
      "description": "Video title overlay."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "createdAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the video was uploaded."
    },
    "aspectRatio": {
      "ref": "#videoAspectRatio",
      "type": "ref",
      "description": "Video aspect ratio."
    },
    "showOverlay": {
      "type": "boolean",
      "description": "Whether to show the title overlay. Defaults to false."
    },
    "videoBlobRef": {
      "type": "blob",
      "description": "Reference to the uploaded video blob."
    }
  },
  "description": "A video widget card."
}
widgetYoutube object

A YouTube channel widget card.

Properties

channelId string Required

YouTube channel ID.

channelName string Required

YouTube channel name.

channelUrl string Required

URL to the YouTube channel.

enabled boolean Optional

Whether the widget is visible on the public page. Defaults to true.

id string Required

Unique identifier for the card.

lastSyncedAt string datetime Optional

When the video data was last fetched.

latestVideo ref #youtubeVideo Optional

The latest video from the channel.

size string Optional

Widget display size. Default: 1x1.

Known values: 1x1, 1x2, 2x2, 2x1
type string Required

Card type discriminator.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "channelId",
    "channelName",
    "channelUrl"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card."
    },
    "size": {
      "type": "string",
      "description": "Widget display size. Default: 1x1.",
      "knownValues": [
        "1x1",
        "1x2",
        "2x2",
        "2x1"
      ]
    },
    "type": {
      "type": "string",
      "const": "youtube",
      "description": "Card type discriminator."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the widget is visible on the public page. Defaults to true."
    },
    "channelId": {
      "type": "string",
      "description": "YouTube channel ID."
    },
    "channelUrl": {
      "type": "string",
      "description": "URL to the YouTube channel."
    },
    "channelName": {
      "type": "string",
      "description": "YouTube channel name."
    },
    "latestVideo": {
      "ref": "#youtubeVideo",
      "type": "ref",
      "description": "The latest video from the channel."
    },
    "lastSyncedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the video data was last fetched."
    }
  },
  "description": "A YouTube channel widget card."
}
youtubeVideo object

A YouTube video.

Properties

isShort boolean Optional

Whether this is a YouTube Short.

publishedAt string Required

When the video was published.

title string Required

Video title.

videoId string Required

YouTube video ID.

View raw schema
{
  "type": "object",
  "required": [
    "videoId",
    "title",
    "publishedAt"
  ],
  "properties": {
    "title": {
      "type": "string",
      "description": "Video title."
    },
    "isShort": {
      "type": "boolean",
      "description": "Whether this is a YouTube Short."
    },
    "videoId": {
      "type": "string",
      "description": "YouTube video ID."
    },
    "publishedAt": {
      "type": "string",
      "description": "When the video was published."
    }
  },
  "description": "A YouTube video."
}

Lexicon Garden

@