Skip to main content

APOB Live

Learn how to find, watch, create, control, share, and reopen APOB Live streams on desktop and mobile.

L
Written by LX

APOB Live is available on desktop and mobile. The desktop sidebar and mobile bottom navigation show Live when the feature is enabled. Completed image and video details offer Go live in the preview; desktop also offers it from More actions. The /live catalog is crawlable and published in the sitemap; individual room URLs are not advertised there because the same route shape can represent public and private rooms.

The floating Intercom support launcher is hidden on the Live catalog and all streaming-detail pages, including ended replays, on desktop and mobile. Leaving Live restores its normal visibility on other pages.

Where can I find live streams?

Select Live in the desktop sidebar. The APOB Live page lists AI live streams in a virtualized feed. Use All to browse the public catalog or Mine to see your own public and private rooms; Mine requires sign-in. Select a card to enter a live room. Cards and the featured banner show the room owner's backend-provided avatar, alias, and @username. The featured banner plays its room directly with muted autoplay and no player controls while that room is live; selecting anywhere on the banner media opens that room instead of pausing playback. Its Create your own live and Watch LIVE actions keep their dedicated behavior. An ended featured room remains a static replay cover and likewise opens when its banner is selected. If an API page is empty while more rooms are available, the feed continues loading later pages instead of stopping at the empty page. A failed catalog request shows Network error. Please try again later. and a Retry button. Loaded rooms remain visible; pressing Retry requests only the failed page. Leaving Live and returning also retries, without treating the transport failure as the end of the catalog. Live rooms appear before ended rooms, with newer rooms first within each status. The All/Mine row has no separate background panel.

The desktop Live experience uses its own dark appearance. Buttons, links, cards, toggles, and other enabled clickable controls use the pointer cursor; disabled controls keep an unavailable cursor. Direct visits to the Live list show a server-rendered list skeleton while the application hydrates; individual live-room pages keep the standard application loader for now. Sign-in dialogs keep the app's standard light appearance.

What can viewers do in a live room?

Viewers can play the live video and see the stream details without signing in. On desktop, the header's Back control matches the media detail page and returns to the previous page. On entry, the live video starts automatically with sound muted. Both live streams and ended replays expose the player's bottom toolbar with play/pause, mute/volume, picture-in-picture, and fullscreen controls where supported by the browser. The toolbar uses the player's normal show-on-interaction and auto-hide behavior. While the room is live, the speaker button in the upper-right corner remains available as well; both mute controls share the video's mute state. If the stream is still loading, using that corner button to unmute also starts playback from the interaction. Ended replays omit the corner button and retain their bottom toolbar. The video scales proportionally to fill the full-height player, rather than adding outer letterboxing. The frame is centered and may be cropped at the edges when its aspect ratio differs from the player; it is never stretched. Black bars encoded into the production stream itself may remain. Live and replay stages share a compact 36px header inset 16px from the top and sides, reserving room for the live speaker button. It shows the real owner avatar at 32px, a single-line title, the owner alias, and live/replay plus AI-generated badges. The title truncates visually; selecting Stream information opens a 360px popover with the complete title, owner alias and @username, available elapsed/replay timing, and the full description. Long content scrolls inside the popover. Its Close action, the information button, or an outside press dismisses it; navigating away also closes it. The large bottom information gradient is no longer shown on active streams. In both Viewer view and Owner view, the upper-left scene overlay begins 68px below the top of the player. CURRENT SCENE is a compact 76px card showing a two-line preview from scenes.current (or the opening prompt until it arrives). Read prompt opens the full text. PREVIOUS SCENES starts collapsed; its real count and arrow reveal every history entry returned by the API, in API order, without removing older scenes. History rows stay 44px high with a two-line preview and a time derived from generation completion. Selecting a row opens the shared prompt reader instead of expanding its text inline. The history region scrolls within the space above the queue. Polling still crossfades current prompts and animates history updates. Ended replays omit current/history overlays. Live-room tags are not shown because they are not supported in the first version. The viewer sidebar is titled Audience choices. While the owner has Audience voting enabled, Choose what happens next renders every candidate returned by the room API as a radio option; candidate creation is not capped at three items, and the first option is selected initially. When there are no candidates, the region shows No scene options yet. and hides the vote tiers and submission action. Suggest another scene remains available. Selecting it replaces the complete options view with the suggestion prompt and vote tiers; Back to options returns without submitting, while a successful scene creation clears the prompt and returns automatically. When the owner turns Audience voting off, the voting form is replaced by Audience voting is off and explains that the owner is directing what happens next.

