# Téléchargement de Vidéos via API

## Aperçu

L’API AiKYNETIX permet aux utilisateurs réguliers et aux administrateurs de lancer des sessions de traitement vidéo. Que vous téléchargiez pour une analyse personnelle ou que vous agissiez au nom d’un autre utilisateur, l’API fournit des points de terminaison dédiés pour chaque type d’activité (Course, Saut et Haltérophilie). Une fois une vidéo téléchargée, le système crée une ressource de session qui déclenche le pipeline de traitement.

### Prérequis

Avant de télécharger une vidéo, assurez-vous d’avoir :

* **Identifiants API valides :**\
  Toutes les requêtes doivent inclure un jeton API-KEY valide dans l’en-tête `Authorization`. Par exemple :

```
API-KEY: <YOUR_API_TOKEN>
```

* **Permissions appropriées :**
  * **Utilisateurs réguliers :** Peuvent télécharger des vidéos directement pour créer leur propre session.
  * **Administrateurs/Sous-administrateurs :** Peuvent télécharger au nom d’un autre utilisateur. Dans ce cas, la requête doit inclure un paramètre supplémentaire `user_id`.
* **Format Multipart/Form-Data :**\
  Les téléchargements de vidéos sont effectués via une requête POST `multipart/form-data`. Votre requête doit inclure le fichier vidéo brut ainsi que tous les paramètres supplémentaires requis par le point de terminaison.

***

### Aperçu des points de terminaison de téléchargement

En fonction du type d’activité et du rôle de l’utilisateur, utilisez l’un des points de terminaison suivants :

<details>

<summary><a href="/pages/2wzpvH3vH0JNZCsY2Dxn">Sessions de course</a></summary>

