Skip to main content

vconnct-devkit

PyPI version Python versions License: MIT

Official Python SDK for the VConnct v4 API. Build video and audio conferencing applications with ease.

Features

  • Full type hints support
  • Automatic HMAC SHA256 signature generation
  • Covers all VConnct v4 API endpoints:
    • Rooms - Create, manage, and control video/audio rooms
    • Recordings - Access room recordings
    • Analytics - Retrieve room analytics data
    • Branding - Customize project branding with logos

Installation

pip install vconnct-devkit

Quick Start

from vconnct_devkit import VConnctClient

# Initialize the client
client = VConnctClient(
    api_key="your-api-key",
    secret_key="your-secret-key",
)

# Create a video room
room = client.rooms.create_quick_video_room({
    "project_id": "your-project-id",
    "client_room_id": "unique-room-id",
    "name": "My Meeting Room",
    "max_participants": 10,
    "empty_timeout": 300,
    "metadata": {
        "room_title": "Team Meeting",
        "welcome_message": "Welcome to the meeting!",
    },
})

print(f"Room created: {room.room_id}")
print(f"Join URL: {room.final_link}")

Configuration

from vconnct_devkit import VConnctClient

client = VConnctClient(
    api_key="your-api-key",       # Required: Your API key
    secret_key="your-secret-key", # Required: Your secret key for HMAC signing
    base_url="https://v.cloudapi.vconnct.me/api/v4",  # Optional: API base URL
    timeout=30.0,                 # Optional: Request timeout in seconds (default: 30.0)
)

# Or use as a context manager
with VConnctClient(api_key="...", secret_key="...") as client:
    room = client.rooms.create_quick_video_room({...})

API Reference

Rooms

Create Quick Video Room

Create an instant video room for immediate use.

from vconnct_devkit import CreateQuickRoomParams, RoomMetadata

# Using dataclass
room = client.rooms.create_quick_video_room(
    CreateQuickRoomParams(
        project_id="project-uuid",
        client_room_id="unique-room-id",
        name="Room Name",
        moderator_id="moderator-user-id",
        max_participants=10,
        empty_timeout=300,
        metadata=RoomMetadata(
            room_title="Display Title",
            welcome_message="Welcome!",
        ),
    )
)

# Or using dict
room = client.rooms.create_quick_video_room({
    "project_id": "project-uuid",
    "client_room_id": "unique-room-id",
    "name": "Room Name",
})

Create Quick Audio Room

room = client.rooms.create_quick_audio_room({
    "project_id": "project-uuid",
    "client_room_id": "unique-room-id",
})

Create Scheduled Video Room

room = client.rooms.create_schedule_video_room({
    "project_id": "project-uuid",
    "client_room_id": "unique-room-id",
    "start_at": "2025-12-31T10:00",  # YYYY-MM-DDTHH:MM format
    "empty_timeout": 300,
})

Create Scheduled Audio Room

room = client.rooms.create_schedule_audio_room({
    "project_id": "project-uuid",
    "client_room_id": "unique-room-id",
    "start_at": "2025-12-31T10:00",
    "empty_timeout": 300,
})

Start Scheduled Room

room = client.rooms.start_scheduled_room({
    "room_id": "room-uuid",
    "name": "Updated Room Name",  # optional
})

Get Active Room Info

room_info = client.rooms.get_active_room_info("room-uuid")
print(room_info.room)

Get All Active Rooms

active_rooms = client.rooms.get_all_active_rooms()
for room in active_rooms.rooms:
    print(room.room_id)

Fetch Past Rooms

past_rooms = client.rooms.fetch_past_rooms({
    "project_id": "project-uuid",
    "room_ids": ["room-id-1", "room-id-2"],
    "limit": 10,
    "from_": 0,  # Note: use from_ to avoid Python keyword
    "order_by": "DESC",
})
invite = client.rooms.create_invitation_link({
    "room_id": "room-uuid",
    "user_id": "user-id",
    "role": "viewer",  # "admin" or "viewer"
})

print(f"Invite URL: {invite.invitation_link or invite.invitation_url}")

End Room

result = client.rooms.end_room("room-uuid")

Recordings