The vote-tier grid always starts with 1 vote · Free and selects it by default, including when paid pricing initializes after the room first renders. Each viewer may cast one free vote on every individual scene. The backend's scene-level useFreeVote field marks whether that viewer has already used the free vote on that scene; selecting a different scene evaluates its own flag independently. Selecting Free submits one vote with creditAmount: 0 and does not open a credit confirmation. After a free vote succeeds, the page marks only that scene as used optimistically while the next backend snapshot catches up. Returning to that scene labels the tier Used, disables it, and selects the lowest paid tier instead, while an unvoted scene defaults to Free. Creating another option with 1 vote · Free creates a new scene with its own free vote and does not consume the free vote of any existing scene. A free vote or free scene creation remains locked while its request is pending, including when navigation remounts the Live page. Paid presets come from the current room resolution's dedicated server-provided Live task cost: live480PVideoContentGeneration for 480p and live768PVideoContentGeneration for 768p. The three paid buttons represent 5, 10, and 15 seconds of that base rate. Custom accepts at least 2 votes with up to two decimal places. Live task, vote, and scene amounts use hundredths of a credit, so the page divides those API values by 100 for display and multiplies custom entries by 100 before submission. Account balance labels use the shared subscription formatter, so Live displays the same formatted balance as the rest of the app. The primary action identifies both the selected vote amount and candidate number, for example Add 250 votes to option 1, and remains disabled without a valid selection.

When a candidate reaches the backend's credit threshold, the backend moves it into Next scenes queued. The browser never moves or ranks scenes itself. The queue is an overlay inside the player, inset 16px from its sides and 60px above its bottom edge, leaving 12px above the 48px control row; it no longer takes space below the player. Its expanded panel is 144px high with 289 × 88px cards in a horizontally scrollable row. Each card shows its position, Up next or In queue, Read prompt, and the existing Tip action where permitted. All queued API entries remain available in backend order. Hide folds a populated queue into a 42px bar with the count, first prompt, and Expand action. Selecting the first prompt opens its reader without expanding the queue. An empty queue stays hidden. Expanded, collapsed, and empty queue states never resize the player. Tip still immediately adds the current resolution's 5-second credit preset without changing queue order; reading a prompt never submits credits.

Previous scenes keep their actual scene numbers in newest-first order: the largest number is at the top and the oldest scene is 01. For five previous scenes, the labels read 05, 04, 03, 02, 01. Adding a newer scene does not renumber the existing scenes. The prompt-reader title uses the same scene number; queued scenes retain their separate 01, 02, 03... positions.

Current, previous, and queued scenes share one full-prompt reader. It opens 8px above a queued prompt or 8px beside a current/history row, stays inside the player, and caps its height at 460px or the available space. The full prompt scrolls while the title, contributor and Copy prompt action remain visible. Copying uses the complete text and shows Copied on success. Close and an outside press dismiss it; selecting another scene replaces the same reader. Consumed scenes, collapsed lists, leaving the page, and ended streams cannot leave a detached reader open.

Voting, creating a scene, opening Mine, and starting a live require sign-in and open the login dialog when needed. On a direct or reloaded room visit, a signed-in user's room ownership is checked before either owner controls or viewer voting, scene creation, and queued-scene tipping controls appear. The sidebar displays Checking live room access... while resolving; if verification fails it displays the refresh instruction and keeps all role-specific controls unavailable. Free and paid support for an existing candidate, tipping a queued scene, and creating a suggested scene all submit immediately without a confirmation dialog. While any paid vote, tip, or scene request is pending, the store-backed credit lock disables the other credit actions and survives navigation between the Live list and a room, preventing a remounted control from submitting a duplicate charge. In suggestion mode, Create option with 1 vote and Create option with 250 votes (the amount follows the selected tier) submit the new scene directly. The prompt has no length limit, remains locked until the request settles, and is cleared only after success; a failure preserves it for correction or retry. If the backend reports insufficient credits for any Live paid mutation, the app opens the shared Not enough credits 😕 payment-guidance dialog instead of showing the backend failure as a Live toast. If the backend rejects a vote because polling has not yet shown that the scene was consumed or changed state, the app refreshes the room and shows either the backend's readable explanation or This scene is no longer available. The room has been refreshed. for a code-only failure. Live chat and barrage are not shipped in the first version: message-list surfaces remain reserved but intentionally empty while voting or owner controls are present, and the viewer chat composer is hidden. A viewer instead sees the full voting-off explanation when audience voting is disabled. Ended replays omit the replay-chat label and empty message region entirely. Live rooms also do not show Gift or Follow actions.

