Перейти к содержанию

Справочник API

Для кого: Пользователи и сопровождающие, автоматизирующие локальное приложение FastAPI. Задача: Кратко описать семейства конечных точек и основные правила передаваемых данных. Тип: Справочник

API намеренно локальный и не требует аутентификации. Осторожно выбирайте адрес сервера. Используйте 127.0.0.1, если не хотите сознательно открыть доступ в локальной сети.

Ниже описан активный контракт бэкенда v7. Клиент React всё ещё использует удалённые структуры до v7 и пока не перенесён, поэтому совместимость интерфейса здесь не обещается.

База данных

МетодПутьНазначение
GET/api/database/currentтекущий выбор SQLite
POST/api/database/switchпереключение на путь
POST/api/database/dialogсистемный диалог выбора базы
POST/api/database/clearудаление строк библиотеки SQLite

/api/database/clear не удаляет аудиофайлы.

Состояние базы возвращает path, artifacts_path, evaluation_path, catalog_uuid и selected. Для нового пути создаются Core v7 и обязательная база Artifacts. Evaluation остаётся необязательной. Комплект не v7 или неполный комплект отклоняется, а не мигрирует.

Библиотека и медиа

МетодПутьНазначение
POST/api/library/scanзапуск сканирования
POST/api/library/tags/refreshзапуск обновления тегов
POST/api/library/relocateпредварительная проверка или применение переноса путей
GET/api/library/summaryколичество треков, результатов анализа, отметок и классификаторов
GET/api/tracksлёгкие строки треков с пагинацией
POST/api/tracks/filteredполный отфильтрованный список для действий с сетом
GET/api/tracks/{track_id}полная строка метаданных
GET/api/tracks/{track_id}/sonara-timelineявное чтение Timeline
POST/api/tracks/{track_id}/likedпереключение локальной отметки
GET/media/{track_id}поток аудио для прослушивания

Диапазоны запроса списка: limit=1..500, offset>=0, search_mode=like|fts, preset=all|syncopated.

Конечная точка временных данных возвращает полные сохранённые beats, onset_frames, chord_sequence, chord_events, tempo_curve, energy_curve, segments, loudness_curve и downbeats. Если актуальной строки нет, возвращается {}, а для неизвестного трека — 404. Обычный ответ v7 TrackSummaryV7 содержит составную идентичность (catalog_uuid, track_id, track_uuid, content_generation), file_path, компактные теги, analysis_coverage и сводки классификаторов. Подробный ответ содержит optional_outputs.timeline_fields, sonara_embedding_available и audio_fingerprint_available.

Каждое поле — сериализованный объект, а не исходный массив верхнего уровня:

json
{
  "energy_curve": {
    "value": [0.31, 0.44, 0.72],
    "type": "list",
    "length": 3
  }
}

Анализ и классификаторы

МетодПутьНазначение
POST/api/analysis/jobsзапуск анализа
GET/api/analysis/jobs/latestпоследняя задача
GET/api/analysis/jobs/{job_id}состояние задачи
POST/api/analysis/jobs/{job_id}/cancelзапрос отмены
POST/api/analysis/resetсброс одного семейства
POST/api/analysis/sonara/releases/prepareрезервное копирование и активация четырёх результатов загруженного релиза SONARA
GET/api/classifiersопубликованные профили
POST/api/classifiers/analyzeрасчёт оценок выбранных классификаторов; пустой список означает все совместимые
POST/api/classifiers/{classifier_key}/analyzeрасчёт оценок одного классификатора
POST/api/classifiers/resetудаление выбранных оценок
POST/api/analysis/pipelinesочередь выбранных этапов в фиксированном порядке
GET/api/analysis/pipelines/latestсостояние последнего родительского конвейера
GET/api/analysis/pipelines/{job_id}состояние родителя и этапов
POST/api/analysis/pipelines/{job_id}/cancelотмена текущего и ожидающих этапов

Тело анализа содержит models и limit. Для ML добавляются device, top_k, track_batch_size и inference_batch_size; для SONARA — sonara_outputs и sonara_batch_size. classifier_keys не принимается.

Допустимые результаты SONARA: core, timeline, embedding, fingerprint. При отсутствии поля используется ["core"]; нормализация всегда включает core. SONARA выполняется отдельно, а планировщик сравнивает контракт каждого результата. В нативный analyze_batch передаются пути; ML-модели используют общее декодирование FFmpeg. Неподготовленный релиз возвращает 409 с SONARA_RELEASE_PREPARATION_REQUIRED.

Тело подготовки:

