Remixing Mods

Learn how to create a Mod starting from another Mod

One of the most convenient ways to build new Mods in Endless is by starting from an existing Mod. This leverages already-proven functionality, saving you time and letting you add your own twists.

Whether you're remixing a Mod like Face Swap, Wear any shirt, or Instruct, this guide will show you how to do it.


Why start from an existing Mod?

  • Quick development: Skip setup of inputs, parameters, and basic logic
  • Easier customization: Focus on modifying what matters—values, prompts, or images
  • Learn by example: Understand JSON structures and field references through working examples

Ways to create a Mod from an existing one

1. Remix via the Mod store

  1. Find a Mod in your Dock or Store
  2. Right-click it, select Remix
  3. Edit in Advanced Mode, pre-filled with that Mod's JSON
  4. Save your new Mod

2. Use advanced mode directly

  1. Create a New Mod by clicking Create a Mod in the sidebar, then choose Advanced.
  2. Search & Add Mods in the JSON using the "+" button next to Mods.
    • You'll see a list of available Mods (including built-ins like Face Swap, Wear any shirt, etc.).
    • Select the Mod you want, and Endless automatically populates your JSON with the correct id and parameters.
  3. Tweak fields & parameters as needed.
  4. Save to finalize your new Mod.

You don't need to manually copy Mod IDs

Endless automatically inserts IDs, required parameters, and creates matching fields when you choose a Mod.


Example 1: Face Swap

Let's say you want to create a Mod that swaps two faces in an image. When you add Face Swap using the + button in Advanced Mode, Endless automatically fills:

Fields JSON

[
  {
    "key": "media_input_face_swap_Dn34",
    "type": "media",
    "label": "Original face",
    "types": ["image"],
    "lowres": true,
    "expandable": true,
    "hidden": false
  },
  {
    "key": "foto",
    "type": "media",
    "label": "Face to swap",
    "types": ["image"],
    "hidden": false
  }
]

Mods JSON

[
  {
    "id": "f120a4cb-077e-4b6a-9bad-b0a4442986e3",
    "key": "face_swap_Dn34",
    "parameters": {
      "media_input": "{{media_input_face_swap_Dn34}}",
      "foto": "{{foto}}"
    }
  }
]
  • media_input_face_swap_Dn34 automatically appears as a required field for the face-swap Mod.
  • The parameter foto references another image field.
  • You can rename labels or hide fields if you want them to be fixed values.

Example 2: Brazil Jerseys (remix of "Wear any shirt")

Here's a Mod that uses Wear any shirt but locks the shirts to specific Brazilian soccer teams via a dropdown:

Fields JSON