What is different when I open my own live room?

The owner sees Live control beside the player and can turn Audience voting on or off. Viewer view and End live now sit in the 54px rail header, not over the video or queue. When it is enabled, the control section is labelled COMMUNITY VOTE ACTIVE. The owner sidebar also shows the complete interactive live vote section, including candidates, vote totals, tiers, and Suggest another scene. The owner can vote for a candidate, add credits to a queued scene, and create an audience scene in their own room using the same free and paid actions available to viewers. Entering Suggest another scene hides the Audience voting switch so the creation form can use the available panel space; returning through Back to options or successfully creating the scene restores the switch. If polling reports that audience voting was turned off elsewhere, or the displayed room or role changes, the suggestion form closes and the switch is restored instead of leaving Live control inaccessible. The owner also sees a Chat tab plus the active Owner direction composer. Chat is not available in the first version, so selecting Chat keeps Owner direction open and shows Coming soon. Scene length defaults to 15 seconds and accepts whole-second values from 15 through 600. The displayed cost updates from the current resolution's server-provided per-second rate, and createLiveScene receives the recalculated raw credit amount. While a paid owner direction is pending, its prompt, scene length, and submit action remain disabled. That submission lock survives navigation between the Live list and room, preventing a remounted composer from submitting the same charged request twice. Viewer view is available only while the owner's room is live and opens the room in a new browser tab with owner-only controls removed. It remains a read-only preview for the signed-in owner: scene choices and credit tiers are visible, but voting, creating a scene, and tipping queued scenes are unavailable there. End live opens a 520px confirmation dialog and ends the room through stopLiveRoom after confirmation. While that request is pending, the confirmation cannot be closed or submitted again, including if navigation remounts the dialog before the request settles. Backend ownership checks remain authoritative. Viewer totals render only when the room API supplies a real value; the UI does not substitute a mock count.

The owner footer has one full-width, 43px-high action button using the viewer voting layout: Direct on the left and its credit quote on the right. The helper text reads Your scene goes straight into the queue. There is no separate non-interactive status pill. Space below the button keeps the support-chat launcher clear of the action. When the prompt is empty, pricing is unavailable, or a direction is being submitted, the button is disabled. The quote stays visible while disabled so the cost can be checked before entering a prompt; unavailable pricing displays Pricing unavailable. The per-second rate remains beside Scene length.

On desktop, one full-height player stage with its compact identity, scene overlays, and optional in-player queue sits beside the Live control panel within one viewport. The room page itself does not scroll; the voting and message regions scroll inside the control panel while the composer remains visible.

How do I create a live?

The desktop setup form is headed Create your live, with Describe the opening scene and configure your live. underneath. An empty Prompt shows Describe the first scene, world, and action…; clearing a replay's prefilled Prompt instead shows Describe what should happen next.... Create and reopen share a dark two-column dialog capped at 960×920px, with scrollable settings on shorter screens. The selected Resolution is highlighted in burgundy, the current credits/s rate is aligned to the right below the settings, and Public has its own row. Cancel and Go live (or Reopen live) sit side by side, with the total credit cost underneath the primary action's label. An owner's reopen continues to inherit resolution and visibility and therefore does not show those controls.

