Voznest Forge

Workspace

WorkspaceProjects

Development

DocsAPI ReferenceSDKsEmbed StudioChangelog
  1. Forge
  2. /Docs

Start here

Getting StartedQuickstartPlatform ConceptsEnvironments

Build

ProjectsIdentityAgentsGatewayCapabilitiesPermissions ReferenceInstallationsLive activity

Commands & interactions

CommandsContext-menu CommandsInteractionsComponentsModals (Forms)Activities (Embedded Apps)

Acting in hubs

MessagesEmbedsEmbeds v2 (Blocks)Embeds v3Incoming WebhooksHub Management APIEvent StreamDelivery

Sign in with Voznest

AccessOpenID Connect

API

APIAuthenticationErrorsRate LimitsSecurity

Publish & operate

App Market & ListingTemplates & SandboxObservability & Team Tools

Tools

SDKsExamplesFAQ & TroubleshootingReference

Acting in hubs

Embeds v3

Animated gradient themes or your own colors, 300+ icons, hero banners, feature grids, steps, timelines, cards, quotes and ratings — for every hub, DM and webhook.

Embeds v3 is the look of the official Voznest hub, now open to everyone. It builds on Embeds v2 (Blocks): every v2 block still works, and v3 adds animated gradient cards, icons instead of emoji, and seven new blocks. Use it in any hub, in DMs and from webhooks — no extra permission beyond the ones v2 needs.

New season

Season 4 is live

Ranked queues, new maps and a fresh battle pass.

Ranked

Seven tiers, seasonal rewards.

3 new maps

Harbor, Dunes, Skyline.

Battle pass

80 levels, free track.
4.8Player rating12.4k reviews

Design and test it in the Embed Studio: pick a theme or your own colors, browse every icon, start from the v3 templates and copy the code.

Themes and your own gradients

Give a container (or a hero) a theme and it gets an animated gradient frame and glow. Everything inside picks up the colors: feature chips, step markers, timeline dots, quote bars, ratings and separators with style: "gradient".

FieldOnNotes
themecontainer, heroOne of the 16 presets above
gradientcontainer, heroYour own 2–3 hex colors, e.g. ["#ff0080", "#7928ca"]. Wins over theme
animatedcontainer, herofalse keeps the gradient still. Members with reduced motion always see it still

Icons

Wherever v2 takes an emoji, v3 takes an icon: a name from a set of 326 icons (Lucide names). Unknown names are rejected, so typos surface immediately. Browse and copy them in the Studio.

rocket trophy shield-check sparkles calendar music gamepad-2 store heart crown flame map pizza dumbbell camera brain
BlockWhere the icon goes
headericon (next to the title)
fieldsitems[].icon
statsitems[].icon
callouticon
badges · listitems[].icon
tabs · accordiontabs[].icon · items[].icon
hero · features · steps · timeline · quote · cards · ratingicon / items[].icon

New blocks

typeFieldsNotes
herotitle, subtitle, eyebrow, imageUrl, logoUrl, icon, theme, gradient, animated, align (left·center), height (sm·md·lg)A banner over an animated gradient (and your image)
featuresitems[1–9] {icon, title, text, color}, columns (1–3)A grid of icon cards
stepsitems[1–8] {title, text, icon}Numbered (or icon) steps joined by a flowing line
timelineitems[1–10] {time, title, text, icon, color, done}Dated milestones; done ones are struck through
quotecontent, author, role, avatarUrl, iconA testimonial or highlighted quote
cardsitems[1–6] {title, text, imageUrl, icon, badge, url, color}, columns (1–3)Link cards with an optional image and badge
ratingvalue, max (5·10), label, count, iconStars with halves, e.g. 4.5 / 5
  1. Jan

    Voice rooms 2.0

  2. Mar

    Embeds v3 for everyone

  3. Jun

    Mobile app

Docs

Read the guide
Open

Studio

New
Design it visually
Open
We moved our whole hub's announcements to v3 in an afternoon.
AnaHub owner

Sending v3

Exactly like v2: a blocks array in a message, an edit, an interaction reply or a webhook. The same limits apply (12 top-level blocks, 80 in total, 4 levels, 10,000 characters, 25 controls).

js
await ctx.reply({  blocks: [{    type: "container",    theme: "sunset",                 // a preset…    // gradient: ["#ff0080", "#7928ca"], // …or your own 2–3 colors    // animated: false,              // a still gradient    blocks: [      { type: "hero", eyebrow: "New season", title: "Season 4 is live", icon: "rocket",        imageUrl: "https://example.com/banner.webp" },      { type: "features", items: [        { icon: "trophy", title: "Ranked", text: "Seven tiers, seasonal rewards." },        { icon: "map", title: "3 new maps", text: "Harbor, Dunes, Skyline." },      ] },      { type: "timeline", items: [        { time: "Mon", title: "Beta", done: true },        { time: "Fri", title: "Launch", icon: "rocket" },      ] },      { type: "rating", value: 4.8, label: "Player rating", count: "12.4k reviews" },    ],  }],});

With the SDK

The SDK (voznest.mjs) has builders for every v3 block: themed, hero, features, steps, timeline, quote, cards and rating, plus the list of themes.

js
import { botFromEnv, blocks as b } from "./voznest.mjs";const bot = botFromEnv();bot.command({ name: "season", description: "What's new" }, (ctx) =>  ctx.reply({    blocks: [      b.themed("sunset",        b.hero("Season 4 is live", { eyebrow: "New season", icon: "rocket" }),        b.features([["trophy", "Ranked", "Seven tiers"], ["map", "3 new maps", "Harbor, Dunes, Skyline"]]),        b.timeline([["Mon", "Beta"], ["Fri", "Launch"]]),        b.rating(4.8, { label: "Player rating" }),      ),      b.themed(["#ff0080", "#7928ca"], b.quote("Best update yet.", { author: "Ana" })),    ],  }),);await bot.start();

From a webhook

bash
curl -X POST "https://api.voznest.com/api/v1/webhooks/<id>/<token>" \  -H "Content-Type: application/json" \  -d '{"blocks":[{"type":"container","theme":"emerald","blocks":[        {"type":"header","icon":"rocket","title":"Deploy finished","subtitle":"v2.4.0 is live"},        {"type":"steps","items":[{"icon":"check","title":"Build"},{"icon":"check","title":"Tests"},{"icon":"rocket","title":"Release"}]}]}]}'

Channel icons

Any hub can now give a channel one of the same icons, shown in the channel list instead of the usual type icon. Pick it in Channel settings → General → Icon, or send icon when creating or editing a channel (PATCH https://api.voznest.com/api/v1/channels/:id with { "icon": "rocket" }; null goes back to the default). It needs manageChannels.

Good to know

  • v2 messages keep rendering exactly as before; adding a theme to a container is all it takes to move one to v3.
  • Text inside every block goes through the hub's AutoMod like any message.
  • Images and links must be http(s). Card links open in the member's browser.
  • POST https://api.voznest.com/api/v1/blocks/validate checks v3 layouts too, without sending anything.
Older apps that only know v2 aren't affected: nothing changes until you send a v3 field.
PreviousEmbeds v2 (Blocks)Next Incoming Webhooks