How can we help?
Find answers about your account, streaming setup, monetization and the Streamity API.
Getting Started
Create your profile, customize your channel and make your first stream a success.
How do I create my account?
Click Register in the top-right, choose a username (3–24 chars, a-z 0-9 _), email and password. You’ll receive a confirmation email — click the link to activate your account.
How do I edit my profile?
Click your avatar top-right → Settings. You can change your name, username, bio, avatar and banner. Changes persist automatically.
What is my profile completion %?
It’s the share of these 5 things set: username, display name, bio, avatar, confirmed email. Keep it at 100% to unlock premium features.
Streaming Setup
Connect OBS or ffmpeg to the Streamity ingest and go live in minutes.
Where do I find my stream key?
Dashboard → Stream settings → click Reveal on the Stream Key field. Keep it private — anyone with it can stream to your channel. Rotate any time.
What OBS settings should I use?
Service: Custom · Server: rtmp://rtmp.vpzone.tv:1935/live (Canada) or rtmp://eur.vpzone.tv:1935/live (Europe) · Stream Key: the value from Stream settings. Encoder x264, CBR, 4500–6000 kbps, keyframe interval 2s.
Which RTMP region should I pick?
Pick the one closest to you for lowest upload latency. Canada (rtmp.vpzone.tv) is default and best for North America. Europe (eur.vpzone.tv) is best for Europe, Middle East, Africa. Both accept the same stream key — you can switch any time.
How long until viewers see my stream?
Latency is about 1–2 seconds with LLHLS.
Can I stream from SRT?
Yes — OvenMediaEngine accepts SRT on port 9999. Use the same stream key as RTMP.
Monetization
Subscribers, tiers and payouts powered by Stripe.
How do subscriptions work?
Fans can subscribe for Tier 1 ($4.99), Tier 2 ($9.99) or Tier 3 ($24.99) per month. Stripe handles the payment and you get a cut after platform fees.
When do I get paid out?
Monthly, via Stripe Connect, once your balance exceeds the minimum threshold.
How do I cancel a subscription?
Settings → Billing → Manage subscription (opens the Stripe Customer Portal).
Developer API
REST API + webhooks to integrate Streamity into your app.
How do I authenticate?
Generate an API key in /developers. Send it as Authorization: Bearer sk_live_...
What endpoints are available?
GET /api/v1/channels/{slug}, GET /api/v1/users/{username}, POST /api/v1/webhooks, and more. See /api/docs for the full OpenAPI spec.
How do webhooks work?
Register an endpoint in /developers, we’ll POST signed events (HMAC-SHA256 in X-Streamity-Signature). Retries are exponential, 5 attempts max.
OAuth for third-party apps
Let users sign into your app with VPZONE — OAuth 2.1 with PKCE.
When should I use OAuth vs an API key?
Use an API key (sk_live_…) ONLY for scripts you run yourself. Use OAuth as soon as your app is multi-user — users log in with VPZONE and approve scopes, and you get a per-user access token instead of their personal key. Every sk_live_… key gives full access to one user's account; OAuth is scoped and revocable.
How do I register my OAuth app?
Go to /developers/oauth → New app. Fill name, description, logo, homepage, redirect URIs (exact match — register every URL your app redirects to), allowed scopes, and client type (confidential = server-side with secret; public = SPA/mobile). Confidential apps get a one-time client_secret — save it immediately, it's only shown once.
What's the authorization URL?
https://vpzone.tv/oauth/authorize?response_type=code&client_id=...&redirect_uri=...&scope=profile:read%20chat:read&state=<csrf>&code_challenge=<S256>&code_challenge_method=S256 PKCE S256 is REQUIRED for all clients (even confidential ones). Generate a 43-128 char random verifier, then code_challenge = base64url(sha256(verifier)).
How do I exchange the code for tokens?
POST https://vpzone.tv/api/oauth/token (form-urlencoded) with: grant_type=authorization_code, code=<from redirect>, redirect_uri=<same as request>, client_id=<yours>, client_secret=<if confidential>, code_verifier=<your PKCE verifier>. Response includes access_token (vpz_at_…), refresh_token (vpz_rt_…), expires_in=3600, and scope.
How do I refresh an access token?
POST /api/oauth/token with grant_type=refresh_token, refresh_token=<old vpz_rt_>, client_id, and client_secret if confidential. You get a new access + refresh token pair. IMPORTANT: refresh tokens rotate — always save the NEW refresh_token. If you reuse an old one, we revoke the entire grant (replay detection).
How do I call the VPZONE API with the access token?
Authorization: Bearer vpz_at_… — works on any /api/v1/* endpoint. The token carries the scopes the user approved; missing scope = 403 insufficient_scope. The same /api/v1/* also accepts sk_live_… personal keys, so existing integrations keep working.
How do users revoke my app's access?
At /settings/connected-apps. When they revoke, all active access + refresh tokens are revoked immediately (cascade). Your app will start getting 401 — handle it by re-initiating the auth flow (they'll see the consent screen again).
What scopes are available?
13 scopes: profile:read/write, chat:read/write/announcements/commands/moderate, dashboard:read, follows:read, notifications:read/write, achievements:read, oauth:manage. The consent screen shows the full list. Request only what your app actually needs — users are more likely to approve.
How is this secure?
PKCE S256 mandatory, exact-match redirect_uri (no open redirects), one-time auth codes, refresh token rotation with replay detection (cascade-revokes the whole chain on replay), tokens SHA-256 hashed in DB, CSRF-protected consent screen, CSP frame-ancestors 'none' (anti-clickjacking), uniform error responses, rate-limited at every endpoint.
Embeds (Video & Chat)
Drop a VPZONE player or chat panel into any website with a simple iframe.
How do I embed a live stream on my site?
Add this iframe, replacing {slug} with the channel handle: <iframe src="https://vpzone.tv/embed/video/{slug}" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen frameborder="0" width="640" height="360"></iframe> The player is responsive — it keeps a 16:9 aspect ratio inside the iframe. If the channel is offline, an “Off-stream” placeholder shows instead.
How do I embed the chat?
<iframe src="https://vpzone.tv/embed/chat/{slug}" frameborder="0" width="340" height="500"></iframe> Chat embeds are read-only in v1 — viewers see messages in real-time and get a “Open on VPZONE to chat” link. Sending messages from an iframe is on the roadmap.
Can I put the player and chat side-by-side?
Yes — they are two independent iframes. Put them in a flex container: the video on the left with flex:1 and the chat on the right at a fixed width (340px is a good default). Both resize with the container.
Is there a cost or rate limit?
Embeds are free and public — no API key needed for public channels. We throttle abusive clients at the edge, but normal traffic (even viral) is unrestricted.
Can I restrict which sites can embed my stream?
Not yet — for v1, anyone can embed. If you need a domain allowlist (frame-ancestors filter), reach out via support and we'll prioritize it.
Does the embedded player autoplay?
Yes, muted. Browsers block unmuted autoplay; the player starts muted and shows an “Unmute” button the viewer clicks once. Standard Twitch/YouTube behavior.
Still stuck?
Reach out to the Streamity team.