* [**Téléchargement par un utilisateur régulier:**](/fr/api-documentation/developer-resources-and-api-reference/api-reference/running.md#running-sessions)\
  **Point de terminaison :** `POST /running/sessions/`\
  **Paramètres :**
  * **video (fichier, requis) :** Le fichier vidéo à traiter.
  * **session\_name (chaîne, facultatif) :** Un titre personnalisé pour la session.
  * **incline\_degree (chaîne/nombre, facultatif) :** Spécifie l’inclinaison du tapis roulant (si applicable).
* [**Téléchargement par un administrateur (au nom d’un autre utilisateur):**](/fr/api-documentation/developer-resources-and-api-reference/api-reference/running.md#running-management-sessions)\
  **Point de terminaison :** `POST /running/management/sessions/`\
  **Paramètres :**
  * **user\_id (chaîne, requis) :** L’ID de l’utilisateur pour qui cette session est créée.
  * **video (fichier, requis)**
  * **session\_name (chaîne, facultatif)**
  * **incline\_degree (chaîne/nombre, facultatif)**

</details>

<details>

<summary><a href="/pages/89b58YvWW21wLllnGu6U">Sessions de saut</a></summary>

* [**Téléchargement par un utilisateur régulier :**](/fr/api-documentation/developer-resources-and-api-reference/api-reference/jumping.md#jumping-sessions)\
  **Point de terminaison :** `POST /jumping/sessions/`\
  **Paramètres :**
  * **video (fichier, requis)**
  * **session\_name (chaîne, facultatif)**
  * **incline\_degree (chaîne/nombre, facultatif)**
* [**Téléchargement par un administrateur (au nom d’un autre utilisateur):**](/fr/api-documentation/developer-resources-and-api-reference/api-reference/jumping.md#jumping-management-sessions)\
  **Point de terminaison :** `POST /jumping/management/sessions/`\
  **Paramètres :**
  * **user\_id (chaîne, requis)**
  * **video (fichier, requis)**
  * **session\_name (chaîne, facultatif)**
  * **incline\_degree (chaîne/nombre, facultatif)**

</details>

<details>

<summary><a href="/pages/0ClrpcUd0W2Bk0glDtyh">Sessions d’haltérophilie</a></summary>

* [**Téléchargement par un utilisateur régulier:**](/fr/api-documentation/developer-resources-and-api-reference/api-reference/weightlifting.md#weightlifting-sessions)\
  **Point de terminaison :** `POST /weightlifting/sessions/`\
  **Paramètres :**
  * **video (fichier, requis)**
  * **exercise\_name (chaîne, requis) :** Doit être l’un des suivants : `snatch`, `clean`, ou `clean_and_jerk`.
  * **session\_name (chaîne, facultatif)**
  * **barbell\_mass (chaîne, facultatif) :** Masse de la barre. Si omis, une valeur par défaut de 100 kg (ou 220 lb) est attribuée.
* [**Téléchargement par un administrateur (au nom d’un autre utilisateur):**](/fr/api-documentation/developer-resources-and-api-reference/api-reference/weightlifting.md#weightlifting-management-sessions)\
  **Point de terminaison :** `POST /weightlifting/management/sessions/`\
  **Paramètres :**
  * **user\_id (chaîne, requis)**
  * **video (fichier, requis)**
  * **exercise\_name (chaîne, requis)**
  * **session\_name (chaîne, facultatif)**
  * **barbell\_mass (chaîne, facultatif)**

</details>

***

### Charge de la requête et exigences Multipart/Form-Data

Lors de la construction de votre requête de téléchargement, assurez-vous de :

* Définir l’en-tête **Content-Type** à `multipart/form-data`.
* Inclure le **fichier vidéo** en tant que champ binaire.
* Passer les paramètres supplémentaires en tant que champs de formulaire :
  * Pour les téléchargements initiés par un administrateur, incluez le champ `user_id`.
  * Pour les sessions d’haltérophilie, incluez `exercise_name` (et éventuellement `barbell_mass`).
  * En option, incluez un `session_name` descriptif pour aider à identifier votre session.

**Exemple de commande cURL (téléchargement administrateur pour une session de saut)**

```
curl -X POST \
     -H 'Content-Type: multipart/form-data' \
     -H 'API-KEY: <YOUR_ADMIN_TOKEN>' \
     -F 'user_id=someUserId123' \
     -F 'video=@/path/to/video.mp4' \
     -F 'session_name=Custom Jump Session' \
     -F 'incline_degree=5' \
     https://aikpy-nsz2.onrender.com/jumping/management/sessions/
```

***

### Séquence du flux de travail

1. **Authentification :**\
   Le client envoie la requête avec un jeton API-KEY valide. Pour les téléchargements administrateurs, le paramètre supplémentaire `user_id` est également fourni.
2. **Téléchargement du fichier et création de la session :**\
   Le fichier vidéo, ainsi que les données de formulaire supplémentaires, est transmis au serveur. L’API crée ensuite une nouvelle session de traitement pour la vidéo.
3. **Réponse du serveur :**\
   En cas de succès, l’API répond avec un objet JSON contenant :
   * **session\_id :** Un identifiant unique pour la nouvelle session.
   * **title :** Le titre de la session (spécifié par l’utilisateur ou une valeur par défaut).
4. **Étapes suivantes :**\
   L’`session_id` retourné peut être utilisé pour :
   * Vérifier l’état du traitement.
   * Récupérer la vidéo analysée.
   * Accéder aux métriques détaillées de la session et aux rapports d’analyse via des appels API ultérieurs.

***

### Gestion de la réponse

Une réponse de téléchargement réussie ressemblera au JSON suivant :

```
{
  "session_id": "abcd1234efgh5678",
  "title": "Custom Session"
}
```

{% hint style="info" %}
Si le téléchargement échoue en raison de champs manquants, d’un jeton invalide ou de permissions insuffisantes, la réponse contiendra un champ `error` avec un message approprié.
{% endhint %}

> **Note :** Pour plus de détails sur les paramètres, les formats de requête/réponse et la gestion des erreurs, veuillez consulter les sections respectives dans notre [Référence API](/fr/api-documentation/developer-resources-and-api-reference/api-reference.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.aikynetix.app/fr/api-documentation/video-upload-and-processing-workflow/uploading-videos-via-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
