API v1 · Operational

Video infrastructure,
built for developers.

CPI NET API предоставляет единый интерфейс для загрузки, хранения, обработки и доставки видео. Создавайте video assets, загружайте большие файлы, получайте HLS playback и отслеживайте обработку через webhooks.

BASE URLhttps://api.cpinet.online/v1
Quick start
Каждый запрос к API требует Bearer API key. Ответы возвращаются в JSON. Для production используйте HTTPS и храните секретный ключ только на сервере.

Authentication

CPI NET использует Bearer authentication.

Authorization: Bearer cpi_live_xxxxxxxxxxxxxxxxx
Content-Type: application/json
HeaderRequiredDescription
AuthorizationYesСекретный API key проекта
Content-TypeJSONapplication/json
AcceptNoapplication/json

Videos

Create a video

POST/videos

Создаёт video asset и возвращает URL для resumable upload.

{
  "title": "Product launch",
  "description": "Official launch video",
  "visibility": "private",
  "transcode": {
    "profiles": ["1080p", "720p", "480p"],
    "formats": ["hls", "mp4"]
  }
}
201 Created
{
  "id": "vid_01K2CP7X9A",
  "status": "created",
  "upload": {
    "type": "resumable",
    "url": "https://api.cpinet.online/v1/uploads/up_01K2..."
  }
}

Get a video

GET/videos/{video_id}
{
  "id": "vid_01K2CP7X9A",
  "title": "Product launch",
  "status": "ready",
  "duration": 183.42,
  "size": 184239812,
  "visibility": "private",
  "playback": {
    "hls": "https://cdn.cpinet.online/v/vid_01K2.../master.m3u8",
    "dash": "https://cdn.cpinet.online/v/vid_01K2.../manifest.mpd"
  },
  "thumbnail": "https://cdn.cpinet.online/v/vid_01K2.../thumb.jpg"
}

List videos

GET/videos
GET /v1/videos?limit=20&cursor=eyJpZCI6...
ParameterDefaultDescription
limit20Количество объектов, максимум 100
cursorКурсор следующей страницы
statusallcreated, processing, ready, failed

Update a video

PATCH/videos/{video_id}
{
  "title": "Updated title",
  "description": "Updated description",
  "visibility": "public"
}

Delete a video

DELETE/videos/{video_id}

Удаляет video asset и связанные производные файлы.

Uploads

Create upload session

POST/uploads
{
  "video_id": "vid_01K2CP7X9A",
  "size": 184239812,
  "content_type": "video/mp4"
}

Upload chunk

PATCH/uploads/{upload_id}

Поддерживаются повторные отправки chunk при сетевых сбоях.

Content-Range: bytes 0-1048575/184239812
Content-Type: application/octet-stream

[binary data]

Complete upload

POST/uploads/{upload_id}/complete
{
  "status": "processing",
  "video_id": "vid_01K2CP7X9A"
}

Playback

Create playback token

POST/videos/{video_id}/playback-token

Создаёт временную ссылку для приватного видео.

{
  "expires_in": 3600,
  "quality": "auto"
}
200 OK
{
  "token": "cpi_vp_xxxxxxxxx",
  "expires_at": "2026-08-15T00:00:00Z",
  "urls": {
    "hls": "https://cdn.cpinet.online/p/eyJ..."
  }
}
Security
Не передавайте секретный API key в браузер. Для клиентского playback используйте короткоживущий playback token.

Webhooks

Create webhook

POST/webhooks
{
  "url": "https://your-app.example.com/webhooks/cpi",
  "events": [
    "video.ready",
    "video.failed",
    "upload.completed"
  ]
}

Event payload

{
  "id": "evt_01K2CP9Z2M",
  "type": "video.ready",
  "created_at": "2026-08-14T20:31:22Z",
  "data": {
    "video_id": "vid_01K2CP7X9A",
    "status": "ready"
  }
}
Signature verification
Проверяйте подпись webhook и обрабатывайте события идемпотентно. Для повторной доставки используйте event.id.

Errors

HTTPCodeMeaning
400invalid_requestНекорректные параметры запроса
401unauthorizedAPI key отсутствует или неверен
403forbiddenДоступ к ресурсу запрещён
404not_foundРесурс не найден
409conflictКонфликт состояния ресурса
413payload_too_largeПревышен размер загрузки
429rate_limitedПревышен rate limit
500internal_errorВнутренняя ошибка сервера
{
  "error": {
    "code": "invalid_request",
    "message": "Field 'title' is required",
    "request_id": "req_01K2..."
  }
}

Rate limits

OperationLimit
GET600 requests / minute
POST / PATCH120 requests / minute
Concurrent uploads20 / project

При превышении лимита API возвращает 429 и заголовок Retry-After.