fshy

fshy / Storage

Audius

audius.co · Storage · 1 record · JSON

Audius (Open Audio Protocol) — original file is served byte-for-byte Storage

★ qualifiesanonymousno cardRper-object-cap

audius.co · p2p · storage/audius-original-file-is-served-byte-for-byte · JSON · compare

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
Pricenone stated
Per-object capfile size cap is 2 GB (2000000000 bytes)
Retentionnot stated
EgressFree. 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.
Identityanonymous 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
  • per-object-cap file size cap is 2 GB source
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.
Bindingper-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
Interfacerest rest
ToolingPublic 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 withUnlimited 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.
ReliabilityNo 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 rungreported One page read moves it to documented.
Checked2026-10-21 (inherited); stale on 2026-11-04
Parsed numbers
  • $.limits[0].value limit:per-object-cap 2.0 GB
Evidence (4)
datesourcewhat it proved
2026-10-21help.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-21withheldprobe: 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-21withheldprobe: GET /v1/tracks/7AVQpPA/download -L -> 206, Content-Type audio/wave, Content-Range 0-1023/54711220, magic bytes RIFF/WAVE
2026-10-21withheldprobe: 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].url private-url
  • $.evidence[2].url private-url
  • $.evidence[3].url private-url
  • $.free_tier.notes process
  • $.per_object_cap.notes not-extracted
  • $.retention.notes not-extracted
  • $.retention.stated not-extracted