---
title: "Historique privé des 90 derniers jours"
method: GET
path: "/ai-music/history"
tags: ["ai-music"]
---

# Historique privé des 90 derniers jours

`GET /ai-music/history`

## Request

- Base URL: `https://jam-jam.org/api/v1`
- URL: `https://jam-jam.org/api/v1/ai-music/history`
- Auth: one of:
  - HTTP bearer
  - none

Compte gratuit ou Premium requis, portée queue:read. Fichier ou URL, dates, état et résultat ; aucun audio. Les résultats permettent de régénérer un rapport. Pages de 30 scans, les plus récents en premier.

## Query parameters

- `before` number

## Response `200`

Historique du compte

- object
  - `jobs` AiMusicJob[], required
    - `id` string, uuid, required
    - `state` 'uploading' | 'queued' | 'running' | 'cancelling' | 'done' | 'failed' | 'cancelled', required
    - `progress` number, required
    - `position` integer, nullable, required
    - `createdAt` number, required: Horodatage Unix en millisecondes
    - `result` AiMusicResult, required: Indice agrégé Analyse Jam Jam. Pas une probabilité ni une preuve d’origine.
      - `version` 'jamjam-audio-v1' | 'jamjam-audio-v2' | 'jamjam-audio-v3', required
      - `score` number, required
      - `verdict` 'signals-detected' | 'few-signals' | 'inconclusive', required
      - `agreement` integer, required
      - `analyses` 1 | 3, required
      - `durationSeconds` number, required
      - `analyzedSeconds` number, required
      - `detectors` object[]: Présent en v2. Les trois types couvrent le fichier entier sans trou ni chevauchement. Score normalisé 0–100, pas une probabilité calibrée. Chaque score est pondéré par la durée réelle de ses fenêtres, puis les trois scores sont moyennés à poids égal. v1 conserve son bilan partiel.
        - `kind` 'spectral' | 'spectrogram' | 'temporal', required
        - `score` number, required
        - `windows` object[], required
          - `startSeconds` number, required
          - `endSeconds` number, required
          - `score` number, required
      - `primary` object: Présent en v3. Les deux distributions sont des axes d’un même détecteur, pas deux votes indépendants.
        - `confidence` number, required
        - `classification` 'human' | 'processed-ai' | 'pure-ai', required
        - `audioSource` 'full' | 'preview' | 'provided', required: preview : seul un extrait a été analysé ; provided : audio fourni directement.
        - `spectral` object, required
          - `human` number, required
          - `processedAi` number, required
          - `pureAi` number, required
        - `temporal` object, required
          - `human` number, required
          - `processedAi` number, required
          - `pureAi` number, required
        - `stems` object
          - `vocal` number, nullable, required
          - `instrumental` number, nullable, required
    - `error` 'invalid-audio' | 'too-long' | 'failed' | 'interrupted' | 'link-unavailable' | 'null', nullable, required
    - `finishedAt` number, nullable
    - `expiresAt` number
    - `source` object
      - `type` 'file' | 'link', required
      - `label` string, required
  - `nextBefore` number, nullable, required

## Other responses

- `401`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `403`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `404`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `429`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `503`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).

---

[API](https://skmtc.dev/jam-jam/apis/jam-jam-convert-api.md) · [All operations](https://skmtc.dev/jam-jam/apis/jam-jam-convert-api/llms.txt) · [OpenAPI document](https://skmtc.dev/jam-jam/apis/jam-jam-convert-api/revisions/64cd41a46e4e?raw)
