# Управление задачами

{% stepper %}
{% step %}

### Создание новой задачи

**POST** `/jobs/`

Создает новую задачу обработки видео/аудио файла.

#### Параметры запроса

Параметры передаются через JSON body:

```json
{
    "actions": ["transcript", "summary", "quiz", "timecodes", "frames", "search"],
    "file_link": "https://example.com/video.mp4",
    "speakers_count": 2,
    "webhook_url": "https://your-site.com/webhook"
}
```

#### Обязательные параметры

* `file_link` - URL медиа файла для обработки
* `actions` - Список действий для выполнения

#### Опциональные параметры

* `speakers_count` - Количество спикеров (по умолчанию: 1, для автоопределения количества спикеров используйте 0)
* `webhook_url` - URL для получения уведомлений о статусе

#### Пример запроса

```bash
curl -X POST "https://your-domain.com/jobs/" \
  -H "x-api-key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "actions": ["transcript", "summary"],
    "file_link": "https://example.com/video.mp4",
    "speakers_count": 1,
    "webhook_url": "https://your-site.com/webhook"
  }'
```

#### Ответ

```json
{
    "job_id": "123e4567-e89b-12d3-a456-426614174000",
    "video_name": "video.mp4",
    "video_path": "/path/to/video.mp4",
    "job_state": "in_progress",
    "requested_actions": ["transcript", "summary"],
    "speakers_count": 1,
    "webhook_url": "https://your-site.com/webhook",
    "vendor_key": "vendor-uuid",
    "created": "2025-09-08T10:00:00.000Z",
    "modified": "2025-09-08T10:00:00.000Z"
}
```

{% endstep %}

{% step %}

### Получение списка задач

**GET** `/jobs/`

Получает список всех задач текущего пользователя.

#### Параметры запроса

* `job_state` (опционально) - Фильтр по статусу задачи (`queued`, `in_progress`, `done`, `failed`)

#### Пример запроса

```bash
curl -X GET "https://your-domain.com/jobs/?job_state=done" \
  -H "x-api-key: your-api-key"
```

#### Ответ

```json
[
    {
        "job_id": "123e4567-e89b-12d3-a456-426614174000",
        "video_name": "video.mp4",
        "job_state": "done",
        "requested_actions": ["transcript", "summary"],
        "created": "2025-09-08T10:00:00.000Z",
        "modified": "2025-09-08T10:30:00.000Z"
    }
]
```

{% endstep %}

{% step %}

### Получение информации о задаче

**GET** `/jobs/{job_id}/`

Получает подробную информацию о конкретной задаче.

#### Параметры пути

* `job_id` - UUID задачи

#### Пример запроса

```bash
curl -X GET "https://your-domain.com/jobs/123e4567-e89b-12d3-a456-426614174000/" \
  -H "x-api-key: your-api-key"
```

#### Ответ

```json
{
    "job_id": "123e4567-e89b-12d3-a456-426614174000",
    "video_name": "video.mp4",
    "video_path": "/app/media/content/vendor-uuid/job-uuid/job-uuid.mp4",
    "job_state": "done",
    "requested_actions": ["transcript", "summary", "quiz", "timecodes", "frames", "search"],
    "speakers_count": 0,
    "vendor_key": "vendor-uuid-here",
    "webhook_url": "https://your-site.com/webhook",
    "request_id": "external-request-uuid",
    "product_statuses": {
        "transcript": "done",
        "summary": "done", 
        "quiz": "done",
        "timecodes": "done"
    },
    "created": "2025-09-08T10:00:00.000Z",
    "modified": "2025-09-08T10:30:00.000Z"
}
```

#### Описание полей ответа

* `job_id` - Уникальный UUID задачи
* `video_name` - Оригинальное имя файла
* `video_path` - Путь к сохраненному файлу на сервере
* `job_state` - Текущий статус задачи (`queued`, `in_progress`, `done`, `failed`)
* `requested_actions` - Список запрошенных действий обработки
* `speakers_count` - Количество спикеров (0 для автоопределения)
* `vendor_key` - UUID пользователя/клиента
* `webhook_url` - URL для webhook уведомлений
* `request_id` - UUID запроса во внешней системе обработки (появляется после начала обработки)
* `product_statuses` - Статусы отдельных продуктов обработки
* `created` - Дата и время создания задачи
* `modified` - Дата и время последнего изменения
  {% endstep %}

