OWN3D Developer Portal
Analyzer
Documentation
Status
Discord
Customer Support
GitHub
Analyzer
Documentation
Status
Discord
Customer Support
GitHub
  • API Documentation

    • Introduction
    • OWN3D Pro API
    • OWN3D Shop API
    • Developer Guidelines
  • OWN3D ID

    • Authorization
    • Webhooks
    • ID API Reference
    • Account Migration
  • OWN3D Extensions

    • Getting Started
    • Manifest Configuration
    • Life Cycle Management
    • Access Control
    • Extension SDK
    • Usage of Tokens
    • Remote Config
    • Syntax for Forms
    • Designing Extensions
    • Guidelines and Policies
  • OWN3D Cloud

    • Edge Functions
    • Key-Value Store
  • OWN3D NotifySub

    • Getting Started
    • Subscribing and Unsubscribing
    • Event Types
  • OWN3D Alerts

    • Getting Started
    • Message Template Parameters
    • Alert Variations
    • Examples
  • OWN3D Pro Chatbot

    • Getting Started
    • Auto Mod
    • Timers
    • Giveaways
    • Command Settings
    • Custom Commands
    • Template Reference
    • All Commands
  • OWN3D Music

    • DDEX

Manifest Configuration

The manifest file (manifest.yaml) describes your extension and is used with own3d ext:deploy to deploy to the OWN3D platform. Schema version 2 splits configuration across two files: manifest.yaml for metadata and compatibilities, and an optional forms.yaml for browser-source input fields.

Typical AI Widget Manifest

Most AI-generated widgets use a browser-source only manifest with a fixed canvas size:

schema_version: 2
id: a214167b-7af5-432a-a4df-f8e2493eeb3e
name: Bar
version: 1.0.0
compatibilities:
  browser-source:
    path: index.html
    sizing:
      width: 800
      height: 600

Manifest Keys

schema_version

Must be 2.

id

UUID of the extension. Generate one at the OWN3D Developer Console.

name

Display name of the extension. Must not contain the words "Extension" or "OWN3D".

version

SemVer version string (e.g. 1.0.0). Must match the version registered in the Developer Console.

description

Full description shown on the Extension Details page.

summary

One or two sentences shown throughout OWN3D. Keep it short; use description for details.

base_url

Optional external base URL for the extension version.

compatibilities

Declares which surfaces the extension runs on. See Compatibilities.

store_presence

Required for store listing. See Store Presence.

publisher

  • name: Publisher display name (e.g. "StreamTV Media GmbH").

author

  • name: Author display name.
  • email: Author contact email.

support

  • url: Support page URL.
  • email: Support email address.

legal

  • terms: Terms of service URL.
  • privacy: Privacy policy URL.

oauth

  • scopes: Array of OAuth scopes (e.g. [user:read]).
  • redirect_uri: Array of allowed redirect URIs.

Compatibilities

Supported types under compatibilities:

KeyDescription
browser-sourceOverlay rendered as a browser source
configConfiguration panel in the OWN3D dashboard
background-serviceBackground service page
standaloneStandalone page

path

HTML file path for this compatibility type.

sizing (browser-source only)

Default canvas size and position:

  • x, y: Default position (pixels).
  • width, height: Default size (pixels).

resize_by_default (browser-source only)

Boolean. Whether the browser source is resizable by default. Defaults to false.

Store Presence

Required to list in the OWN3D store. Nested under store_presence:

category

Store category string.

images

  • icon: Icon image path.
  • logo: Logo image path.
  • discovery: Discovery banner image path.

screenshots

Array of screenshot file paths.

keywords

Array of search keyword strings.

Forms (forms.yaml)

Forms are defined in a separate forms.yaml file — they are not allowed inside manifest.yaml. Forms configure user-editable inputs (text fields, toggles, dropdowns, color pickers, etc.) for the browser-source compatibility. The full syntax, including the id/inputs structure and limitations, is documented in Syntax for Forms. Jump straight to a field type:

forms.yaml has its own schema_version, separate from and unaffected by manifest.yaml's schema_version. As of now it must always be 1.

FieldUse it for
InputPlain text or number input
BooleanSingle on/off switch
CheckboxOne or more checkboxes
DropdownSingle choice from a list
SelectSingle/multi choice select box
ChipsMulti-value tag-style input
TagsFree-form tag list
ColorColor picker
SliderNumeric value on a range
VolumeVolume level control
Border RadiusCorner radius control
Font SettingsFont family/size/weight controls
FileFile/image upload
LinkURL input
ButtonTriggerable action button
ResourceReference to another OWN3D resource
PlatformsStreaming platform selector
Platform-EventPlatform event selector
RepeaterRepeatable group of fields
ParagraphStatic text/help copy (not an input)
DividerVisual separator (not an input)
AccordionCollapsible group of fields
GroupGrouped/nested fields
RowHorizontal layout of fields
SearchSearchable selection field
TabsTabbed grouping of fields

Any field's attributes can also include optional: true to make it toggleable — see Making a field optional below.

schema_version: 1
id: a214167b-7af5-432a-a4df-f8e2493eeb3e
has_demo_mode: false
inputs:
  - id: text
    type: input
    attributes:
      label: Text
      value: Hello World
      description: This is a description
    validations:
      required: true

Making a field optional

Any field's attributes can include optional: true to render it as a toggleable field in the settings UI. When optional: true is set, the saved value becomes an object with toggled and value properties instead of a plain value — see Input Field for the exact shape and a worked example.

Edit this page on GitHub
Prev
Getting Started
Next
Life Cycle Management