openapi: 3.1.0
info:
title: SoundStat Genres Track API
description: API for accessing music track audio analysis, features (tempo, key, mode, energy, danceability, valence, instrumentalness, acousticness, loudness), search, and recommendations. SoundStat is an independent audio-analysis alternative to the deprecated Spotify audio-features endpoints.
version: 1.0.0
servers:
- url: https://soundstat.info
description: SoundStat production API
security:
- ApiKeyAuth: []
tags:
- name: Track
paths:
/api/v1/track/{track_id}:
get:
summary: Get Track Analysis
description: "Get detailed audio analysis for a specific track.\n\nParameters:\n----------\ntrack_id : str (Spotify track ID)
\nx_api_key : str (API key for authentication)
\n\nReturns:\n-------\nTrackAnalysis
\n Basic track info (name, artists, genre)
\n Track duration in milliseconds
\n Audio features (tempo, key, mode, energy etc.)
\n\n\nNotes:\n-----\nIf track hasn't been analyzed, initiates analysis and returns processing status."
operationId: get_track_analysis_api_v1_track__track_id__get
parameters:
- name: track_id
in: path
required: true
schema:
type: string
title: Track Id
- name: x-api-key
in: header
required: false
schema:
type: string
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TrackAnalysis'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Track
/api/v1/track/{track_id}/status:
get:
summary: Track Status Updates
description: "Get real-time status updates for track analysis via Server-Sent Events (SSE).\n\nParameters:\n----------\ntrack_id : str (Spotify track ID)
\nx_api_key : str (API key for authentication)
\n\nReturns:\n-------\nEventSourceResponse
\n Status updates as SSE events
\n Event types: status, complete, error
\n\nNotes:\n-----\nMaintains an active connection until analysis is complete or fails."
operationId: track_status_updates_api_v1_track__track_id__status_get
parameters:
- name: track_id
in: path
required: true
schema:
type: string
title: Track Id
- name: x-api-key
in: header
required: false
schema:
type: string
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Track
components:
schemas:
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
AudioFeatures:
properties:
tempo:
type: number
title: Tempo
description: Track tempo in BPM
key:
type: integer
title: Key
description: Track key (0-11)
mode:
type: integer
title: Mode
description: Mode (0 - minor, 1 - major)
key_confidence:
type: number
title: Key Confidence
description: Key detection confidence (0-1)
energy:
type: number
title: Energy
description: Energy level (0-1)
danceability:
type: number
title: Danceability
description: Danceability score (0-1)
valence:
type: number
title: Valence
description: Mood/positiveness (0-1)
instrumentalness:
type: number
title: Instrumentalness
description: Instrumentalness score (0-1)
acousticness:
type: number
title: Acousticness
description: Acousticness score (0-1)
loudness:
type: number
title: Loudness
description: Loudness level (0-1)
segments:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Segments
description: Segment analysis data
beats:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Beats
description: Beat analysis data
type: object
required:
- tempo
- key
- mode
- key_confidence
- energy
- danceability
- valence
- instrumentalness
- acousticness
- loudness
title: AudioFeatures
description: Public audio features response model
TrackAnalysis:
properties:
id:
type: string
title: Id
description: Spotify track ID
name:
type: string
title: Name
description: Track name
artists:
items:
type: string
type: array
title: Artists
description: List of artists
genre:
anyOf:
- type: string
- type: 'null'
title: Genre
description: Track genre
popularity:
anyOf:
- type: integer
- type: 'null'
title: Popularity
description: Popularity score (0-100)
duration_ms:
anyOf:
- type: integer
- type: 'null'
title: Duration Ms
description: Track duration in milliseconds
features:
anyOf:
- $ref: '#/components/schemas/AudioFeatures'
- type: 'null'
description: Audio features analysis
type: object
required:
- id
- name
- artists
title: TrackAnalysis
description: Public track analysis response model
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: API key issued after registration at https://soundstat.info/auth.html. Passed in the x-api-key request header.