Repository navigation
Technical Plugin API
Provides HTTP integration methods for metadata, users, playback, playlists and enabled plugins.
Audience: developers, advanced administrators and AI-assisted diagnosis. Plugin catalog.
- Review date: 2026-10-29. Method: static source analysis; runtime/provider behavior was not exercised.
- Code ownership: AVideo Streamer repository.
- Reported version:
1.0 (inherited; verify package). - Source revision:
7d48f2dfc0289236718a3f9fba7c5ffecff4a37f. - Entry class file: API.php.
Confirm the installed plugin version independently of the Streamer version. Configuration defaults below are not a dump of this installation's saved settings.
GET requests reach get.json.php and POST/DELETE requests reach set.json.php through the API router. Each method has its own public/credential/playback requirements. Metadata and playable media source URLs have different contracts. Read Technical-API before changing request parameters, response fields or authentication.
| Plugin | Required by declaration | Source reason |
|---|---|---|
| ADs | Optional | Optional ads endpoint integration |
| Live | Optional | Optional live stream endpoints |
| PlayLists | Optional | Optional playlist endpoints |
| VideoTags | Optional | Optional video tags endpoint |
| PayPerView | Optional | Optional PPV purchase endpoints |
| YPTWallet | Optional | Optional wallet balance endpoints |
| Subscription | Optional | Optional subscription endpoints |
| MobileManager | Optional | Optional mobile app configuration endpoint |
| GoogleAds_IMA | Optional | Optional VMAP/ads endpoint integration |
| AD_Server | Optional | Optional VMAP/ads endpoint integration |
| AdsForJesus | Optional | Optional VMAP/ads endpoint integration |
| User_Location | Optional | Optional geolocation-based endpoint behavior |
| Chat2 | Optional | Optional chat endpoints |
| Meet | Optional | Optional meeting endpoints |
| UserNotifications | Optional | Optional push notification endpoints |
| YouPHPFlix2 | Optional | Optional Flix-mode listing endpoint behavior |
Literal runtime plugin references: ADs, Chat2, Live, Meet, MobileManager, PayPerView, PlayLists, ReportVideo, Subscription, SubtitleSwitcher, UserNotifications, VideoTags, YPTWallet. These calls do not mean every referenced plugin is mandatory.
| Override | Implementation |
|---|---|
getTags() |
API.php:51 |
getPluginMenu() |
API.php:141 |
These are direct assignments inside getEmptyDataObject(), not evaluated effective defaults. Stored plugins.object_data, globals, structured values and conditional branches may alter runtime behavior. Private/default credential values are omitted.
| Field | Literal default or expression type | Literal source label/help | Evidence |
|---|---|---|---|
APISecret |
Private setting; value omitted | — | source |
standAloneFFMPEG |
'' |
— | source |
documentationAllowedIPs |
'' |
Documentation allowed IPs: Allow these exact IPv4/IPv6 addresses to access Swagger documentation without login. Separate addresses with commas or spaces. Empty means admin only. This does not authorize API operations. Everyone sharing an allowed IP has access. Forwarded IPs require configured trusted proxies. | source |
This inventory distinguishes implementation files from an API specification. Includes, templates, callbacks and CLI workers are not interchangeable HTTP endpoints. Request-field names below are direct source references, not a complete schema or permission declaration.
| File | Source role | Direct request fields observed |
|---|---|---|
| API.php | plugin entry class |
APISecret, add, birth_date, canCreateMeet, canStream, canUpload, captcha, catName, created, current, emailVerified, httpHeaders, isAdmin, isCompany, lower_then_id, message, order, playlists_id, room_users_id, rowCount, searchPhrase, sort, status, string, time, to_users_id, userAgent, users_id, videos_id
|
| check.ffmpeg.json.php | JSON entry point; inspect caller and guard | — |
| ffmpeg.php | PHP page/include/worker; inspect caller | — |
| get.json.php | JSON entry point; inspect caller and guard |
gzip, rowCount
|
| index.php | PHP page/include/worker; inspect caller | — |
| info.php | PHP page/include/worker; inspect caller | json |
| kill.ffmpeg.json.php | JSON entry point; inspect caller and guard | pid |
| list.ffmpeg.json.php | JSON entry point; inspect caller and guard | — |
| notify.ffmpeg.json.php | JSON entry point; inspect caller and guard |
callback, notify, notifyCode
|
| router.php | PHP page/include/worker; inspect caller |
APIName, APISecret
|
| set.json.php | JSON entry point; inspect caller and guard | gzip |
| standAlone/ffmpeg.json.php | JSON entry point; inspect caller and guard | — |
| standAlone/functions.php | PHP page/include/worker; inspect caller | APISecret |
| status.json.php | JSON entry point; inspect caller and guard | — |
| swagger.json.php | JSON entry point; inspect caller and guard | — |
No CREATE TABLE names were extracted from available plugin SQL. The plugin can still use core tables, PHP-created schema or another component's data. Apply installation/update behavior through the owning plugin; this reference is not a script for running historical migrations manually.
Visibility and implementation semantics must be checked in source. Nonempty string defaults are represented as . This is a symbol reference, not a stable public API promise.
| Function or method | Source |
|---|---|
getPluginDependencies() |
30 |
getTags() |
51 |
getDescription() |
59 |
getName() |
64 |
getUUID() |
69 |
addRowInfo($obj) |
74 |
getEmptyDataObject() |
102 |
canAccessDocumentation() |
113 |
getPluginMenu() |
141 |
set($parameters) |
148 |
get($parameters) |
191 |
startResponseObject($parameters) |
234 |
getToPost() |
252 |
get_api_plugin_parameters($parameters) |
293 |
get_api_adsInfo($parameters) |
362 |
get_api_preauthorize($parameters) |
501 |
get_api_id($parameters) |
526 |
get_api_is_mobile($parameters) |
578 |
get_api_category($parameters) |
669 |
get_api_video_from_program($parameters) |
770 |
get_api_audio_from_program($parameters) |
862 |
get_api_suggested_programs($parameters) |
889 |
get_api_tags($parameters) |
958 |
get_api_video_file($parameters) |
1021 |
get_api_user_can_watch_video($parameters) |
1085 |
get_api_video_password_is_correct($parameters) |
1150 |
get_api_ppv_plans($parameters) |
1207 |
set_api_ppv_buy($parameters) |
1297 |
get_api_subscription_plans($parameters) |
1377 |
set_api_subscription_buy($parameters) |
1466 |
get_api_video($parameters) |
1674 |
filterVideoSources(&$row, $parameters, $hasAPISecret) |
1978 |
getSubtitle($filename) |
2001 |
set_api_video_save($parameters) |
2094 |
get_api_videosCount($parameters) |
2233 |
set_api_video_delete($parameters) |
2300 |
set_api_comment($parameters) |
2398 |
get_api_comment($parameters) |
2509 |
get_api_live_schedule($parameters) |
2583 |
set_api_live_schedule_delete($parameters) |
2655 |
set_api_live_schedule($parameters) |
2798 |
get_api_livestreams($parameters) |
2902 |
set_api_livestream_save($parameters) |
2987 |
set_api_user($parameters) |
3081 |
get_api_user($parameters) |
3087 |
get_api_users_list($parameters) |
3236 |
get_api_videosViewsCount($parameters) |
3318 |
get_api_channels($parameters) |
3407 |
get_api_program($parameters) |
3459 |
get_api_programs($parameters) |
3523 |
set_api_create_programs($parameters) |
3608 |
set_api_delete_programs($parameters) |
3674 |
set_api_programs($parameters) |
3761 |
get_api_subscribers($parameters) |
3839 |
get_api_categories($parameters) |
3905 |
get_api_likes($parameters) |
3959 |
set_api_like($parameters) |
4028 |
set_api_dislike($parameters) |
4083 |
set_api_removelike($parameters) |
4136 |
get_api_signIn($parameters) |
4179 |
set_api_signIn($parameters) |
4225 |
set_api_signUp($parameters) |
4335 |
get_api_signUp($parameters) |
4375 |
like($parameters, $like) |
4392 |
get_api_vmap($parameters) |
4458 |
get_api_vast($parameters) |
4519 |
get_api_IP2Location($parameters) |
4557 |
get_api_favorite($parameters) |
4605 |
set_api_favorite($parameters) |
4664 |
set_api_removeFavorite($parameters) |
4702 |
favorite($parameters, $add) |
4707 |
get_api_watch_later($parameters) |
4756 |
set_api_watch_later($parameters) |
4819 |
set_api_removeWatch_later($parameters) |
4857 |
watch_later($parameters, $add) |
4862 |
set_api_chat2_message($parameters) |
4915 |
get_api_chat2_chat($parameters) |
4968 |
get_api_chat2_room($parameters) |
5031 |
getAPISecret() |
5058 |
get_api_locales($parameters) |
5092 |
get_api_locale($parameters) |
5135 |
set_api_userImages($parameters) |
5203 |
get_api_meet($parameters) |
5264 |
set_api_meet($parameters) |
5352 |
get_api_notifications($parameters) |
5410 |
get_api_app($parameters) |
5466 |
set_api_login_code($parameters) |
5549 |
get_api_login_code($parameters) |
5595 |
set_api_birth($parameters) |
5680 |
set_api_user_inactive($parameters) |
5748 |
set_api_user_delete($parameters) |
5922 |
removeBlockedUsersComments($comments) |
6084 |
checkRateLimit($operation, $maxAttempts, $timeWindow) |
6118 |
get_api_is_verified($parameters) |
6180 |
set_api_send_verification_email($parameters) |
6238 |
isAPISecretValid() |
6254 |
get_api_isAPISecretValid() |
6298 |
get_api_decryptString() |
6358 |
__construct($message = '<string>', $error = true, $response = []) |
6402 |
finalize($message = null, $error = null, $response = null) |
6433 |
__construct($type, $title, $endpoint, $rowCount, $childs = array()) |
6481 |
These symbols are grouped by source file; inspect the class declaration and visibility before calling them.
| Named symbol | Source |
|---|---|
redirectIfPortOpen($newPort, $timeout = 1) |
78 |
_getBearerToken() |
194 |
| Named symbol | Source |
|---|---|
getStandaloneAPIEndpoint($apiName) |
10 |
getStandaloneAPIAuthPayload() |
20 |
isStandaloneDecryptedPayloadValid($payload) |
31 |
_decryptString($string) |
44 |
getInput($key, $default = '') |
72 |
sanitizeFFmpegCommand($command) |
98 |
convertElapsedTimeToSeconds($elapsedTime) |
127 |
listFFmpegProcesses($keyword = '') |
146 |
killFFmpegProcess($pid) |
176 |
- Check the installed/enabled version and the dependencies/settings above.
- Identify the actual failing page, request, callback or worker and correlate its timestamp with the AVideo log.
- Follow the linked method and caller. Check business-state changes and output artifacts as well as HTTP status.
- Reproduce the relevant workflow in a test environment. External provider, Encoder, live-server, storage, payment and authenticated flows require their real integrations.
Related test filenames (name matches only; not executed by generation):
- tests/Security/AiTranscriptionEscapingTest.php
- tests/Security/ApiAuthenticationRegressionTest.php
- tests/Unit/ObjectCacheApiRegressionTest.php
- tests/api-deactivation-regression.php
- tests/api-documentation-access-regression.php
- tests/api-session-rate-limit-regression.php
- tests/api-set-csrf-guard-regression.php
- tests/api-user-delete-regression.php
Shared diagnostic workflow. This page is not a security audit or a claim of end-to-end validation.
Start
Install and update
- Install on Ubuntu 24.04 or 26.04
- Installation Setup Page
- Scheduler cron job (required)
- Set up email
- Use HTTPS
- Own Encoder
- Docker
- Update AVideo
- Backup
- Secure file permissions
- Server command-line tools
- Hidden configuration options
Videos
- Upload a video
- Local Encoder (on your computer)
- Bulk upload by FTP
- Import a channel
- Publish on YouTube and social media
- Privacy options
- Only for logged-in users
- Resolutions by user group
- Storage options
- Move and protect video files
- Video does not play
Users
Live
- Make a live stream
- Stream with OBS
- Own live server
- One live server, many sites
- Live server install errors
- Live does not play
Plugins
Problems
Other
- Translate your site
- Write a plugin (developers)
- Technical reference (developers and advanced administrators)
Old and retired guides