> For the complete documentation index, see [llms.txt](https://developer.musehub.com/muse-partners-help/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.musehub.com/muse-partners-help/getting-started/start-here-integrating-with-musehub.md).

# Start Here: Integrating with MuseHub

This page walks you through getting your app, plugin or sound pack live on MuseHub, in the right order. Work through it from start to finish and you'll have everything you need to integrate, test and submit your product on your own.

Each step links to the full documentation and the [Integration FAQs](https://developer.musehub.com/muse-partners-help/resources/integration-faqs) for details.

## Use an AI coding agent (recommended)

We recommend using an AI coding agent (e.g. Claude Code, Cursor, GitHub Copilot). It can read our docs for you and guide you through each step much faster.

**Not your thing?** No problem, we've got you covered. Skip to [Licensing options by product type](#licensing-options-by-product-type) and follow the steps in order.

### Using an agent

{% stepper %}
{% step %}

#### Using the Muse SDK?

Recent SDK packages include two agent skills in the hidden .claude/skills folder. Copy them into your own repo's .claude/skills/ and run /integrate-muse-sdk, then /enable-and-submit-muse-sdk. Point your agent at them first.
{% endstep %}

{% step %}

#### Give your agent the docs index

[developer.musehub.com/muse-partners-help/llms.txt](https://developer.musehub.com/muse-partners-help/llms.txt). Any docs page is also available as Markdown by adding .md to its URL.
{% endstep %}

{% step %}

#### Give it this page

Give your agent this page so it knows the order of steps.
{% endstep %}

{% step %}

#### Keep your API key out of the chat

Store it in an environment variable (e.g. MUSEHUB\_API\_KEY) and have the agent use ${MUSEHUB\_API\_KEY}.
{% endstep %}

{% step %}

#### Do the Partner Portal steps yourself

Your agent can't sign agreements, create products, upload, Save or Submit for you.
{% endstep %}

{% step %}

#### Check its work

Check its work against the [Pre-submission checklist](#pre-submission-checklist).
{% endstep %}
{% endstepper %}

### Example prompt

{% prompt description="Integrate a product with MuseHub" icon="sparkles" openInAIProviders="true" defaultExpanded="partial" %}

```markdown
I'm integrating my [plugin / app] "[product name]" with MuseHub.
- Tech stack: [JUCE / Electron / Unity C# / native C++ / other]
- Formats and platforms: [VST3, AU, AAX, standalone app] on [macOS / Windows]
- Business model: [free / pay once / subscription / free trial]
- Do I need user accounts or a cloud backend? [yes / no]

Read first:
1. The agent skills in the MuseSDK package's .claude/skills folder (if using the SDK)
2. The MuseHub "Start Here" page: [link to this page]
3. https://developer.musehub.com/muse-partners-help/llms.txt and the .md pages it links to

Then:
1. Recommend no protection, Muse DRM or Muse SDK, and explain why.
2. Make the code and build changes needed.
3. Give me the exact musedrm commands to run, in order, using ${MUSEHUB_API_KEY}.
4. List the Partner Portal steps I must do myself, and when.
5. Check everything against the pre-submission checklist and flag anything missing.
6. Tell me which docs pages you relied on for each recommendation.
```

{% endprompt %}

## Licensing options by product type

| What are you publishing?                                                                                                         | Licensing option                                                                                                                    |
| -------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| Free plugin or app                                                                                                               | No DRM or SDK. Skip step 3.                                                                                                         |
| Paid plugin or app, no code changes                                                                                              | [Muse DRM](https://developer.musehub.com/muse-partners-help/resources/muse-drm) (wraps your finished build)                         |
| Paid product that needs user accounts, a cloud backend, subscription tiers, one build for all stores, or your own license system | [Muse SDK](https://developer.musehub.com/muse-partners-help/resources/muse-sdk)                                                     |
| Electron / web-view app, or Unity/UWP C# app                                                                                     | [Muse SDK](https://developer.musehub.com/muse-partners-help/resources/muse-sdk) (Muse DRM doesn't support these)                    |
| Loops, samples, SFX, production music                                                                                            | No DRM or SDK. See [Loops & Audio](https://developer.musehub.com/muse-partners-help/adding-products/product-types/loops-and-audio). |
| MuseSounds libraries                                                                                                             | Contact your Partner Manager                                                                                                        |

Muse DRM and Muse SDK can't be used together on the same product. More help choosing: [FAQs → Choosing an Integration Method](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-1.-choosing-an-integration-method-sdk-vs-drm).

## Step by step guide

{% stepper %}
{% step %}

## Set up your account

* **Not in contact with our team yet?** Apply to join at [join.musehub.com](https://join.musehub.com/).
* **In contact with us but haven't received your partner account details yet?** Reach out to your Partner Manager.
* **Partner account set up by our team?** Continue below.

- [ ] Accept the Distribution Agreement under **Account**. Submissions are blocked until you do.
- [ ] Paid products: verify payout details via Stripe Connect.
- [ ] Paid apps/plugins: create an API key in [User Settings](https://partner.musehub.com/dashboard/user-settings). It can only be downloaded once.
- [ ] Muse SDK: ask your Partner Manager to pre-approve SDK usage when you start, not at submission. The SDK can't connect to MuseHub until it's approved.

Details: [Set up your Partner account](https://developer.musehub.com/muse-partners-help/getting-started/set-up-your-partner-account) · [Generate API Keys](https://developer.musehub.com/muse-partners-help/getting-started/generate-api-keys)
{% endstep %}

{% step %}

## Prepare your build

* [ ] Clean build with no other DRM. It opens directly, with no login or license screen.
* [ ] Muse DRM: self-update ("check for updates") and your own license panel removed from the MuseHub build.
* [ ] Muse SDK: users authorised through MuseHub never see your license panel.
* [ ] Debug symbols stripped from the release build.
* [ ] &#x20;Final product name set (renaming after wrapping breaks it).
* [ ] Version number in N.N.N format, e.g. 1.0.0.
* [ ] macOS minimum deployment target set explicitly in Xcode.

Details: [Prepare your product](https://developer.musehub.com/muse-partners-help/getting-started/prepare-your-product) · [Content Guidelines](https://developer.musehub.com/muse-partners-help/resources/content-guidelines)
{% endstep %}

{% step %}

## Protect or integrate (paid products only)

### Muse DRM

* [ ] Using the latest musedrm CLI (ask your Partner Manager).
* [ ] Created the product in the Portal first to get its product\_id.
* [ ] Right musedrm for your platforms: the macOS musedrm wraps macOS and Windows binaries, the Windows musedrm only Windows binaries.
* [ ] Wrapped the **bundle itself** (X.vst3, X.component, X.app, or the exe), not a file inside it or its parent folder.
* [ ] Wrapped all formats going into one installer in **one** --protect call.
* [ ] One musedrm\_id per wrap: one for a whole installer, one per asset if you upload assets separately (each asset wrapped on its own). Never reuse an ID across platforms.

Details: [Muse DRM](https://developer.musehub.com/muse-partners-help/resources/muse-drm) · [FAQs → MuseDRM](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-4.-musedrm-binary-wrapping)

### Muse SDK

* [ ] SDK linked, and its library shipped next to your binary: MuseClientSdk.x.y.z.dll on Windows, the dylib in Contents/Frameworks/ on macOS.
* [ ] Test mode (MuseSdk\_initializeTestMode) used in debug builds **only**.
* [ ] SDK calls run off the UI thread.
* [ ] MuseSdk\_finalize() called after every authorisation, including failures.
* [ ] Receipt checks confirm the item\_id matches **this** product.

Details: [Muse SDK](https://developer.musehub.com/muse-partners-help/resources/muse-sdk) · [FAQs → SDK Runtime Behaviour & API](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-3.-sdk-runtime-behaviour-and-api)
{% endstep %}

{% step %}

## Sign and package

### macOS

* [ ] Wrap first, then codesign (codesign --force --deep, hardened runtime, Developer ID Application certificate), notarize and staple. Every embedded dylib has the same Team ID as the main binary.
* [ ] Zip each bundle with zip -ry, keeping its extension (MyPlugin.vst3.zip, MyApp.app.zip). A single PKG only for extra content or several formats in one installer. No DMG.
* [ ] Bundle ID known.

### Windows

* [ ] Standalone .exe files and installers signed (plugin DLLs don't need it). No certificate? We sign for free: send us the exe (wrapped first for Muse DRM), put the signed exe in your installer, then send us the installer. Files we sign are for MuseHub distribution only.
* [ ] Installer only if you ship extra content or a standalone app. It must be your only Windows asset, run silently and include an uninstaller.
* [ ] VST3 is the bundle folder (DLL in Contents/x86\_64-win). Dependency DLLs go inside the bundle, never in System32.
* [ ] Application ID left blank (MuseHub detects it), unless your beta can't be launched or uninstalled from the MuseHub Library.

### AAX

* [ ] Your own PACE account. Codesign (and the SDK dylib, if using the SDK) before running wraptool. MuseHub can't sign AAX or macOS builds.

Not supported: VST2, CLAP, Linux.

Details: [Applications](https://developer.musehub.com/muse-partners-help/adding-products/product-types/applications) · [Plugins](https://developer.musehub.com/muse-partners-help/adding-products/product-types/plugins) · [FAQs → Code Signing](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-5.-code-signing-and-certificates) · [FAQs → Plugin Formats & Packaging](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-6.-plugin-formats-and-packaging)
{% endstep %}

{% step %}

## Create your product and set pricing

* [ ] Product details filled in (icon 1024×1024, subtitle 50 characters max, short description \~350 characters, keywords).
* [ ] Pricing set (paid products): base price tier, and optional discounts, trial or subscription offers.

Details: [Product Page Assets](https://developer.musehub.com/muse-partners-help/adding-products/product-page-assets) · Pricing: [Price Tiers](https://developer.musehub.com/muse-partners-help/adding-products/pricing/price-tiers) · [Pay once](https://developer.musehub.com/muse-partners-help/adding-products/pricing/pay-once) · [Subscriptions](https://developer.musehub.com/muse-partners-help/adding-products/pricing/subscriptions)
{% endstep %}

{% step %}

## Create a submission

* [ ] Assets uploaded with a version on **every** asset.
* [ ] Features and What's New filled in.
* [ ] Muse DRM: switch on **Enable DRM** in the submission to reveal the musedrm\_id fields.
* [ ] Muse DRM: each unique musedrm\_id pasted next to its matching asset.
* [ ] Click **Save**.

### Muse SDK products: follow this order exactly

{% stepper %}
{% step %}

#### Choose Enabled and save

Choose **Enabled** and click **Save**. Don't submit yet.

Choose **Enabled (No Validation)** instead if your product self-updates outside MuseHub (for example because you also sell it on your own site), or while you test locally built debug binaries during integration. The first install always comes from MuseHub.
{% endstep %}

{% step %}

#### Run the SDK enable command

Run musedrm --sdk\_enable (or --sdk\_enable\_permissive to match "No Validation") on your **built binaries**, not the installer: once per platform with all its assets together, or once per asset as long as every asset gets it.

\--asset\_type and --product\_version must match what the Portal shows. Electron apps add --electron and need the app's bundle ID in the submission.

On success it prints "The following assets are enabled for Muse SDK usage".
{% endstep %}

{% step %}

#### Submit

Go back and click **Submit**.
{% endstep %}
{% endstepper %}

Details: [Muse SDK → Submitting SDK Products](https://developer.musehub.com/muse-partners-help/resources/muse-sdk#submitting-sdk-products) · [FAQs → The SDK "enable" Step](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-2.-the-sdk-enable-step-most-common-submission-error)
{% endstep %}

{% step %}

## Beta test

* [ ] Beta group created and attached to your product.
* [ ] Submitted as **Beta** and installed from MuseHub (Library → Beta Testing). A beta group on its own isn't enough; the product needs a Beta submission.
* [ ] Portal admins are beta testers automatically, and betas skip review.
* [ ] Licensing tested: adding a tester grants a license, removing them revokes it.
* [ ] Tested in **Audacity** as well as your main DAWs.

Details: [Beta Testing](https://developer.musehub.com/muse-partners-help/adding-products/beta-testing) · [FAQs → Audacity Compatibility](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-10.-audacity-compatibility)
{% endstep %}

{% step %}

## Submit for release

* [ ] Pre-submission checklist done.
* [ ] Submitted as **Release**. After your first approval, updates are usually reviewed within one week.
* [ ] For updates: duplicate the last submission, replace only what changed, bump the version and add 'What's New', Save, (SDK: run the enable step), Submit.
* [ ] Muse DRM updates: re-wrap and paste the new musedrm\_id. A stale ID shows users the old authorisation panel.

Details: [Submitting for Release](https://developer.musehub.com/muse-partners-help/adding-products/submitting-for-release)
{% endstep %}

{% step %}

## After launch (optional)

* [Webhooks](https://developer.musehub.com/muse-partners-help/resources/web-hooks): purchase and subscription events for account-based products.
* [URI Protocol](https://developer.musehub.com/muse-partners-help/resources/uri-protocol): link from your product to MuseHub store pages.
* [Marketing Assets](https://developer.musehub.com/muse-partners-help/resources/marketing-assets): MuseHub logos and icons.
  {% endstep %}
  {% endstepper %}

## Pre-submission checklist

* [ ] Distribution Agreement accepted (and payouts verified for paid products)
* [ ] Opens directly: no login, license screen or custom auth panel
* [ ] DRM: no self-updater in the MuseHub build
* [ ] SDK: no test mode in the release build; finalize is called
* [ ] DRM: every asset has the musedrm\_id from its own wrap
* [ ] SDK: enable step run after Save, with the flag matching the dropdown
* [ ] Signed after wrapping: notarized and stapled on macOS; exe and installer signed on Windows
* [ ] macOS: zipped bundles or a single PKG, no DMG
* [ ] Every asset has an N.N.N version
* [ ] Tested via private Beta, including in Audacity
* [ ] Product page complete: icon, descriptions, features, previews

## Common errors and fixes

| If you see…                                                                      | Do this                                                                                                                                                                                                                                                                                                    |
| -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| BusinessRuleError: Have not called endpoint to setup SDK                         | Save the draft first, run --sdk\_enable, then Submit (step 6). See [SDK enable step](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-2.-the-sdk-enable-step-most-common-submission-error).                                                                                  |
| SDK enable step can't detect the SDK                                             | Run it on the built bundle, not the installer, and update musedrm. See [SDK enable step](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-2.-the-sdk-enable-step-most-common-submission-error).                                                                              |
| Authorised users see a license screen (SDK)                                      | The CLI flag and the Portal dropdown don't match. See [SDK enable step](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-2.-the-sdk-enable-step-most-common-submission-error).                                                                                               |
| SDK connects but user/receipt calls fail                                         | Expected until the product is submitted. Submit a private Beta. See [Beta Testing](https://developer.musehub.com/muse-partners-help/adding-products/beta-testing).                                                                                                                                         |
| Product won't authorise on one platform (DRM)                                    | The same musedrm\_id was used for both platforms, or an old ID from a previous submission is still there. Re-wrap and paste the new one. See [MuseDRM FAQs](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-4.-musedrm-binary-wrapping).                                    |
| "Binary processing rejected … debug symbols or a previously existing protection" | Strip symbols and wrap a fresh, unprotected build. See [MuseDRM FAQs](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-4.-musedrm-binary-wrapping).                                                                                                                          |
| Build broke after renaming                                                       | Rename before wrapping. See [MuseDRM FAQs](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-4.-musedrm-binary-wrapping).                                                                                                                                                     |
| macOS build won't launch after upload                                            | Symlinks were lost. Repackage (zip with zip -ry, or use a PKG). See [Plugin Formats & Packaging](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-6.-plugin-formats-and-packaging).                                                                                          |
| Windows uninstall doesn't work                                                   | Look up the exact key under HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ and enter it as the Application ID. InnoSetup keys end in \_is1, sometimes }}\_is1, which is valid. See [Applications](https://developer.musehub.com/muse-partners-help/adding-products/product-types/applications). |
| Submission blocked before upload                                                 | Accept the Distribution Agreement. See [Set up your Partner account](https://developer.musehub.com/muse-partners-help/getting-started/set-up-your-partner-account).                                                                                                                                        |
| Cannot submit product version without active prices                              | Set a base price in Pricing. See [Price Tiers](https://developer.musehub.com/muse-partners-help/adding-products/pricing/price-tiers).                                                                                                                                                                      |
| Could not find matching application asset                                        | --asset\_type doesn't match what the Portal shows after scanning the upload. See [Plugin Formats & Packaging](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-6.-plugin-formats-and-packaging).                                                                             |
| SDK connection error on initialise                                               | MuseHub isn't installed or isn't running on that machine. See [SDK Runtime Behaviour & API](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-3.-sdk-runtime-behaviour-and-api).                                                                                              |
| macOS: the SDK dylib can't be found at launch                                    | Use a relative rpath, @loader\_path/../Frameworks/, not a build-machine path. See [Platform Gotchas](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-9.-platform-gotchas).                                                                                                  |
| macOS app rejected with "different Team ID"                                      | Sign every embedded dylib with your own Developer ID. See [Code Signing](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-5.-code-signing-and-certificates).                                                                                                                 |
| "Very low patchable rate" when wrapping                                          | Adjust release optimisation and linker settings (e.g. turn off identical-code folding and unreferenced code removal) so the binary can be protected. See [MuseDRM FAQs](https://developer.musehub.com/muse-partners-help/resources/integration-faqs#id-4.-musedrm-binary-wrapping).                        |
| Network error while wrapping                                                     | Update musedrm to the latest version. See [Muse DRM](https://developer.musehub.com/muse-partners-help/resources/muse-drm).                                                                                                                                                                                 |

More answers: [Integration FAQs](https://developer.musehub.com/muse-partners-help/resources/integration-faqs). MuseHub logs: Windows …\AppData\Local\Muse Hub\cache\Logs\\, macOS \~/Library/Logs/com.muse.musehub.

## Still stuck?

Contact your Partner Manager. If you're stuck on wrapping or the SDK enable step, we can run it for you. For a fast answer, include:

* Product name and product\_id
* Muse DRM or Muse SDK, and the tool/SDK version
* Platform, OS version and format (VST3/AU/AAX/app, installer type)
* Which step you're on and what you've tried
* The exact command and full error message
* MuseHub logs (and for DAW issues, the host name and version)
