Skip to content

StreamEmbed API Reference

Functions

from streamflow.platforms.streamembed import get_master_link

result = get_master_link(
    filecode: str,
    *,
    base_url: str | None = None,
    width: int = 2048,
    height: int = 1152,
    aes_key_hex: str | None = None,
    aes_iv_hex: 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,
) -> StreamembedMasterLink

Get m3u8 streaming URL from video filecode.

Parameters:

Parameter Type Default Description
filecode str required Video filecode/ID
base_url str None Override site base URL
width int 2048 Video width in pixels
height int 1152 Video height in pixels
aes_key_hex str None Custom AES key (hex)
aes_iv_hex str None Custom AES IV (hex)
timeout float 30.0 Request timeout (seconds)
tcp_proxy str None HTTP CONNECT proxy URL
udp_proxy str None SOCKS5 proxy URL
local_address str None Local IP to bind
http_version str None Force HTTP version

Returns: StreamembedMasterLink object.

Raises: StreamembedAPIError

advance_upload()

from streamflow.platforms.streamembed import advance_upload

response = advance_upload(
    api_key: str,
    url: str,
    *,
    name: str | 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,
    auth_header: str = "api-token",
) -> AdvanceUploadResponse

Create advance upload task.

Parameters:

Parameter Type Default Description
api_key str required API key
url str required Video URL
name str None Video name
base_url str None Override API base 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
auth_header str "api-token" HTTP header name to send the API key in. See Authentication.

Returns: AdvanceUploadResponse

get_upload_task()

from streamflow.platforms.streamembed import get_upload_task

response = get_upload_task(
    api_key: str,
    task_id: 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,
    auth_header: str = "api-token",
) -> AdvanceUploadDetailResponse

Get upload task status.

Parameters:

Parameter Type Default Description
api_key str required API key
task_id str required Task ID
base_url str None Override API base 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
auth_header str "api-token" HTTP header name to send the API key in. See Authentication.

Returns: AdvanceUploadDetailResponse

Authentication

All upload endpoints authenticate by sending the API key in an HTTP header. The default header name is api-token, which is what seekstreaming.com, streamp2p.com and player4me.com require:

api-token: YOUR_API_KEY

The header name is configurable via the auth_header parameter (available on advance_upload, get_upload_task, and StreamembedClient). The exported constant DEFAULT_AUTH_HEADER exposes the default value:

from streamflow.platforms.streamembed import DEFAULT_AUTH_HEADER
assert DEFAULT_AUTH_HEADER == "api-token"

To use a different scheme (e.g. legacy Bearer), pass auth_header and include any required prefix in the key itself:

advance_upload(
    api_key="Bearer YOUR_API_KEY",
    url="https://example.com/video.mp4",
    auth_header="Authorization",
)

Migration note: StreamFlow previously sent Authorization: Bearer ... by default, which produced 401 Invalid credentials against these providers. The default has been changed to api-token. No code change is required for the common case.

Client

StreamembedClient

from streamflow.platforms.streamembed import StreamembedClient

client = StreamembedClient(
    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 StreamEmbed API key
base_url str None Override API base 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

upload()
response = client.upload(
    url: str,
    *,
    name: str | None = None,
) -> AdvanceUploadResponse
get_task()
response = client.get_task(task_id: str) -> AdvanceUploadDetailResponse

Models

@dataclass
class StreamembedMasterLink:
    filecode: str
    title: str | None
    streaming_url: str
    thumbnail: str | None
    swarm_id: str | None = None
    torrent_trackers: list[str] | None = None
    ice_servers: list[dict] | None = None
    raw: dict | None = None

AdvanceUploadResponse

@dataclass
class AdvanceUploadResponse:
    id: str

AdvanceUploadDetailResponse

@dataclass
class AdvanceUploadDetailResponse:
    id: str
    name: str | None
    status: str
    videos: list[str]
    updated_at: str | None
    created_at: str | None

VideoInfo

@dataclass
class VideoInfo:
    video_id: str

StreamembedAPIError

@dataclass
class StreamembedAPIError(Exception):
    message: str
    status_code: int | None = None

Constants

from streamflow.platforms.streamembed import (
    DEFAULT_API_BASE_URL,  # "https://seekstreaming.com/api/v1"
    DEFAULT_SITE_URL,       # "https://seekstreaming.com"
    DEFAULT_AUTH_HEADER,    # "api-token"
    AES_KEY_HEX,            # AES encryption key hex
    AES_IV_HEX,             # AES IV hex
    DEFAULT_TIMEOUT,        # 30.0
    DEFAULT_VIDEO_WIDTH,    # 2048
    DEFAULT_VIDEO_HEIGHT,   # 1152
)

Endpoint Functions

from streamflow.platforms.streamembed.constants import (
    base_url(),                    # Get current API base URL
    site_url(),                    # Get current site URL
    api_url(endpoint),             # Build full API URL
    resolve_base_url(base_url),    # Resolve API base URL
    resolve_site_base_url(url),    # Resolve site base URL
    advance_upload_endpoint(),     # /api/v1/video/advance-upload
    advance_upload_detail_endpoint(task_id),  # /api/v1/video/advance-upload/{id}
    embed_url(filecode),           # Build embed URL
)