# Загрузка видео через API

### Обзор

API AiKYNETIX позволяет как обычным пользователям, так и администраторам инициировать сеансы обработки видео. Независимо от того, загружаете ли вы видео для личного анализа или действуете от имени другого пользователя, API предоставляет специальные конечные точки для каждого типа активности (Бег, Прыжки и Тяжелая атлетика). После загрузки видео система создает ресурс сеанса, который запускает конвейер обработки.

### Предварительные требования

Перед загрузкой видео убедитесь, что у вас есть:

* **Действительные учетные данные API:**\
  Все запросы должны включать действительный токен в заголовке `API-KEY`. Например:

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

* **Соответствующие разрешения:**
  * **Обычные пользователи:** Могут загружать видео напрямую для создания собственных сеансов.
  * **Администраторы/Субадминистраторы:** Могут загружать видео от имени другого пользователя. В таких случаях запрос должен включать дополнительный параметр `user_id`.
* **Формат Multipart/Form-Data:**\
  Загрузка видео выполняется с использованием POST-запроса `multipart/form-data`. Ваш запрос должен включать необработанный видеофайл вместе с любыми дополнительными параметрами, требуемыми конечной точкой.

***

### Обзор конечных точек загрузки

В зависимости от типа активности и роли пользователя используйте одну из следующих конечных точек:

<details>

<summary><a href="/pages/2wzpvH3vH0JNZCsY2Dxn">Сеансы бега</a></summary>

* [**Загрузка обычным пользователем:**](/ru/api-documentation/developer-resources-and-api-reference/api-reference/running.md#running-sessions)\
  **Конечная точка:** `POST /running/sessions/`\
  **Параметры:**
  * **video (файл, обязательно):** Видеофайл для обработки.
  * **session\_name (строка, необязательно):** Пользовательское название сеанса.
  * **incline\_degree (строка/число, необязательно):** Указывает угол наклона беговой дорожки (если применимо).
* [**Загрузка администратором (от имени другого пользователя):**](/ru/api-documentation/developer-resources-and-api-reference/api-reference/running.md#running-management-sessions)\
  **Конечная точка:** `POST /running/management/sessions/`\
  **Параметры:**
  * **user\_id (строка, обязательно):** ID пользователя, для которого создается этот сеанс.
  * **video (файл, обязательно)**
  * **session\_name (строка, необязательно)**
  * **incline\_degree (строка/число, необязательно)**

</details>

<details>

<summary><a href="/pages/89b58YvWW21wLllnGu6U">Сеансы прыжков</a></summary>

* [**Загрузка обычным пользователем:**](/ru/api-documentation/developer-resources-and-api-reference/api-reference/jumping.md#jumping-sessions)\
  **Конечная точка:** `POST /jumping/sessions/`\
  **Параметры:**
  * **video (файл, обязательно)**
  * **session\_name (строка, необязательно)**
  * **incline\_degree (строка/число, необязательно)**
* [**Загрузка администратором (от имени другого пользователя):**](/ru/api-documentation/developer-resources-and-api-reference/api-reference/jumping.md#jumping-management-sessions)\
  **Конечная точка:** `POST /jumping/management/sessions/`\
  **Параметры:**
  * **user\_id (строка, обязательно)**
  * **video (файл, обязательно)**
  * **session\_name (строка, необязательно)**
  * **incline\_degree (строка/число, необязательно)**

</details>

<details>

<summary><a href="/pages/0ClrpcUd0W2Bk0glDtyh">Сеансы тяжелой атлетики</a></summary>

* [**Загрузка обычным пользователем:**](/ru/api-documentation/developer-resources-and-api-reference/api-reference/weightlifting.md#weightlifting-sessions)\
  **Конечная точка:** `POST /weightlifting/sessions/`\
  **Параметры:**
  * **video (файл, обязательно)**
  * **exercise\_name (строка, обязательно):** Должно быть одним из: `snatch`, `clean` или `clean_and_jerk`.
  * **session\_name (строка, необязательно)**
  * **barbell\_mass (строка, необязательно):** Масса штанги. Если не указано, присваивается значение по умолчанию 100 кг (или 220 фунтов).
* [**Загрузка администратором (от имени другого пользователя):**](/ru/api-documentation/developer-resources-and-api-reference/api-reference/weightlifting.md#weightlifting-management-sessions)\
  **Конечная точка:** `POST /weightlifting/management/sessions/`\
  **Параметры:**
  * **user\_id (строка, обязательно)**
  * **video (файл, обязательно)**
  * **exercise\_name (строка, обязательно)**
  * **session\_name (строка, необязательно)**
  * **barbell\_mass (строка, необязательно)**

</details>

***

### Требования к телу запроса и Multipart/Form-Data

При составлении запроса на загрузку убедитесь, что вы:

* Установили заголовок **Content-Type** на `multipart/form-data`.
* Включили **видеофайл** как бинарное поле.
* Передали дополнительные параметры как поля формы:
  * Для загрузок, инициированных администратором, включите поле `user_id`.
  * Для сеансов тяжелой атлетики укажите `exercise_name` (и, при желании, `barbell_mass`).
  * По желанию, добавьте описательное `session_name` для идентификации сеанса.

**Пример команды cURL (загрузка администратором для сеанса прыжков)**

```
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/
```

***

### Последовательность рабочего процесса

1. **Аутентификация:**\
   Клиент отправляет запрос с действительным токеном API-KEY. Для загрузок администратором также предоставляется `user_id`.
2. **Загрузка файла и создание сеанса:**\
   Видеофайл вместе с дополнительными данными формы передается на сервер. Затем API создает новый сеанс обработки для видео.
3. **Ответ сервера:**\
   При успешном выполнении API возвращает JSON-объект, содержащий:
   * **session\_id:** Уникальный идентификатор нового сеанса.
   * **title:** Название сеанса (указанное пользователем или запасное).
4. **Следующие шаги:**\
   Возвращенный `session_id` можно использовать для:
   * Опроса статуса обработки.
   * Получения обработанного видео.
   * Доступа к подробным метрикам сеанса и отчетам анализа через последующие API-вызовы.

***

### Обработка ответа

Успешный ответ на загрузку будет выглядеть следующим образом в формате JSON:

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

{% hint style="info" %}
Если загрузка не удалась из-за отсутствия полей, недействительного токена или недостаточных разрешений, ответ будет содержать поле `error` с соответствующим сообщением
{% endhint %}

> **Примечание:** Для получения подробной информации о параметрах, форматах запросов/ответов и обработке ошибок, пожалуйста, обратитесь к соответствующим разделам в нашем [Справочнике API](/ru/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/ru/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.