[
  {
    "key": "media_input",
    "type": "media",
    "label": "Imagen",
    "types": ["image"],
    "hidden": false,
    "lowres": true,
    "expandable": true,
    "description": "Selecione a imagem da pessoa cuja camisa você deseja trocar",
    "default_value": "https://endless.supabase.co/storage/v1/object/public/endless/board_t7gG8GHQLKZvBs4bAX-node_7zJLAufJaafcrTaAfX-cP7T9wD0wTGG.png"
  },
  {
    "key": "shirt",
    "type": "dropdown",
    "label": "Time",
    "hidden": false,
    "values": [
      {
        "label": "Santos",
        "value": "https://endless.supabase.co/storage/v1/object/public/endless/board_qT3d40WADmS3VjLIXS-node_o75KD3f2n9ke8uUfhN-oRv8b1XohA7a.jpg"
      },
      {
        "label": "São Paulo",
        "value": "https://endless.supabase.co/storage/v1/object/public/endless/board_qT3d40WADmS3VjLIXS-node_rd8QkBLx9qJRl7awqd-KE2gpSFeIaaV.jpg"
      },
      {
        "label": "Palmeiras",
        "value": "https://endless.supabase.co/storage/v1/object/public/endless/board_qT3d40WADmS3VjLIXS-node_qcEjuTMnUPnLvgeCUS-bPoKVCuQxSb7.png"
      },
      {
        "label": "Flamengo",
        "value": "https://endless.supabase.co/storage/v1/object/public/endless/board_qT3d40WADmS3VjLIXS-node_k61KNpU3e2j6wB5ctF-EWyPPMa067Oc.png"
      },
      {
        "label": "Cruzeiro",
        "value": "https://endless.supabase.co/storage/v1/object/public/endless/board_qT3d40WADmS3VjLIXS-node_o7iRV2RvNlOlD6QAZY-KL49xvVAVhn5.jpg"
      },
      {
        "label": "Atlético Mineiro",
        "value": "https://endless.supabase.co/storage/v1/object/public/endless/board_qT3d40WADmS3VjLIXS-node_6LZLqVuIVr0Lu1LiEw-gjDZN2fytkAj.jpeg"
      },
      {
        "label": "Gremio",
        "value": "https://endless.supabase.co/storage/v1/object/public/endless/board_qT3d40WADmS3VjLIXS-node_7alNFchKXNi78SxN0r-1PVuZnpieowT.jpg"
      },
      {
        "label": "Internacional",
        "value": "https://endless.supabase.co/storage/v1/object/public/endless/board_qT3d40WADmS3VjLIXS-node_CpsPkrrvRvs2ksp82Y-1wt8aqWIDdEv.webp"
      },
      {
        "label": "Vasco da Gama",
        "value": "https://endless.supabase.co/storage/v1/object/public/endless/board_qT3d40WADmS3VjLIXS-node_57dTGMDWo1x7xEkr3O-KTbb1n5ZJ9DU.png"
      },
      {
        "label": "Botafogo",
        "value": "https://endless.supabase.co/storage/v1/object/public/endless/board_qT3d40WADmS3VjLIXS-node_B5jj6vnbGOGV2TssoN-vXus34ELrkza.jpg"
      },
      {
        "label": "Brasil",
        "value": "https://endless.supabase.co/storage/v1/object/public/endless/board_DY4mrNV5xEiZPLf92n-node_0oaBBiHMBwAv55JbrR-SLcmmdOwcYjZ.png"
      }
    ],
    "default_value": "https://endless.supabase.co/storage/v1/object/public/endless/board_qT3d40WADmS3VjLIXS-node_o75KD3f2n9ke8uUfhN-oRv8b1XohA7a.jpg"
  }
]

Mods JSON

[
  {
    "id": "eaf4d00d-c452-4a85-b5d2-5cc86194418f",
    "key": "wear_any_shirt_3hJ8",
    "parameters": {
      "shirt": "{{shirt}}",
      "media_input": "{{media_input}}"
    }
  }
]

Now the Mod only offers a dropdown of specific shirt images. Perfect for any fan wanting quick jersey swaps.


Example 3: Nacho Elizalde (remix of "Face Swap")

This Mod swaps any face with a fixed image of influencer Nacho Elizalde:

Fields JSON

[
  {
    "key": "media_input",
    "type": "media",
    "label": "Input",
    "types": ["image"],
    "lowres": true,
    "expandable": true
  }
]

Mods JSON

[
  {
    "id": "f120a4cb-077e-4b6a-9bad-b0a4442986e3",
    "key": "face_swap_PGys",
    "parameters": {
      "media_input": "{{media_input}}",
      "foto": "((URL DE FOTO DE NACHO ELIZALDE))"
    }
  }
]

Here, the parameter foto is a hardcoded URL to Nacho's image, so every time a user runs this Mod, the input photo face is replaced with Nacho's.


Example 4: Custom Instruct for rhymes

This Mod remixes Instruct so it always prompts for a rhyming word. You only need a general media_input—the rest is fixed.

Fields JSON

[
  {
    "key": "media_input",
    "type": "media",
    "label": "Input",
    "types": ["text", "audio", "image", "video"],
    "lowres": true,
    "expandable": true,
    "hidden": false
  }
]

Mods JSON

[
  {
    "id": "7dfb790b-8029-4649-af2e-7726dcf4be54",
    "key": "instruct",
    "parameters": {
      "media_input": "{{media_input}}",
      "basic_prompt": "your job is to give me a word that rhymes with the one i'm going to give you",
      "enhance_prompt": false,
      "chat_model": "gpt-4-mini"
    }
  }
]

The basic_prompt is locked to a rhyming instruction, making this a specialized Instruct Mod.


Tips

  1. Customize fields: Rename labels and tooltips for clarity
  2. Hide fixed values: Set "hidden": true or hardcode in Mods JSON
  3. Test frequently: Run your Mod after each change
  4. Share: Right-click to copy your Mod's share link