Skip to content

PlatformPublish

The PlatformPublish entity represents a publishing configuration for a specific platform, with custom metadata and status tracking.

Overview

Fields

FieldTypeDescription
platformenumTarget platform
publishTypeenumType of publish
statusenumCurrent status
titlevarcharPlatform-specific title
descriptiontextPlatform-specific description
thumbnailUrlurlPlatform-specific thumbnail
tagstextComma-separated tags
visibilityenumPublic, Private, Unlisted
scheduledAtdatetimeWhen to publish
streamUrlurlRTMP stream URL (livestreams)
streamKeyvarcharStream key
platformIdvarcharID from platform after publishing
platformUrlurlURL from platform
dependsOnPlatformvarcharCascade dependency
apiResponsetextRaw API response/error

Supported Platforms

PlatformLivestreamUploadDescription
RumblePrimary video platform
YouTubeGoogle's platform
BoxcastEnterprise streaming
BrighteonAlternative platform
OdyseeBlockchain-based
Banned.VideoInfowars network
BitchuteAlternative platform
TransistorPodcast hosting
SubstackNewsletter platform
RestreamMulti-streaming
FacebookSocial live

Publish Types

TypeDescriptionExample
LivestreamReal-time broadcastLive show
UploadPre-recorded contentEpisode upload
PodcastAudio contentTransistor episode
NewsletterWritten contentSubstack post
SimulcastSecondary streamRestream output

Status Workflow

StatusDescriptionNext Action
PendingCreated, not yet queuedConfigure settings
QueuedReady for processingBridge will pick up
PublishingCurrently processingWait for completion
PublishedSuccessfully publishedComplete
FailedError occurredCheck apiResponse, retry

Dependency Cascading

Some platforms depend on others for RTMP credentials:

Configuration

Set dependsOnPlatform to the platform name this record depends on:

json
{
  "platform": "Boxcast",
  "publishType": "Livestream",
  "dependsOnPlatform": "Rumble",
  "status": "Pending"
}

When Rumble publishes successfully:

  1. Bridge detects Boxcast depends on Rumble
  2. Copies streamUrl and streamKey to Boxcast
  3. Automatically sets Boxcast status to "Queued"
  4. Boxcast processing begins

X Server Endpoints

Each platform maps to an X Server endpoint:

PlatformLivestream EndpointUpload Endpoint
Rumble/rumble-create/rumble-episode
YouTube/youtube-create
Boxcast/boxcast-livestream/boxcast-media-upload
Brighteon/brighteon-create/brighteon-upload
Odysee/odysee-create/odysee-upload
Banned.Video/banned-create
Bitchute/bitchute-create
Transistor/transistor-upload
Substack/substack-create
Restream/restream-create
Facebook/facebook-create

API Examples

Create PlatformPublish

http
POST /api/v1/PlatformPublish
Content-Type: application/json

{
  "contentProductionId": "content-id-here",
  "platform": "Rumble",
  "publishType": "Livestream",
  "title": "Live: Episode 42",
  "description": "Join us for an exciting discussion...",
  "visibility": "Public",
  "scheduledAt": "2026-02-10T14:00:00.000Z"
}

Queue for Publishing

http
PUT /api/v1/PlatformPublish/{id}
Content-Type: application/json

{
  "status": "Queued"
}

Check Status

http
GET /api/v1/PlatformPublish/{id}

Response when published:

json
{
  "id": "pp-123",
  "platform": "Rumble",
  "status": "Published",
  "platformUrl": "https://rumble.com/v1234-episode-42.html",
  "platformId": "v1234",
  "streamUrl": "rtmp://live.rumble.com/live",
  "streamKey": "abc123xyz"
}

Best Practices

Use Platform-Specific Metadata

Each platform has different character limits and preferences. Customize titles and descriptions per platform.

Set Up Dependencies

For livestreams, configure Rumble first, then set other platforms to depend on it for RTMP credentials.

Check Failed Status

When status is "Failed", check the apiResponse field for error details from the X Server.

Retry Logic

To retry a failed publish, simply set status back to "Queued".

MediaMagic CRM Documentation