Developers

Put a drop box on your site.

One line of HTML. Artists drop a track on your page, it lands in your inbox on nine71, judged on the sound alone. No API key, no backend, no audio through your servers.

This is the widget.

Exactly what your visitors get, running here. Drop a track to try it end to end; the result lands in your own nine71 account.

Leave it empty and the track is tested against every label instead.

Paste one of these.

The script sizes the frame to its content and tells your page when a track lands. The iframe alone does the job on a site that cannot run scripts. Both are the same widget.

Script

Squarespace, Webflow, Wix, WordPress, a hand-written page. Put it where the box should appear.

<script async
  src="https://foundry.nine71.ai/embed/nine71-embed.js"
  data-to="your-inbox-slug"
  data-theme="auto"></script>

Iframe

Notion, Carrd, a newsletter page, anywhere scripts are stripped. Set the height you have room for.

<iframe
  src="https://foundry.nine71.ai/embed/?to=your-inbox-slug&theme=auto"
  title="Send your track through nine71 Foundry"
  style="width:100%;height:620px;border:0"
  allow="clipboard-write"></iframe>

Your inbox slug is the last part of your workspace address on platform.nine71.ai. Type it into the preview above: the widget names the inbox it will send to, or says in red that no inbox has that slug. Leave data-to out on an artist's own site and the widget tests the track against every label instead.

Parameters.

As data- attributes on the script tag, or as query parameters on the iframe URL.

ScriptIframeWhat it does
data-toto The inbox the track is sent to, by slug. Leave it out and the artist gets their top matches across every label instead of a send.
data-themetheme dark, light or auto. Auto follows the visitor's system setting. Default auto.
data-target— A CSS selector. The frame goes inside that element instead of next to the script tag.
data-heightstyle The starting height in pixels. The script resizes the frame to its content afterwards; the plain iframe keeps whatever height you give it, so allow about 620.

What your visitor does.

1

Drops a track

WAV, AIFF, FLAC, MP3 or M4A, up to 200 MB. It uploads straight from their browser to nine71's storage under their own account. Your site never touches the file.

2

Names it and says who they are

A title, an artist name, and the rights line. Then a phone number and the code we text them, or an email and password. That makes their free nine71 account, or signs them into the one they have.

3

Sees where it went

"Sent to your label" when you set an inbox, or their top matches when you did not. The track sits in their library at foundry.nine71.ai with the score, every version, and the read.

Where the track goes.

Into your inbox on nine71

The same inbox your team already opens on platform.nine71.ai, playable, scored against your own catalogue. A drop from your site and a send from the app are the same row.

Into the artist's own account

The track belongs to the person who dropped it. They keep it, can test it again, and can send it elsewhere. Nothing about them is shown to you but the track and the name they typed.

Never through your site

The widget is an iframe on foundry.nine71.ai. Audio, sign-in and every request stay on our origin. There is no key to leak because there is no key.

Know when a track lands.

With the script snippet, your page gets one DOM event per finished drop. Use it to say thanks, hide the box, or count a conversion. It carries the title and where the track went, and nothing else.

window.addEventListener('nine71:submitted', e => {
  // e.detail = { mode: 'send' | 'match', title, sent_to: [{ label, slug }] }
  console.log('a track landed:', e.detail.title);
});

Questions.

Do I need an account or an API key?

An inbox on nine71, which is your workspace on platform.nine71.ai. No key: the widget is a page on our origin, and the slug in it is the same public slug the Foundry app shows in its picker.

Why does the artist sign in inside the widget?

A track needs an owner. The account is what holds it, what lets them send it again, and what carries the updates about it. Signing in is a phone number and a code, or an email and password, and takes ten seconds. Browsers keep an iframe's storage separate from a site's own, so when they open foundry.nine71.ai directly they sign in there once more with the same number or email and land on the same account.

Can I require a message, a genre, or social links?

Not yet. The widget asks for a title, an artist name and the rights line, which is what the app asks for. Tell us what your inbox needs at [email protected].

What if my inbox is closed?

The track is kept and waitlisted and the artist is told so. It goes in the moment you reopen. Sends are the same whether they come from the widget or the app.

Can more than one track be dropped at once?

One at a time in the widget, so the result fits in a panel. The app takes a whole queue.

Is there an API?

Not a public one. Analysis of a full-length track takes about twenty seconds, so a real API has to be submit-then-callback, and we would rather ship that with one design partner than guess the contract. If you are that partner, write to [email protected].