Select Create your own live. Before a source is selected, the left side shows MEDIA OPTIONAL with Create a live from your prompt, an explanation, and the existing Upload live source and Select content actions centered below it; no placeholder media is rendered. A prompt can create a room on its own. You may also choose a generated image or video—or select Upload live source and then Upload image or Upload video—to guide the live's appearance and motion. Enter a required prompt of at most 7,000 characters and a whole-second length from 15 through 600 seconds, select a resolution and visibility, and select Go live. The Initial length input caps larger entries at 600 before the UI calculates or submits the duration. The UI displays seconds and submits that duration to the deployed Live API in milliseconds. Invalid duration values keep Go live unavailable. The displayed per-second and total costs come from the same resolution-specific Live task-cost rows used by the backend. Selecting Go live shows a global loading overlay with Creating live channel until the new room request settles. Reopen live does not show that overlay because the backend reuses the existing processed content directly. While either request is pending, the dialog's submit, source, cancel, close, backdrop, and Escape actions remain locked to prevent duplicate submissions. The pending lock remains active if browser navigation temporarily removes and then restores the Live dialog, so returning cannot submit a second paid creation. Any child source chooser is also cleared when the creation dialog finishes. A prompt-only room omits all source fields. Existing generated media is submitted as sourceMediaId; a direct upload is submitted as uploadedImage or uploadedVideo with its storage URL and measured metadata. After selection, the dialog previews the real source and its identifying information on the left and shows a Remove icon in the lower-left controls. Removing the source returns the left side to the optional-media state without deleting the original uploaded or generated content, so the live can be created without media or another image or video can be uploaded or selected. You can also select Go live at the top of a desktop image or video detail page's More actions menu to open this dialog with that media selected. For a public room, the 388×545 share dialog appears once per room in the current browser tab. It is recorded as shown as soon as it opens, so refreshing while it is still open does not display it again; private rooms never open the public sharing flow. Long invitation links wrap or scroll within their fields and remain available in full. The share dialog can open a prepared post on X or copy the complete invitation before opening Discord.

An ended room uses the same full-height stage and compact identity header with a REPLAY badge. Stream information contains the full title, prompt, owner identity, and duration/end date when available. The old lower metadata-summary panel is removed, so it does not repeat the title or reduce playback height. The compact side action panel contains one Reopen live action; replay chat, current/history, and queued-scene regions are omitted. The dialog fills its Prompt with that room's exact previous initialPrompt and, when available, shows a generated video from the room's scenes.generated history as a display-only replay preview. The preview is only historical context: its array position does not define which source is reused, and the backend owns the actual reopen source and settings. Ownership is resolved for the currently signed-in account before Reopen live can be submitted, so an unfinished lookup is never treated as a non-owner result and one account's cached result is never reused for another account. If the lookup fails, Unable to verify the live room owner. Please refresh the page and try again. appears and Reopen remains disabled. If the currently signed-in account owns the ended room, Reopen live calls the dedicated reopenLiveRoom operation with the old room ID, edited Prompt, and Initial length. Resolution, visibility, and audience-voting behavior are inherited by the backend and are not editable in this owner flow. For every other signed-in account, Reopen live instead calls createLiveRoom, supplies the old room as sourceLiveRoomId, submits the editable Prompt, Initial length, Resolution, and Public values, and enables audience scene creation for the new room. Both operations create a new live room while the original room remains ended, and the app always navigates to the new room ID returned by the backend.

The image upload and generated-content selection dialogs keep the application's standard light appearance even while the surrounding Live experience uses its dark appearance. In the generated-content selector, All means all source types supported by Live—images and videos only—so text and audio records are never queried or selectable.

While a room is live, the player reads cloudflareHlsPlaybackUrl and plays that Cloudflare Stream HLS delivery URL through Artplayer and hls.js. When polling reports that the room is ENDED, the player is recreated with cloudflareReplayHlsPlaybackUrl as a replay, including when that transition happens without leaving the room. If the ended snapshot arrives before its replay URL is ready, polling continues until the backend supplies it and then stops because the old room cannot become live again. Artplayer and the browser derive the displayed total duration from the HLS media timeline; the Live UI does not calculate or override it. After creation, the app enters the new room without requiring a refresh. When the backend has not produced the applicable playback URL yet, the player shows only its cover or neutral background, without placeholder copy. Playback starts muted when the HLS manifest becomes ready. Live cards, the room player poster, and the public share preview use the room API's previewImageUrl; the frontend no longer substitutes a fixed sample cover. If that field is absent, those surfaces retain their neutral background. The room owner's alias, username, and avatar come from the nested owner object on every room response instead of the current signed-in user's local profile. The backend-owned candidates, queued, and generated partitions replace the previous snapshot atomically; the frontend never infers a candidate-to-queue transition. Room catalogs, room creation, room stopping, scene creation, and voting use the deployed Live GraphQL operations. If the initial room request fails, the page hides backend diagnostics and displays Network error. Please try again later. with a centered Retry action. Viewer totals remain absent until the room API supplies a real value.

