Similar Sound Effects
GEThttps://api.audioscape.ai/developer/v1/sfx/similarEndpoint
Given an SFX asset ID, find other sound effects that sound similar. Useful for building "more like this" pickers, filling out a soundscape with related ambiences, or matching a placeholder clip to its closest neighbor in the catalog.
Headers
| Name | Type | Description |
|---|---|---|
| x-api-key | required | Your API key |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| asset_id | string required | The Roblox asset ID of the SFX to find similar clips for |
| limit | number optional | Maximum results to return (default: 20, max: 100) |
| offset | number optional | Pagination offset (default: 0) |
| filters | object optional | JSON-encode the object and pass as a single querystring value (e.g. filters={"categories":["impact"]}). Narrow your results:categories—Array of UCS-style category namessubcategories—Array of subcategoriesduration—Object with min and max in seconds (default: 0–400) |
| max_score | number optional | Drops results whose score is at or above this threshold (between 0 and 1). Useful for filtering out near-duplicates of the seed sound — common in SFX libraries with many uploads of the same generic clip. Omit to return all results. |
| dedupe | boolean optional | Shortcut for filtering near-duplicates without picking a number — equivalent to a sensible default max_score. If both are set, max_score wins. |
Response
Returns SFX clips that are acoustically similar to the given asset.
Each clip also carries additive optional MIR fields that may be null: true_peak_dbtp for level-matching (short clips have no reliable LUFS), plus sound_start_sec and sound_end_sec, the audible-sound boundaries you can use to trim leading and trailing silence.
{
"tracks": [
{
"asset_id": number,
"name": "string",
"description": "string",
"category": "string",
"subcategory": "string",
"tags": "string",
"duration": number,
"score": number,
"created_at": "string",
"updated_at": "string",
"creator_id": number | null,
"creator_name": "string",
// --- MIR fields (all optional, may be null) ---
"true_peak_dbtp": number, // true peak in dBTP; use for level-matching (short clips have no reliable LUFS)
"sound_start_sec": number, // audible-sound start — trim leading silence
"sound_end_sec": number // audible-sound end — trim trailing silence
}
],
"meta": {
"total": number,
"limit": number,
"offset": number
}
}Example Request
Take one hero sound — say, the footstep you already love — and fan it out into a variety pack of similar clips so repeated plays don't feel mechanical. Assumes a client from the Quickstart.
-- Build a footstep variety pack from one hero sound
local HERO_FOOTSTEP_ID = "9120386436"
local result, err = client:sfxSimilar({
asset_id = HERO_FOOTSTEP_ID,
limit = 5,
})
if not result then warn(err) return end
local footsteps = { HERO_FOOTSTEP_ID }
for _, sfx in result.tracks do
table.insert(footsteps, sfx.asset_id)
end
local function playFootstep(parent)
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://" .. footsteps[math.random(#footsteps)]
sound.Parent = parent
sound:Play()
endError Responses
400Bad RequestMissing or invalid asset ID.
{
"error": "asset_id is required and must be a numeric string"
}401UnauthorizedInvalid or missing API key.
{
"error": "Invalid API key"
}404Not FoundThe given asset ID has no SFX embedding in our catalog.
{
"error": "asset_id not found"
}429Too Many RequestsYou've exceeded your rate limit. See your current tier on the API Keys page.
{
"message": "Too Many Requests"
}500Internal Server ErrorSomething went wrong on our end. Try again or contact support if the issue persists.