DryMerge IDs are pretty significant — they’re the way we refer to any DryMerge object. They contain 5 parts: Organization, Namespace, Name, Type, and Version.


IDs are case-sensitive. This means that myorg/mynamespace/myname.template:0 is not the same as myorg/mynamespace/MyName.template:0.


  • If you omit the Organization from an id, it will be inferred from the organization you’re calling from (via your API key or via the site).
  • If you omit the Namespace from an id, it will go to the default namespace ~.
  • If you omit the Version from an id, it will go to the latest version. Typically, we do not ever include the version in an id.

Oftentimes, the only part of an id that you need to specify are the Name and Type.


DryMerge has a few different types of objects. You can only reference objects by a valid type. The most common type you’ll see is template. Other common types include api, trigger, cron, fn, search, merge, and group. You must always include the type in an id.

  • Objects can have the same name, organization, and namespace, but different types. For example, you can have a myorg:~:myname:template and a myorg:~:myname:api.


# This is the same as myorg/~/alone.template:latest


  • Tenants in DryMerge are your users. When you specify a tenant id, you can use whatever unique identifier you use for your users (as long as it is under 32 characters). For example, you could use an email address, a username, or a UUID.
  • Tenants are particularly relevant for (1): instantiating templates and (2): DryMerge’s hosted pages.
    • When you instantiate a template via the SDK or CLI, you can optionally specify a tenant id. This will mark the objects created by the template as belonging to that tenant.
    • Using hosted pages in iframes like and and authenticating using a tenant session will then allow your users to authenticate and interact with DryMerge objects that belong to them.