Official Python SDK for VConnct v4 API - Rooms, Recordings, Analytics, and Branding
Project description
vconnct-devkit
Official Python SDK for the VConnct v4 API. Build video and audio conferencing applications with ease.
- Website: https://vconnct.me/
- Documentation: https://guide.vconnct.com/
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",
})
Create Invitation Link
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:
keyheader: Your API keyhash-signatureheader: 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
Links
- Website: https://vconnct.me/
- Documentation: https://guide.vconnct.com/
- Support: developer@vconnct.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vconnct_devkit-1.0.1.tar.gz.
File metadata
- Download URL: vconnct_devkit-1.0.1.tar.gz
- Upload date:
- Size: 16.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a7f0bcb67e750c607642550d6505ab2b54f4f1571ef9a3ca0e4204204cbaae1
|
|
| MD5 |
9e3a1ed80cd32eb45370a2957347f341
|
|
| BLAKE2b-256 |
508707d90119c0a28b9c796d8806624eb2a0a53df84d9623a309cafd1f9b945e
|
File details
Details for the file vconnct_devkit-1.0.1-py3-none-any.whl.
File metadata
- Download URL: vconnct_devkit-1.0.1-py3-none-any.whl
- Upload date:
- Size: 21.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79b5f98b3b1e72a62cb9f641d9d2bc81b37e1f69ee76187f7ef6b695193646ea
|
|
| MD5 |
df365533173862948826c96f3fe078c8
|
|
| BLAKE2b-256 |
0e76a1f7559bd99080107e306800ebc39f180ba510d7d19de58c89186e48474a
|