Get Recording

recording = client.recordings.get_recording("room-uuid")
print(recording.url)

Get Recording URLs

urls = client.recordings.get_recording_urls("room-uuid")
for url in urls:
    print(url)

Analytics

Get Analytics

analytics = client.analytics.get_analytics("room-uuid")
print(analytics)

Branding

Create Branding

# With file path
with open("logo.png", "rb") as f:
    logo_bytes = f.read()

branding = client.branding.create({
    "project_id": "project-uuid",
    "logo": logo_bytes,
    "dark_logo": dark_logo_bytes,      # optional
    "mobile_logo": mobile_logo_bytes,  # optional
    "fav_icon": favicon_bytes,         # optional
})

Update Branding

branding = client.branding.update({
    "project_id": "project-uuid",
    "logo": new_logo_bytes,
})

Error Handling

The SDK provides specific error classes for different error types:

from vconnct_devkit import (
    VConnctClient,
    VConnctError,
    AuthError,
    ValidationError,
    NotFoundError,
    RateLimitError,
)

try:
    room = client.rooms.get_active_room_info("invalid-room-id")
except AuthError as e:
    # Handle authentication errors (401)
    print(f"Authentication failed: {e.message}")
except ValidationError as e:
    # Handle validation errors (400)
    print(f"Validation error: {e.message}")
    if e.fields:
        print(f"Invalid fields: {e.fields}")
except NotFoundError as e:
    # Handle not found errors (404)
    print(f"Not found: {e.message}")
    print(f"Details: {e.details}")
except RateLimitError as e:
    # Handle rate limit errors (429)
    print(f"Rate limited. Retry after: {e.retry_after} seconds")
except VConnctError as e:
    # Handle other API errors
    print(f"API error: {e.message}")
    print(f"Status code: {e.status_code}")

Error Classes

Error Class Status Code Description
AuthError 401 Invalid API key or signature
ValidationError 400 Request validation failed
NotFoundError 404 Resource not found
RateLimitError 429 Rate limit exceeded
VConnctError * Base error class for all API errors

Type Hints

This SDK includes full type hints. All request parameters and response types are fully typed:

from vconnct_devkit import (
    VConnctConfig,
    CreateQuickRoomParams,
    CreateScheduleRoomParams,
    CreateRoomResponse,
    FetchPastRoomsParams,
    FetchPastRoomsResponse,
    InvitationLinkParams,
    InvitationLinkResponse,
    GetActiveRoomResponse,
    GetActiveRoomsResponse,
    BrandingParams,
    BrandingResponse,
)

Authentication

All API requests are authenticated using:

  • key header: Your API key
  • hash-signature header: HMAC SHA256 signature (Base64 encoded)

The SDK handles signature generation automatically:

  • GET requests: Signs the full URL path with query string
  • POST/PATCH requests: Signs the JSON request body
  • FormData requests: Signs the project_id

Requirements

  • Python 3.10+
  • httpx >= 0.25.0

License

MIT License

Release files for vconnct-devkit 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vconnct-devkit 1.0.1
File Size Uploaded
vconnct_devkit-1.0.1.tar.gz 16.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vconnct-devkit 1.0.1
File Interpreter ABI Platform
vconnct_devkit-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 38.2 kB

Release files / vconnct_devkit-1.0.1.tar.gz

Download URL vconnct_devkit-1.0.1.tar.gz
Size 16.7 kB
Tags Source
SHA-256 checksum
How to use checksums
3a7f0bcb67e750c607642550d6505ab2b54f4f1571ef9a3ca0e4204204cbaae1
BLAKE2b-256 checksum
How to use checksums
508707d90119c0a28b9c796d8806624eb2a0a53df84d9623a309cafd1f9b945e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / vconnct_devkit-1.0.1-py3-none-any.whl

Download URL vconnct_devkit-1.0.1-py3-none-any.whl
Size 21.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
79b5f98b3b1e72a62cb9f641d9d2bc81b37e1f69ee76187f7ef6b695193646ea
BLAKE2b-256 checksum
How to use checksums
0e76a1f7559bd99080107e306800ebc39f180ba510d7d19de58c89186e48474a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page