Skip to content

search

search endpoints for relay.

unified_search(db: Annotated[AsyncSession, Depends(get_db)], q: str = Query(..., min_length=2, max_length=100, description='search query'), type: str | None = Query(None, description='filter by type: tracks, artists, albums, tags (comma-separated for multiple)'), limit: int = Query(20, ge=1, le=50, description='max results per type')) -> SearchResponse

unified search across tracks, artists, albums, and tags.

uses pg_trgm for fuzzy matching with similarity scoring. results are sorted by relevance within each type.

semantic_search(db: Annotated[AsyncSession, Depends(get_db)], q: str = Query(..., min_length=3, max_length=200, description='text description of desired audio'), limit: int = Query(10, ge=1, le=50, description='max results')) -> SemanticSearchResponse

semantic audio search — describe a mood and get matching tracks.

uses CLAP embeddings to match text descriptions to audio content. no auth required (matches existing /search/ pattern). returns 503 if embedding services are disabled.

track search result.

artist search result.

album search result.

tag search result.

playlist search result.

unified search response.

a track result from semantic audio search.

response from semantic search endpoint.