{% step %}

### Получение транскрипта

**GET** `/jobs/{job_id}/transcript/`

Получает расшифровку текста для указанной задачи.

#### Параметры пути

* `job_id` - UUID задачи

#### Параметры запроса

* `format` (опционально) - Формат экспорта: `txt`, `docx`

#### Пример запроса (JSON)

```bash
curl -X GET "https://your-domain.com/jobs/123e4567-e89b-12d3-a456-426614174000/transcript/" \
  -H "x-api-key: your-api-key"
```

#### Ответ (JSON)

```json
{
    "external_id": "transcript-uuid",
    "cues": [
        {
            "start_time": 0.0,
            "end_time": 5.5,
            "text": "Привет, добро пожаловать на наш канал",
            "speaker": "Спикер 1"
        }
    ],
    "full_text": "Привет, добро пожаловать на наш канал. Сегодня мы расскажем...",
    "job_id": "123e4567-e89b-12d3-a456-426614174000"
}
```

{% endstep %}

{% step %}

### Получение временных меток

**GET** `/jobs/{job_id}/timecodes/`

Получает временные метки для указанной задачи.

#### Параметры пути

* `job_id` - UUID задачи

#### Параметры запроса

* `format` (опционально) - Формат экспорта: `txt`, `docx`

#### Пример запроса

```bash
curl -X GET "https://your-domain.com/jobs/123e4567-e89b-12d3-a456-426614174000/timecodes/" \
  -H "x-api-key: your-api-key"
```

#### Ответ

```json
{
    "external_id": "timecodes-uuid",
    "timecodes": [
        {
            "start_time": 0.0,
            "end_time": 30.0,
            "title": "Введение",
            "description": "Приветствие и обзор темы"
        },
        {
            "start_time": 30.0,
            "end_time": 120.0,
            "title": "Основная часть",
            "description": "Подробное объяснение темы"
        }
    ],
    "job_id": "123e4567-e89b-12d3-a456-426614174000"
}
```

{% endstep %}

{% step %}

### Получение краткого изложения

**GET** `/jobs/{job_id}/summary/`

Получает краткое изложение содержимого.

#### Параметры пути

* `job_id` - UUID задачи

#### Параметры запроса

* `format` (опционально) - Формат экспорта: `txt`, `docx`

#### Пример запроса

```bash
curl -X GET "https://your-domain.com/jobs/123e4567-e89b-12d3-a456-426614174000/summary/" \
  -H "x-api-key: your-api-key"
```

#### Ответ

```json
{
    "external_id": "summary-uuid",
    "html": "<h1>Краткое изложение</h1><p>В данном видео рассматриваются...</p>",
    "job_id": "123e4567-e89b-12d3-a456-426614174000"
}
```

{% endstep %}

{% step %}

### Получение квиза

**GET** `/jobs/{job_id}/quiz/`

Получает тест/квиз по содержимому.

#### Параметры пути

* `job_id` - UUID задачи

#### Параметры запроса

* `format` (опционально) - Формат экспорта: `txt`, `docx`

#### Пример запроса

```bash
curl -X GET "https://your-domain.com/jobs/123e4567-e89b-12d3-a456-426614174000/quiz/" \
  -H "x-api-key: your-api-key"
```

#### Ответ

```json
{
    "external_id": "quiz-uuid",
    "data": [
        {
            "question": "О чем рассказывается в видео?",
            "options": [
                "О программировании",
                "О кулинарии", 
                "О путешествиях"
            ],
            "correct_answer": 0,
            "explanation": "В видео рассматриваются основы программирования"
        }
    ],
    "job_id": "123e4567-e89b-12d3-a456-426614174000"
}
```

{% endstep %}

{% step %}

### Получение кадров

**GET** `/jobs/{job_id}/frames/`

Получает извлеченные кадры из видео.

#### Параметры пути

* `job_id` - UUID задачи

#### Пример запроса

```bash
curl -X GET "https://your-domain.com/jobs/123e4567-e89b-12d3-a456-426614174000/frames/" \
  -H "x-api-key: your-api-key"
```

#### Ответ