json
{
  "backup_dir": "C:\\backups\\dj-track-similarity",
  "confirm": "PREPARE SONARA RELEASE"
}

Передать результаты или хеш релиза нельзя. Операция проверяет копии Core и Artifacts и использует упорядоченный процесс с квитанцией, который можно продолжить после прерывания.

Совокупное тело запроса классификаторов: { "classifier_keys": [], "limit": null }. Готовность зависит от манифеста; общее количество учитывает готовые пары классификатор–трек, а неготовые пары исключаются и не считаются ошибками. Конвейер выбирает sonara, ml и/или classifiers, общий лимит и вложенные настройки. Порядок всегда SONARA, ML, CLASSIFIERS. Ручные и конвейерные этапы используют одну последовательную очередь приложения.

GET /api/library/summary сообщает покрытие SONARA, анализа и эмбеддинга MAEST, MERT, MuQ, CLAP, отметок и совместимых классификаторов. analysis_coverage трека разделяет sonara_core, timeline, sonara_embedding и fingerprint.

Сброс принимает { "analysis_family": "sonara" } или maest, mert, muq, clap. Ответ содержит core_rows_deleted, artifact_rows_deleted и classifier_rows_deleted. Для SONARA удаляются только зависимые оценки; метки, обратная связь и независимые эмбеддинги сохраняются.

Поиск и SET

МетодПутьНазначение
POST/api/searchпоиск по референсным трекам для maest, mert, muq или clap
POST/api/search/sonaraпоиск SONARA по референсным трекам
POST/api/search/textтекстовый поиск CLAP
POST/api/search/hybridвзвешенный предварительный результат Hybrid
POST/api/set-builder/generateпредварительный результат Smart Set Builder
POST/api/reference/compareгруппы Reference Compare для одного референсного трека
POST/api/reference/compare/verdictсохранение одного вердикта прослушивания

Важные диапазоны:

  • списки референсных треков для Hybrid и его обратной связи — 1..5 уникальных ID;
  • лимиты поиска обычно 1..500;
  • Hybrid per_source1..100;
  • Hybrid limit1..100;
  • SET limit1..500;
  • SET auto_seed_count1..5;
  • SET bpm_start и bpm_target20..300, если заданы.

Reference Compare принимает один seed_track_id, необязательные models из clap, mert, muq, maest, sonara и limit=1..100. Вердикты: mood, palette, instruments, groove, genre, transition, miss. Они сохраняются как локальная обратная связь под reference_compare:<model>.

Теги и экспорт

МетодПутьНазначение
POST/api/exportзапись M3U или CSV
POST/api/tags/genres/applyсинхронная запись жанра MAEST
POST/api/tags/genres/jobsзапуск задачи жанровых тегов
GET/api/tags/genres/jobs/latestпоследняя задача жанров
GET/api/tags/genres/jobs/{job_id}состояние задачи жанров
POST/api/tags/genres/jobs/{job_id}/cancelотмена задачи жанров
POST/api/dialog/folderсистемный диалог папки

API жанров отклоняет запись отдельного трека. Текущее поведение записывает все доступные сохранённые жанры MAEST.

Вспомогательные инструменты

МетодПутьНазначение
POST/api/audio-doctor/jobsзапуск Audio Doctor
GET/api/audio-doctor/jobs/latestпоследняя задача Audio Doctor
GET/api/audio-doctor/jobs/{job_id}состояние
POST/api/audio-doctor/jobs/{job_id}/cancelотмена
GET/api/audio-doctor/jobs/{job_id}/report/xlsxскачивание XLSX
POST/api/audio-dedup/jobsзапуск Audio Dedup
GET/api/audio-dedup/jobs/latestпоследняя задача Audio Dedup
GET/api/audio-dedup/jobs/{job_id}состояние
POST/api/audio-dedup/jobs/{job_id}/cancelотмена
GET/api/audio-dedup/jobs/{job_id}/report/xlsxскачивание XLSX

Применение Audio Doctor требует APPLY REPAIR, Audio Dedup — APPLY DELETE.

Rhythm Lab и сервер

МетодПутьНазначение
GET/api/rhythm-lab/statusсостояние
POST/api/rhythm-lab/launchзапуск или повторное использование Rhythm Lab
POST/api/rhythm-lab/stopостановка управляемого Rhythm Lab
POST/api/rhythm-lab/collectionsсохранение текущего сета как коллекции
POST/api/server/shutdownзапрос остановки сервера

Для остановки требуется заголовок X-DJ-Track-Similarity-Action: shutdown-server.

Документация локального инструмента анализа музыкальной библиотеки.