Is APOB Live designed for mobile?

Yes. Browse LIVE uses a two-column portrait-card catalog with All, Mine, and Go live. The full-screen room removes the app's bottom navigation and keeps the stream visible behind compact controls. Browse returns to the catalog; Close stream goes back. The owner avatar, title, and username use the same room data as desktop; Stream information opens the full title and description in a sheet.

Choose what happens next shows every available candidate in a scrollable compact list. Add vote opens the shared free, paid, and custom vote choices. If polling removes the last candidate, that sheet closes and stays closed when new candidates arrive. Suggest a scene opens a prompt sheet with the same free/paid rules as desktop. Control opens the owner's audience-voting toggle, complete candidate list, direction prompt, Direct action with its cost, Viewer view, and End live. Closing the control sheet preserves the unsent direction; the 600-second maximum still applies. Chat, Gift, Follow, and invented viewer counts are not included.

Scenes opens current and previous scenes plus Next scenes queued when populated. History retains all backend entries and descending scene numbers; queues keep backend order, their Tip action, and horizontal scrolling. Empty queues remain hidden. Full prompts open in a separate sheet with Copy prompt. Candidates' Read prompt buttons use that same reader, including contributor details, full-text copying and Copied feedback; reading does not change the selected vote target. Closing the containing sheet, leaving the room, or removing the selected scene closes its reader.

Mobile setup uses a full-screen media preview and a compact light form for new streams, converted media, and reopened replays. Add image or video opens Live source, where Upload image, Upload video, and Select content use the same upload and selection flows as desktop. After selecting media, tap its Source image or Source video badge to change it or choose Remove; the preview no longer carries a separate row of source buttons. The prompt's character count appears beside Required after text is entered, outside the scrolling editor. The form shares desktop's pricing, validation and submission logic; it stays scrollable when the viewport or software keyboard reduces available space. Owner Reopen live labels the duration Scene length and shows the actual total credits above the button, while keeping the required prefilled Prompt and 600-second maximum. It creates a new room, not a continuation of an active segment. Share and End confirmations remain centered dialogs; public Share is not offered for private rooms. Replays retain playback controls and Reopen live, without empty chat or live voting/history regions.

On public live rooms, swipe up for the next live stream or down for the previous one; the arrow controls offer the same navigation. Only currently live rooms participate, in the public catalog's order. The current video stays in place while another catalog page loads. When the catalog is successfully exhausted, That’s everything live right now offers Browse all LIVE or Watch from the beginning (the first stream in the feed, not the beginning of the current live video). If there are no live streams left, restarting is disabled. A catalog request failure shows an error; retry with the same next or previous arrow. Previous remains available when finding the current stream requires a failed page lookup. A failure is never presented as the end of the feed. Private rooms and ended replays do not show feed navigation. Navigation gestures do not take over voting, direction, player-toolbar, or sheet interactions.

Adjacent-stream navigation retains successfully loaded public catalog pages and the pagination position for the current account or signed-out session, so moving between streams does not reload earlier pages. Returning to Browse, or leaving Live for another page such as Home or Profile, clears this navigation snapshot; the next stream visit reloads the public catalog. Mine never supplies the snapshot, and private or replay views do not use it.

Public ended rooms use Share replay, replay badges, and a replay invitation when shared. Active rooms retain their live invitation. Setup and uploaded-video previews share muted inline playback initialization on desktop and mobile. Inactive pages stop their HLS player and pending playback retries. Returning recreates playback muted so browsers can start it automatically; use the speaker button to turn sound on again.

Mobile and desktop share room polling, ownership checks, backend scene partitions, free-vote tracking, and pending-credit locks. The app does not infer a separate end-of-buffer or continuation state from a playback stall: the backend's room status remains authoritative.

Did this answer your question?