Engine catalog
Live contract

Music Intelligence

Greit Music Search

Search and similarity engine lifted from the live Greit browse and similar routes.

검색, 필터, 유사곡 추천을 v1 계약으로 제공하는 음악 검색 엔진입니다.

Overview

Contract Scope

Engine B is the v1 search service for the Greit catalog. It lifts the live browse and similar behavior so v1 can be byte-comparable with the current product surface.

The standalone engine is built and equivalence-proven against production behavior. Production proxy cutover is pending the public tunnel, so the current status remains a live contract rather than a completed cutover.

GET /v1/search returns the current live response shape: { tracks, nextCursor, hasMore }. v1 errors are the current flat shape: { error: string }.

Sanitization is part of the contract: search ranking fields are stripped, audio access URL policy is enforced, and similar-track private keys are removed.

Every v1 response includes X-Engine-Version. JSON is used for all response bodies.

API Reference

Endpoints

GET

/v1/search

Search and browse tracks with the live filter surface.

NameTypeRequiredDescription
qstringNoNatural-language or keyword query. Korean and English are both accepted by the translate layer.
genre / genresstring | string[]NoGenre filter. Both singular and plural aliases are accepted.
mood / moodsstring | string[]NoMood filter. Both singular and plural aliases are accepted.
tagsstring | string[]NoPublic taxonomy tag filters.
use_casesstringNoSingle-select use case lane. Send one value only; multi-select is not part of v1.
instrumentsstring | string[]NoInstrument overlap filter from the live browse surface.
bpm_min / bpmMinnumberNoMinimum tempo. Snake-case and camelCase aliases are accepted.
bpm_max / bpmMaxnumberNoMaximum tempo. Snake-case and camelCase aliases are accepted.
valence_min / valenceMinnumberNoMinimum valence score.
valence_max / valenceMaxnumberNoMaximum valence score.
arousal_min / arousalMinnumberNoMinimum arousal score.
arousal_max / arousalMaxnumberNoMaximum arousal score.
energy_min / energyMinnumberNoMinimum energy score.
energy_max / energyMaxnumberNoMaximum energy score.
danceability_min / danceabilityMinnumberNoMinimum danceability score.
danceability_max / danceabilityMaxnumberNoMaximum danceability score.
keystringNoMusical key filter.
duration_min / durationMinnumberNoMinimum track duration in seconds.
duration_max / durationMaxnumberNoMaximum track duration in seconds.
content_typeuuidNoContent type identifier. v1 expects the UUID value, not a slug.
instrumentalbooleanNoRestrict results to instrumental or vocal tracks.
sortstringNoSort mode from the live browse route. Cursor behavior follows the selected sort mode.
pagenumberNoPage-based pagination input used by page-style sort modes.
cursorstringNoKeyset cursor for cursor-enabled sort modes. Page-style modes use page semantics.
limitnumberNoMaximum result count for one response page.

Response

{ tracks, nextCursor, hasMore }. Cursor semantics follow sort mode: page-style sorts use page; keyset-enabled sorts use cursor/nextCursor.

  • use_cases is single-select in v1.
  • content_type must be a UUID, not a slug.
  • Korean and English are both accepted at q.
  • Response header: X-Engine-Version
GET

/v1/tracks/{id}/similar

Return tracks similar to a seed track.

NameTypeRequiredDescription
iduuid | slugYesSeed track id. UUID and slug are both accepted.
limitnumberNoResult limit from 1 to 50.

Response

{ seed, tracks, count, limit }. No cursor is available in v1.

  • The route is public and uses anon read context.
  • Response header: X-Engine-Version
GET

/v1/health

Read search engine health status.

Response

Operational health JSON.

GET

/v1/version

Read search engine version metadata.

Response

Version JSON plus X-Engine-Version.

Quickstart

Five-line curl

curl
curl "https://search.thegreit.com/v1/search?q=rainy%20jazz&use_cases=film&limit=10" \
  -H "Authorization: Bearer $GREIT_API_KEY" \
  -H "Accept: application/json" \
  -H "X-Client: docs-quickstart" \
  -i

Version log

Release Notes

v1.0.0

2026-07-06
  • Contract locked from extraction 38aa877.
  • Standalone engine equivalence proven P3 58/58; production proxy cutover is still pending public tunnel.
  • GET /v1/search, GET /v1/tracks/{id}/similar, health/version, and X-Engine-Version documented.