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.
Developers
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.
Exactly what your visitors get, running here. Drop a track to try it end to end; the result lands in your own nine71 account.
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.
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>
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.
As data- attributes on the script tag, or as query parameters on the iframe URL.
| Script | Iframe | What it does |
|---|---|---|
data-to | to |
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-theme | theme |
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-height | style |
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. |
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.
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.
"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.
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.
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.
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.
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); });
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.
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.
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].
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.
One at a time in the widget, so the result fits in a panel. The app takes a whole queue.
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].