```json
{
    "frames_id": "frames-uuid",
    "frameset": [
        {
            "time": 10.5,
            "frame_url": "https://your-domain.com/frames/frame_001.jpg"
        },
        {
            "time": 30.0,
            "frame_url": "https://your-domain.com/frames/frame_002.jpg"
        }
    ],
    "job_id": "123e4567-e89b-12d3-a456-426614174000"
}
```

{% endstep %}

{% step %}

### Перезаказ материалов

**POST** `/jobs/reorder/`

Перезапускает обработку существующей задачи с новыми действиями. Позволяет дозаказать дополнительные материалы (продукты) для уже обработанного файла без повторной загрузки.

#### Параметры запроса

Параметры передаются через JSON body:

```json
{
    "job_id": "123e4567-e89b-12d3-a456-426614174000",
    "actions": ["quiz", "frames"]
}
```

#### Обязательные параметры

* `job_id` - UUID существующей задачи
* `actions` - Список новых действий для обработки

#### Доступные действия

* `transcript` - Расшифровка текста
* `summary` - Краткое изложение
* `quiz` - Тест/квиз
* `timecodes` - Временные метки
* `frames` - Извлечение кадров
* `search` - Поиск по содержимому

#### Пример запроса

```bash
curl -X POST "https://your-domain.com/jobs/reorder/" \
  -H "x-api-key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "job_id": "123e4567-e89b-12d3-a456-426614174000",
    "actions": ["quiz", "frames"]
  }'
```

#### Ответ

```json
{
    "job_id": "123e4567-e89b-12d3-a456-426614174000",
    "video_name": "video.mp4",
    "video_path": "/path/to/video.mp4",
    "job_state": "in_progress",
    "requested_actions": ["transcript", "summary", "quiz", "frames"],
    "speakers_count": 1,
    "webhook_url": "https://your-site.com/webhook",
    "vendor_key": "vendor-uuid",
    "created": "2025-09-08T10:00:00.000Z",
    "modified": "2025-09-08T10:15:00.000Z"
}
```

#### Примечания

* Задача должна иметь `request_id` для возможности перезаказа
* Новые действия добавляются к списку `requested_actions`
* Если действие уже было запрошено ранее, оно будет переобработано
* Файл не загружается повторно, используется уже сохраненная версия
* Webhook уведомления отправляются по завершении дополнительной обработки

#### Ошибки

* `400 Bad Request` - Задача не найдена или у задачи отсутствует `request_id`
* `401 Unauthorized` - Неверный API ключ
* `404 Not Found` - Задача не принадлежит данному пользователю
  {% endstep %}

{% step %}

### Получение всех продуктов

**GET** `/jobs/{job_id}/products/`

Получает все доступные продукты (результаты обработки) для задачи.

#### Параметры пути

* `job_id` - UUID задачи

#### Пример запроса

```bash
curl -X GET "https://your-domain.com/jobs/123e4567-e89b-12d3-a456-426614174000/products/" \
  -H "x-api-key: your-api-key"
```

#### Ответ

```json
{
    "job_id": "123e4567-e89b-12d3-a456-426614174000",
    "transcript": {
        "status": "done",
        "external_id": "transcript-uuid",
        "cues": [
            {
                "start_time": 0.0,
                "end_time": 5.5,
                "text": "Привет, добро пожаловать на наш канал",
                "speaker": "Спикер 1"
            }
        ],
        "full_text": "Привет, добро пожаловать на наш канал. Сегодня мы расскажем..."
    },
    "timecodes": {
        "status": "done", 
        "external_id": "timecodes-uuid",
        "timecodes": [
            {
                "start_time": 0.0,
                "end_time": 30.0,
                "title": "Введение",
                "description": "Приветствие и обзор темы"
            }
        ]
    },
    "summary": {
        "status": "done",
        "external_id": "summary-uuid",
        "html": "<h1>Краткое изложение</h1><p>В данном видео рассматриваются...</p>"
    },
    "quiz": {
        "status": "done",
        "external_id": "quiz-uuid",
        "data": [
            {
                "question": "О чем рассказывается в видео?",
                "options": [
                    "О программировании",
                    "О кулинарии", 
                    "О путешествиях"
                ],
                "correct_answer": 0,
                "explanation": "В видео рассматриваются основы программирования"
            }
        ]
    }
}
```

{% endstep %}
{% endstepper %}


---

# 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://visaver.gitbook.io/visaver-api/dokumentaciya/upravlenie-zadachami.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.
