Skip to the content
  1. Docs
  2. Get started

Quickstart: MusicAPI Managed Transfers

Managed TransfersGuide · 2 min
Turn on Managed Transfers, open your hosted transfer flow, and watch a demo transfer land in Demoify.

You open your own hosted transfer flow, move a few playlists into Demoify, and get the result as a webhook. You write no code until the last step.

  1. Sign up as transferring

    Sign up at app.musicapi.com/admin/signup and pick transferring libraries into your service. This turns Managed Transfers on, gives you ready-made source integrations, and sets the destination to Demoify.

  2. Open your transfer URL

    Open https://app.musicapi.com/{slug}/transfer in a browser. Your slug is {slug}.

  3. Run a transfer

    Pick a source service, sign in to it, pick a few playlists and confirm. Demoify, the destination, needs no sign-in.

  4. Watch the result

    The progress page is live. The results page shows the match rate and every item that did not match.

  5. Get the webhook

    Add a webhook endpoint and run a second transfer. Your backend gets transfer.completed and match.report_ready.

Your transfer URL

Transfer URL
https://app.musicapi.com/{slug}/transfer

Link your users to it from your app: a button, an email, a web view. With a custom domain the same page answers on your own host.

What Demoify is

Demoify is a pretend music service. It needs no account, keeps what the transfer writes, and lets you open the result like a real library. Use it to see the whole flow before your own service is connected. Read more in Demoify.

Add a webhook

Open API & webhooks in the dashboard, add your endpoint URL, tick the events and copy the signing secret. The secret shows once. Then press Send test event: your endpoint gets a signed transfer.completed with "test": true.

transfer.completed (shortened)
{
  "event": "transfer.completed",
  "createdAt": "2026-10-16T10:15:42.101Z",
  "data": {
    "transferUuid": "6a002d4b-f95b-471f-a27d-609a42e10cdb",
    "status": "completedWithErrors",
    "totalItems": 1204,
    "matchedItems": 1131,
    "unmatchedItems": 31,
    "resultsUrl": "https://api.musicapi.com/public/transfers/6a002d4b-f95b-471f-a27d-609a42e10cdb/unmatched"
  }
}

Verify the signature before you trust a delivery: Set up and verify webhooks.

Go to your own destination

  1. Set up the integration of your own service under Integrations, with your developer app: see the service setup pages.
  2. Open Transfer Branding and pick it as the Transfer destination.
  3. Brand the pages: logo, colours, fonts, custom domain. See Turn it on and brand it.

Your users already signed in to your service in your app? Skip the destination sign-in with a pre-authorized session.

Next steps