Audius
audius.co · Storage · 1 record · JSON
Audius (Open Audio Protocol) — original file is served byte-for-byte Storage
★ qualifiesanonymousno cardRper-object-cap
| Free tier | 'There is no limit to the number of tracks you can upload to your Audius profile' and 'no limit on the duration of your tracks'; per-upload file size cap is 2 GB. Unlimited tracks x 2 GB = unbounded, free, no paid tier exists. unit GB; metered on unstated |
|---|---|
| Price | none stated |
| Per-object cap | file size cap is 2 GB (2000000000 bytes) |
| Retention | not stated |
| Egress | Free. Content is served by creator nodes / the open-audio validator network; no egress meter, no account-level bandwidth cap, no paid tier to upgrade to. |
| Identity | anonymous derived from the record's prose, not from an identity field, and no signup was executed: y sample had it). /content/{cid} on creator nodes is 401 to anonymous callers — you must go through the discovery endpoint for a signed URL. p2p |
| Limits |
2 GB per track. is_downloadable must be true for the /download path (artist-controlled flag; 3 of 25 trending tracks in my sample had it). /content/{cid} on creator nodes is 401 to anonymous callers — you must go through the discovery endpoint for a signed URL. |
| Binding | per-object-cap the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota |
| Interface | rest rest |
| Tooling | Public discovery-provider REST API (discoveryprovider.audius.co/v1) — keyless with app_name. Track objects expose orig_file_cid, orig_filename, is_original_available, is_downloadable. /v1/tracks/{id}/stream returns a 302 to a creator-node cidstream; /v1/tracks/{id}/download returns a 302 to the ORIGINAL file. JS SDK (@audius/sdk), docs.audius.co/api. |
| Composes with | Unlimited tracks per account x unlimited accounts; each track independently 2 GB. Because /download serves orig_file_cid and not the 320k transcode, this is the only host in this slot where the uploaded bytes come back out intact. |
| Reliability | No transcoding on the download path. Verified live: GET /v1/tracks/7AVQpPA/download -> 302 to val007.open-audio-validator.com/tracks/cidstream/<orig_file_cid>?filename=....wav -> 206, Content-Type audio/wave, Content-Disposition attachment; filename='...wav', Content-Range bytes 0-1023/54711220, body starts 'RIFF....WAVEJUNK'. The stream path, by contrast, is a 128 kbps mp3 re-encode. Retrieval depends on the discovery provider being up; the network is decentralised so a single node going down is survivable. |
| Notes | 'There is no limit to the number of tracks you can upload to your Audius profile' and 'no limit on the duration of your tracks'; per-upload file size cap is 2 GB. Unlimited tracks x 2 GB = unbounded, free, no paid tier exists. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
| Parsed numbers |
|
Evidence (4)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | help.audius.co/faq/is-there-a-limit-to-how-much-i-can-upload | 'no limit to the number of tracks'; 'file size limit for each upload ... currently set at 2GB'; page footer 'Updated April 30, 2026' |
| 2026-10-21 | withheld | probe: GET discoveryprovider.audius.co/v1/tracks/7AVQpPA?app_name=test -> 200, orig_filename 'Cartel De Santa - Tomala Cochino (Shavezz Remix).wav', duration 310, is_downloadable true, is_original_available true, orig_file_cid baeaaaiqsebqzfbbf2id64h6rtnfuhedc3h2qyrxhch4axr7tonaeq77novlzo |
| 2026-10-21 | withheld | probe: GET /v1/tracks/7AVQpPA/download -L -> 206, Content-Type audio/wave, Content-Range 0-1023/54711220, magic bytes RIFF/WAVE |
| 2026-10-21 | withheld | probe: GET /v1/tracks/a5aXGmz/stream -> 302 to creator-node .../tracks/cidstream/<track_cid> (the transcode, not the original) |
Unknown or withheld values (7)
$.evidence[1].urlprivate-url$.evidence[2].urlprivate-url$.evidence[3].urlprivate-url$.free_tier.notesprocess$.per_object_cap.notesnot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted