Введение

FrozeIsland API предоставляет разработчикам возможность интегрировать функции видеохостинга в свои приложения. Все запросы выполняются по протоколу HTTPS, данные передаются в формате JSON. API следует принципам REST и использует стандартные HTTP-методы.

💡
Для тестирования используйте базовый URL https://api.frozeisland.com/v1. Все запросы, кроме аутентификации, требуют заголовок Authorization: Bearer <token>.
POST /auth/token

Получение JWT-токена для доступа к защищённым эндпоинтам. Токен действителен 24 часа.

Параметры запроса
ПараметрТипОписание
api_key*stringКлюч API, выданный при регистрации приложения
api_secret*stringСекретный ключ API
Пример запроса
curl -X POST https://api.frozeisland.com/v1/auth/token \ -H "Content-Type: application/json" \ -d '{"api_key": "pk_abc123", "api_secret": "sk_def456"}'
const response = await fetch('https://api.frozeisland.com/v1/auth/token', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ api_key: 'pk_abc123', api_secret: 'sk_def456' }) }); const data = await response.json();
import requests response = requests.post( 'https://api.frozeisland.com/v1/auth/token', json={'api_key': 'pk_abc123', 'api_secret': 'sk_def456'} ) data = response.json()
Пример ответа (200 OK)
{ "access_token": "eyJhbGciOiJIUzI1NiIs...", "token_type": "bearer", "expires_in": 86400 }
GET /videos

Возвращает список видео с пагинацией. Можно фильтровать по каналу и сортировать.

Параметры запроса
ПараметрТипОписание
pageintegerНомер страницы (по умолчанию 1)
per_pageintegerКоличество элементов на странице (макс. 50)
channel_idstringФильтр по ID канала
sortstringПоле сортировки: created_at, views, title
orderstringНаправление: asc или desc
Пример запроса
curl -X GET "https://api.frozeisland.com/v1/videos?page=1&per_page=10&sort=views&order=desc" \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
const response = await fetch( 'https://api.frozeisland.com/v1/videos?page=1&per_page=10', { headers: { 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIs...' } } ); const data = await response.json();
import requests headers = {'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIs...'} response = requests.get( 'https://api.frozeisland.com/v1/videos', params={'page': 1, 'per_page': 10}, headers=headers ) data = response.json()
Пример ответа (200 OK)
{ "data": [ { "id": "vid_9f2a81", "title": "Как работает квантовый компьютер", "description": "Обучающее видео...", "duration": 745, "views": 125400, "created_at": "2026-08-15T10:30:00Z", "thumbnail_url": "https://cdn.frozeisland.com/thumbnails/vid_9f2a81.jpg", "channel_id": "ch_3b7c21" } ], "pagination": { "page": 1, "per_page": 10, "total": 248, "total_pages": 25 } }
POST /videos

Загрузка нового видео. Поддерживаются форматы MP4, WebM, MOV. Максимальный размер — 2 ГБ.

Параметры запроса
ПараметрТипОписание
title*stringНазвание видео (до 200 символов)
descriptionstringОписание видео (до 5000 символов)
channel_id*stringID канала, в который загружается видео
file*fileФайл видео (multipart/form-data)
thumbnailfileПользовательская обложка (JPEG/PNG)
is_publicbooleanПубличный доступ (по умолчанию true)
Пример запроса
curl -X POST https://api.frozeisland.com/v1/videos \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \ -F "title=Мой новый ролик" \ -F "description=Описание ролика" \ -F "channel_id=ch_3b7c21" \ -F "file=@/path/to/video.mp4"
const formData = new FormData(); formData.append('title', 'Мой новый ролик'); formData.append('channel_id', 'ch_3b7c21'); formData.append('file', fileInput.files[0]); const response = await fetch('https://api.frozeisland.com/v1/videos', { method: 'POST', headers: { 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIs...' }, body: formData });
import requests files = {'file': open('video.mp4', 'rb')} data = { 'title': 'Мой новый ролик', 'channel_id': 'ch_3b7c21' } headers = {'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIs...'} response = requests.post( 'https://api.frozeisland.com/v1/videos', files=files, data=data, headers=headers )
Пример ответа (201 Created)
{ "id": "vid_7d3e19", "title": "Мой новый ролик", "status": "processing", "upload_url": "https://cdn.frozeisland.com/upload/vid_7d3e19" }
GET /videos/{id}

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

Параметры пути
ПараметрТипОписание
id*stringИдентификатор видео (например, vid_9f2a81)
Пример ответа (200 OK)
{ "id": "vid_9f2a81", "title": "Как работает квантовый компьютер", "description": "Подробное объяснение...", "duration": 745, "views": 125400, "likes": 8900, "created_at": "2026-08-15T10:30:00Z", "updated_at": "2026-08-20T14:12:00Z", "channel": { "id": "ch_3b7c21", "name": "Наука и Технологии" }, "video_url": "https://cdn.frozeisland.com/videos/vid_9f2a81/master.m3u8", "thumbnail_url": "https://cdn.frozeisland.com/thumbnails/vid_9f2a81.jpg" }
PUT /videos/{id}

Обновление метаданных видео. Можно изменять название, описание, обложку и настройки доступа.

Параметры запроса
ПараметрТипОписание
titlestringНовое название видео
descriptionstringНовое описание
thumbnailfileНовая обложка
is_publicbooleanИзменить видимость
DELETE /videos/{id}

Удаление видео. Операция необратима. Видео также удаляется с CDN.

Пример ответа (204 No Content)
HTTP/1.1 204 No Content
GET /channels

Возвращает список каналов текущего пользователя.

Пример ответа (200 OK)
{ "data": [ { "id": "ch_3b7c21", "name": "Наука и Технологии", "subscribers": 45200, "video_count": 87 }, { "id": "ch_8d4e90", "name": "Программирование", "subscribers": 32100, "video_count": 154 } ] }
GET /comments

Получение комментариев к видео с пагинацией.

Параметры запроса
ПараметрТипОписание
video_id*stringID видео
pageintegerНомер страницы
per_pageintegerЭлементов на странице
POST /comments

Добавление комментария к видео.

Параметры запроса
ПараметрТипОписание
video_id*stringID видео
text*stringТекст комментария (до 1000 символов)
parent_idstringID родительского комментария для ответа

FrozeIsland API v1.0.0 · Документация обновлена 22 августа 2026 г.

Поддержка: support@frozeisland.com