VOE API Reference
Functions
get_master_link()
from streamflow.platforms.voe import get_master_link
result = get_master_link(
filecode: str,
*,
site_base_url: str | None = None,
timeout: float = 30.0,
tcp_proxy: str | None = None,
udp_proxy: str | None = None,
local_address: str | None = None,
http_version: str | None = None,
) -> VoeMasterLink
Get the m3u8 master link for a VOE video by scraping and decrypting
the player page at {site_base_url}/e/{filecode}. No API key
required.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
filecode |
str | required | Video filecode (the XXXX in voe.sx/e/XXXX) |
site_base_url |
str | None → https://voe.sx |
Site URL (player host). Do not pass the API base URL here. |
timeout |
float | 30.0 |
Request timeout (seconds) |
tcp_proxy |
str | None |
HTTP CONNECT proxy URL |
udp_proxy |
str | None |
SOCKS5 / UDP proxy URL |
local_address |
str | None |
Local bind address |
http_version |
str | None |
Force "HTTP/1.1", "HTTP/2", or "HTTP/3" |
Returns: VoeMasterLink with streaming_url (m3u8) and optional
title.
Raises: VoeAPIError if the encrypted script isn't found,
decryption fails, or the decrypted config has no source field.
get_account_stats()
from streamflow.platforms.voe import get_account_stats
response = get_account_stats(
api_key: str,
*,
base_url: str | None = None,
timeout: float = 30.0,
tcp_proxy: str | None = None,
udp_proxy: str | None = None,
local_address: str | None = None,
) -> AccountStatsResponse
Get account statistics.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key |
str | required | API key |
base_url |
str | None | Override API URL |
timeout |
float | 30.0 | Request timeout |
tcp_proxy |
str | None | TCP proxy |
udp_proxy |
str | None | UDP proxy |
local_address |
str | None | Local address |
Returns: AccountStatsResponse
list_files()
from streamflow.platforms.voe import list_files
response = list_files(
api_key: str,
*,
page: int = 1,
per_page: int = 100,
fld_id: int = 0,
created: str | None = None,
name: str | None = None,
preview: bool | None = None,
base_url: str | None = None,
timeout: float = 30.0,
tcp_proxy: str | None = None,
udp_proxy: str | None = None,
local_address: str | None = None,
) -> FileListResponse
List files in account.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key |
str | required | API key |
page |
int | 1 | Page number |
per_page |
int | 100 | Items per page |
fld_id |
int | 0 | Folder ID |
created |
str | None | Filter by date |
name |
str | None | Filter by name |
preview |
bool | None | Include preview |
base_url |
str | None | Override API URL |
timeout |
float | 30.0 | Request timeout |
tcp_proxy |
str | None | TCP proxy |
udp_proxy |
str | None | UDP proxy |
local_address |
str | None | Local address |
Returns: FileListResponse
upload_from_url()
from streamflow.platforms.voe import upload_from_url
response = upload_from_url(
api_key: str,
url: str,
*,
folder_id: int | None = None,
base_url: str | None = None,
timeout: float = 120.0,
tcp_proxy: str | None = None,
udp_proxy: str | None = None,
local_address: str | None = None,
) -> UploadUrlResponse
Upload video from URL.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key |
str | required | API key |
url |
str | required | Video URL |
folder_id |
int | None | Folder ID |
base_url |
str | None | Override API URL |
timeout |
float | 120.0 | Request timeout |
tcp_proxy |
str | None | TCP proxy |
udp_proxy |
str | None | UDP proxy |
local_address |
str | None | Local address |
Returns: UploadUrlResponse
get_upload_server()
from streamflow.platforms.voe import get_upload_server
response = get_upload_server(
api_key: str,
*,
base_url: str | None = None,
timeout: float = 30.0,
tcp_proxy: str | None = None,
udp_proxy: str | None = None,
local_address: str | None = None,
) -> UploadServerResponse
Get upload server URL.
Returns: UploadServerResponse
delete_files()
from streamflow.platforms.voe import delete_files
response = delete_files(
api_key: str,
del_code: str,
*,
base_url: str | None = None,
timeout: float = 30.0,
tcp_proxy: str | None = None,
udp_proxy: str | None = None,
local_address: str | None = None,
) -> FileDeleteResponse
Delete files by delete code.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key |
str | required | API key |
del_code |
str | required | Delete code (comma-separated) |
base_url |
str | None | Override API URL |
timeout |
float | 30.0 | Request timeout |
tcp_proxy |
str | None | TCP proxy |
udp_proxy |
str | None | UDP proxy |
local_address |
str | None | Local address |
Returns: FileDeleteResponse
purge_all_files()
from streamflow.platforms.voe import purge_all_files
result = purge_all_files(
api_key: str,
*,
fld_id: int = 0,
per_page: int = 100,
batch_size: int = 50,
base_url: str | None = None,
timeout: float = 30.0,
tcp_proxy: str | None = None,
udp_proxy: str | None = None,
local_address: str | None = None,
) -> PurgeAllResult
Delete all files in account/folder.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key |
str | required | API key |
fld_id |
int | 0 | Folder ID (0 = all) |
per_page |
int | 100 | Items per page |
batch_size |
int | 50 | Delete batch size |
base_url |
str | None | Override API URL |
timeout |
float | 30.0 | Request timeout |
tcp_proxy |
str | None | TCP proxy |
udp_proxy |
str | None | UDP proxy |
local_address |
str | None | Local address |
Returns: PurgeAllResult
Client
VOEClient
from streamflow.platforms.voe import VOEClient
client = VOEClient(
api_key: str,
*,
base_url: str | None = None,
timeout: float = 30.0,
tcp_proxy: str | None = None,
udp_proxy: str | None = None,
local_address: str | None = None,
)
Constructor Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key |
str | required | VOE API key |
base_url |
str | None | Override API URL |
timeout |
float | 30.0 | Request timeout |
tcp_proxy |
str | None | TCP proxy URL |
udp_proxy |
str | None | UDP proxy URL |
local_address |
str | None | Local bind address |
Methods
account_stats()
list_files()
files = client.list_files(
*,
page: int = 1,
per_page: int = 100,
fld_id: int = 0,
) -> FileListResponse
upload()
upload_server()
delete_files()
purge_all()
Models
VoeMasterLink
@dataclass(frozen=True, slots=True)
class VoeMasterLink:
streaming_url: str # the m3u8 URL the player should load
title: str | None = None # video title from the decrypted config
AccountStatsResponse
@dataclass
class AccountStatsResponse:
storage_used: int
storage_limit: int
traffic_used: int
traffic_limit: int
files_count: int
FileListResponse
FileItem
@dataclass
class FileItem:
filecode: str
name: str
size: int
created: str
deleted: str | None
thumb: str | None
preview: str | None
folder: int
UploadUrlResponse
UploadServerResponse
@dataclass
class UploadServerResponse:
status: int
msg: str
result: UploadServerResult
@dataclass
class UploadServerResult:
upload_server: str
FileDeleteResponse
PurgeAllResult
@dataclass
class PurgeAllResult:
deleted: int
file_codes: tuple[str, ...]
errors: list[str] | None = None
VoeAPIError
class VoeAPIError(Exception):
def __init__(
self,
message: str,
*,
status: int | None = None,
body: str | None = None,
)
Constants
from streamflow.platforms.voe.constants import (
DEFAULT_API_BASE_URL, # "https://voe.sx/api"
DEFAULT_SITE_BASE_URL, # "https://voe.sx"
UPLOAD_URL_PATH, # "/upload/url"
UPLOAD_SERVER_PATH, # "/upload/server"
ACCOUNT_STATS_PATH, # "/account/stats"
FILE_LIST_PATH, # "/file/list"
FILE_DELETE_PATH, # "/file/delete"
FILE_PAGE_PATH, # "/e/{filecode}"
)
from streamflow.platforms.voe.constants import (
file_page_url, # file_page_url(filecode) -> "{site}/e/{filecode}"
api_url, # api_url(path) -> "{api_base}{path}"
resolve_base_url, # resolve_base_url(override) -> API base URL
resolve_site_base_url, # resolve_site_base_url(override) -> site URL
upload_url_endpoint, # https://voe.sx/api/upload/url
upload_server_endpoint,# https://voe.sx/api/upload/server
account_stats_endpoint,# https://voe.sx/api/account/stats
file_list_endpoint, # https://voe.sx/api/file/list
file_delete_endpoint, # https://voe.sx/api/file/delete
)
DEFAULT_API_BASE_URLalready includes the/apisegment. Endpoint functions concatenate the per-action path on top — e.g.account_stats_endpoint()resolves tohttps://voe.sx/api/account/stats.