> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apimart.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Consulter une tâche

> Consulter l'état d'exécution, la progression et les résultats générés des tâches asynchrones Flow Music

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url https://api.apimart.ai/v1/music/tasks/task_01K8AYYM6R03TGZ3Q2P0TZVNPX?language=en \
    --header 'Authorization: Bearer <token>'
  ```

  ```python Python theme={null}
  import requests

  task_id = "task_01K8AYYM6R03TGZ3Q2P0TZVNPX"
  url = f"https://api.apimart.ai/v1/music/tasks/{task_id}"

  headers = {
      "Authorization": "Bearer <token>"
  }

  params = {
      "language": "en"
  }

  response = requests.get(url, headers=headers, params=params)

  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const taskId = "task_01K8AYYM6R03TGZ3Q2P0TZVNPX";
  const url = `https://api.apimart.ai/v1/music/tasks/${taskId}?language=en`;

  const headers = {
    "Authorization": "Bearer <token>"
  };

  fetch(url, {
    method: "GET",
    headers: headers
  })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error("Error:", error));
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "code": 200,
    "data": {
      "id": "task_01K8AYYM6R03TGZ3Q2P0TZVNPX",
      "status": "completed",
      "progress": 100,
      "created": 1783413241,
      "completed": 1783413352,
      "actual_time": 111,
      "cost": 0.06,
      "credits_cost": 0.6,
      "result": {
        "music": [
          {
            "clip_id": "a41aade4-993e-4d28-b56f-d97e7ef7167c",
            "title": "My Song",
            "duration_seconds": "181.70666667",
            "audio_url": "https://cdn.apimart.ai/audio/flowmusic_a41aade4.m4a",
            "wav_url": "https://cdn.apimart.ai/audio/flowmusic_a41aade4.wav"
          }
        ]
      }
    }
  }
  ```

  ```json 404 theme={null}
  {
    "error": {
      "message": "task not found",
      "type": "invalid_request",
      "param": "task_id",
      "code": "task_not_found"
    }
  }
  ```

  ```json 429 theme={null}
  {
    "error": {
      "message": "La capacité du groupe actuel est saturée, veuillez réessayer plus tard",
      "type": "rate_limit_error",
      "param": "",
      "code": "rate_limit_error"
    }
  }
  ```
</ResponseExample>

## Authentification

<ParamField header="Authorization" type="string" required>
  Tous les endpoints Flow Music nécessitent une authentification par Bearer Token

  Obtenir votre clé API :

  Rendez-vous sur la [page de gestion des clés API](https://apimart.ai/keys) pour obtenir votre clé API

  Ajoutez-la à l'en-tête de la requête :

  ```
  Authorization: Bearer YOUR_API_KEY
  ```
</ParamField>

## Paramètres de chemin

<ParamField path="task_id" type="string" required>
  L'ID de tâche renvoyé après la soumission d'une tâche Flow Music

  <Note>
    L'ID de tâche provient de `data[0].task_id` dans la réponse de soumission.
  </Note>
</ParamField>

## Paramètres de requête

<ParamField query="language" type="string" default="zh">
  Langue des messages d'erreur et de certains textes d'information

  Valeurs possibles : `zh`, `en`, `ja`, `ko`
</ParamField>

## Champs de réponse

<ResponseField name="code" type="integer">
  Code de statut de la réponse, 200 en cas de succès
</ResponseField>

<ResponseField name="data" type="object">
  Détails de la tâche

  <Expandable title="Champs de la tâche">
    <ResponseField name="id" type="string">
      ID de la tâche
    </ResponseField>

    <ResponseField name="status" type="string">
      État de la tâche : `pending`, `processing`, `completed`, `failed`
    </ResponseField>

    <ResponseField name="progress" type="integer">
      Progression de la tâche, plage 0-100
    </ResponseField>

    <ResponseField name="cost" type="number">
      Montant réellement facturé ; généralement 0 en cas d'échec de la tâche
    </ResponseField>

    <ResponseField name="credits_cost" type="number">
      Credits réellement consommés
    </ResponseField>

    <ResponseField name="result" type="object">
      Résultats générés une fois la tâche terminée ; les champs renvoyés varient selon la fonctionnalité Flow Music
    </ResponseField>
  </Expandable>
</ResponseField>

## Structure du résultat

### Tâches musicales

La génération de musique, l'extension, le remplacement de segment, le réarrangement cover, la séparation des pistes, le téléversement d'audio, le téléchargement d'audio et le rendu vidéo renvoient généralement un tableau `result.music`.

```json theme={null}
{
  "result": {
    "music": [
      {
        "clip_id": "a41aade4-993e-4d28-b56f-d97e7ef7167c",
        "audio_url": "https://cdn.apimart.ai/audio/flowmusic_a41aade4.m4a",
        "wav_url": "https://cdn.apimart.ai/audio/flowmusic_a41aade4.wav",
        "video_url": "https://cdn.apimart.ai/video/flowmusic_a41aade4.mp4",
        "file_url": "https://cdn.apimart.ai/audio/flowmusic_a41aade4_stems.zip"
      }
    ]
  }
}
```

### Tâches de paroles

La génération de paroles renvoie un tableau `result.lyrics`.

```json theme={null}
{
  "result": {
    "lyrics": [
      {
        "title": "Bleached",
        "lyrics": "[Intro]\n(Check)\n(One two)\n..."
      }
    ]
  }
}
```

## Notes d'utilisation

<Note>
  Tous les endpoints de soumission Flow Music sont des tâches asynchrones. Après une soumission réussie, récupérez d'abord le `task_id`, puis appelez cet endpoint pour interroger l'état de la tâche ; lorsque `status` vaut `completed`, lisez les résultats générés dans `result`.
</Note>
