Creating Mods

Learn how to create and customize Mods in Endless

This documentation will walk you through everything you need to know about creating, customizing, and remixing Mods to build powerful workflows.


Introduction

Endless allows you to create and customize Mods - tools that modify or generate content. You can start from scratch or remix existing Mods.

What you can do with Mods

  • Create custom workflows by chaining multiple Mods
  • Modify existing Mods to suit your needs
  • Automate content transformation tasks
  • Build complex content processing pipelines

Core Concepts

Mods

Mods are the building blocks of Endless. They are tools that perform specific functions.

Convert to Text

Transcribes videos/audios or describes images

Convert to Speech

Transforms text into audio

Generate Image

Creates images from text descriptions

Translate

Translates content between languages

Summarize

Condenses lengthy content

Ask

Answers questions about given content

The Mod Creator

Endless offers two ways to create Mods.

Simple mode

Text-based interface for basic Mod creation

Advanced mode

Full JSON editing capabilities


Getting Started

Accessing the Mod Creator

There are two ways to start creating Mods:

  1. From scratch

    • Go to the sidebar
    • Click "Create a Mod"
    • Choose Simple or Advanced Mode
  2. Remix an existing Mod

    • Right-click any Mod in the Store or Dock
    • Select "Remix"
    • The Advanced Mod Creator opens with pre-filled JSON

Working with JSONs

When creating Mods in Advanced Mode, you'll work with two JSON structures:

Fields JSON

Defines the inputs and settings available to users:

[
  {
    "key": "language",
    "type": "dropdown",
    "label": "Language",
    "hidden": false,
    "values": [
      { "label": "English", "value": "ENGLISH" },
      { "label": "Spanish", "value": "SPANISH" }
    ],
    "default_value": "ENGLISH"
  }
]

Mods JSON

Defines the structure and behavior of your Mod:

[
  {
    "id": "fdd98b81-4897-42b3-9282-16f3b405a865",
    "key": "instruct",
    "parameters": {
      "prompt": "Generate a script for a podcast about AI.",
      "media_input": "{{media_input}}",
      "enhance_prompt": false
    }
  }
]

When you add a Mod to the Mods JSON, its required inputs are automatically added to the Fields JSON.


Creating Mods

Using the UI Controls

  1. Add fields button

    • Located in Fields section
    • Choose from various field types
    • Automatically updates Fields JSON
  2. Add Mods button

    • Located in Mods section
    • Select from available Mods
    • Automatically updates Mods JSON

Finding Mod IDs

  1. Get the share link

    • Right-click Mod > "Copy Link"
    • Example URL: https://app.endless.io/mods/ea23c37e-...c44a
  2. Extract the ID

    • Last part of URL
    • Example: ea23c37e-93b0-4768-9af9-c6c72761c44a

Chaining Mods

Example workflow combining multiple Mods

[
  {
    "id": "fdd98b81-4897-42b3-9282-16f3b405a865",
    "key": "instruct",
    "parameters": {
      "prompt": "Generate a podcast script",
      "media_input": "{{media_input}}"
    }
  },
  {
    "id": "bc5180a4-e18c-4a51-9792-5d53d6b0af94",
    "key": "translate",
    "parameters": {
      "media_input": "{{instruct}}",
      "language": "{{language}}"
    }
  }
]

Dynamic vs. fixed inputs

You can configure Mod inputs in two ways:

  1. Dynamic inputs

    • Use placeholders like {{media_input}}
    • Allow user input or chaining from other Mods
    • Example: "language": "{{language}}"
  2. Fixed values

    • Hardcode specific values
    • No user input required
    • Example: "style": "Cinematic"

Advanced Features

Field types and UI controls

Endless provides a variety of field types that you can add using the "+" button in the Fields section:

  1. Media Input type: "media"
{
  "key": "media_input",
  "type": "media",
  "label": "Input",
  "types": ["text", "image", "video"],
  "lowres": true,
  "expandable": true
}
  1. Dropdown type: "dropdown"
{
  "key": "language",
  "type": "dropdown",
  "label": "Language",
  "hidden": false,
  "values": [
    { "label": "English", "value": "ENGLISH" },
    { "label": "Spanish", "value": "SPANISH" }
  ],
  "optional": true,
  "default_value": "ENGLISH"
}
  1. Text Input type: "input"
{
  "key": "input_text",
  "type": "input",
  "label": "Input",
  "placeholder": "Type something...",
  "default_value": "",
  "hidden": false
}
  1. Icon Select type: "icon"
{
  "key": "icon_select",
  "type": "icon",
  "label": "Icon Select",
  "default_value": "option_1",
  "values": [
    {
      "icon": "1️⃣",
      "label": "Option 1",
      "value": "option_1"
    }
  ],
  "hidden": false
}
  1. Slider type: "slider"
{
  "key": "slider_value",
  "type": "slider",
  "label": "Slider",
  "min": 0,
  "max": 100,
  "step": 1,
  "default_value": 50,
  "hidden": false
}
  1. Switch type: "switch"
{
  "key": "switch_toggle",
  "type": "switch",
  "label": "Switch",
  "default_value": false,
  "hidden": false
}

Common properties

  • key: Unique identifier for the field
  • type: The type of field
  • label: Display name in the UI
  • hidden: Whether the field is visible to users
  • default_value: Initial value
  • optional: Whether the field is required

Best practices

  1. Start simple

    • Begin with existing Mods
    • Use Remix feature to learn
    • Gradually add complexity
  2. Test thoroughly

    • Verify all inputs work
    • Test edge cases
    • Check all workflows
  3. Document your Mods

    • Add clear descriptions
    • Include usage examples

Troubleshooting

Common issues and solutions

Missing inputs

  • Verify required fields in Fields JSON
  • Check parameter references

Execution errors

  • Validate JSON syntax
  • Check Mod compatibility

FAQs

Q: Can I share my remixed Mods?
A: Yes, share via Mod Store links.

Q: How to add inputs?
A: Add fields to Fields JSON and reference them in Mods JSON.

Q: Multiple languages in one workflow?
A: Yes, use Translate Mod for multilingual support.