Third-Party Integrations
Content sharing, media encoding jobs, Brightcove, Canto, Blueforce, Eluvio, EdgeCaster, Phenix, Red5, THEOlive, Bitmovin, Hybrik, Stripe, and AI processing webhooks.
Third-Party Integrations
Overview
The Third-Party Integration APIs connect Nomad Media with external platforms for content sharing, media encoding, live streaming, AI processing, and payment handling. These include both authenticated administrative endpoints and unauthenticated webhook callbacks from external services.
Base Routes
| Route Prefix | Description |
|---|---|
/share | Content sharing management |
/admin/job | Media processing job submission and callbacks |
/admin/transcribe-job | External transcription job callbacks |
/admin/brightcove | Brightcove video import |
/admin/canto | Canto DAM asset import |
/admin/blueforce | Blueforce image submission |
/eluvio | Eluvio content fabric token generation |
/edgecaster | EdgeCaster XML control and cache management |
/phenix | Phenix RTS channel management and webhooks |
/red5 | Red5 Pro streaming authentication and webhooks |
/theolive | THEOlive streaming webhooks |
/bitmovin | Bitmovin encoding webhooks |
/hybrik | Hybrik encoding webhooks |
/stripe | Stripe payment webhooks |
/mobius-labs | Mobius Labs AI processing webhooks |
/twelve-labs | Twelve Labs video understanding webhooks |
Content Sharing
Get Share
GET /share/{shareId}
Response: ShareModel
Retrieves a share configuration by its identifier.
Create Share
POST /share
Request body: ShareAddModel
Response: ShareModel
Creates a new content share with access settings, expiration, and optional password protection.
Update Share
PUT /share/{shareId}
Request body: ShareUpdateModel
Response: ShareModel
Updates an existing share configuration and invalidates the share cache.
Send Share Notification
POST /share/{shareId}/notification
Request body: ShareNotificationModel
Sends a notification (e.g., email) to share recipients.
Delete Share
DELETE /share/{shareId}
Response: IdModel
Permanently deletes a share and invalidates the share cache.
Expire Share
POST /share/expire/{shareId?}
Force-expires the specified share, or all shares if no ID is provided.
Media Processing Jobs
Submit Job
POST /admin/job
Request body: SubmitJobModel
Response: IdModel
Submits a media processing job for asynchronous execution. No authorization required.
Job Completion Callback
POST /admin/job/{assetId}
Request body: JobCompleteModel
Receives a completion callback from the media processing pipeline. No authorization required.
External Transcription Callback
POST /admin/transcribe-job/{assetId}
Request body: NomadTranscriptionModel
Receives a completion callback from the external transcription service. Validates the access key and queues the transcription for processing. No authorization required.
Brightcove Integration
Import Videos
POST /admin/brightcove/import
Request body: string[] (Brightcove video IDs)
Query: background (bool, default: true)
Imports Brightcove videos by their IDs. Can run in the foreground or as a background batch job.
Import Masters
POST /admin/brightcove/import-masters
Query: pageNumber (int), background (bool, default: true)
Imports Brightcove master video files with pagination support.
Canto Integration
Import Assets
POST /admin/canto/import
Request body: string[] (Canto asset IDs)
Query: background (bool, default: true)
Imports Canto DAM assets by their IDs. Can run in the foreground or as a background batch job.
Blueforce Integration
Upload Image
POST /admin/blueforce/upload-image
Request body: byte[] (Base64-encoded image)
Query: endpointId, imageId, alertUnknownFaces, fileName
Response: IdModel
Receives a Base64-encoded image submission from the Blueforce platform and creates an asset.
Eluvio Content Fabric
Generate Security Token
POST /eluvio/token
Request body: EluvioTokenRequestModel
Response: EluvioTokenResponseModel
Generates a signed Eluvio content fabric security token for the specified mezzanine object.
EdgeCaster Integration
Get XML Control (Unauthenticated)
GET /edgecaster
Response: application/xml
Returns EdgeCaster XML control data using the identity key from request headers. No authorization required.
Get XML Control by Channel ID
GET /edgecaster/{id}
Response: application/xml
Returns EdgeCaster XML control data for a specific Nomad Media live channel. Requires authorization.
Clear Cache
POST /edgecaster/{identityKey}/clearCache
Clears the EdgeCaster cache for the specified identity key. Requires authorization.
Phenix RTS
Status Webhook
POST /phenix/status
Receives status update webhooks from the Phenix RTS platform. Validated by a webhook request filter. No Bearer token required.
Refresh Token
POST /phenix/refreshToken
Query: liveChannelId (Guid)
Response: string
Generates a refreshed Phenix authentication token for the specified live channel and current user.
Create Channel
POST /phenix
Request body: PhenixChannelRequestModel
Response: PhenixChannelEntity
Creates a new channel on the Phenix RTS platform.
Get Channel
GET /phenix/{externalSystemId}
Response: PhenixChannelEntity
Retrieves a Phenix channel by its external system identifier.
List Channels
GET /phenix
Response: PhenixChannelEntity[]
Returns all Phenix channels.
Stop Channel
POST /phenix/{externalSystemId}/stop
Stops a Phenix channel.
Delete Channel
DELETE /phenix/{externalSystemId}
Deletes a Phenix channel from the platform.
Register Webhook
POST /phenix/registerWebhook
Request body: PhenixWebhookRegistrationModel
Registers a webhook URL on the Phenix RTS platform for receiving status callbacks.
Red5 Pro Streaming
Authenticate
POST /red5/authenticate
Request body: Red5AuthRequestModel
Response: Red5AuthResponseModel
Handles Red5 Pro authentication webhook callbacks. No authorization required.
Validate Credentials
POST /red5/validateCredentials
Request body: Red5AuthRequestModel
Response: Red5AuthResponseModel
Handles Red5 Pro credential validation webhook callbacks. No authorization required.
Status Update
POST /red5/status
Request body: Red5StatusRequestModel
Response: Red5StatusResponseModel
Processes Red5 Pro stream status webhooks (publish/unpublish events). No authorization required.
THEOlive Streaming
Webhook
POST /theolive/webhook
Request body: TheoliveWebhookRequestModel
Response: ActionResult
Receives event webhooks from the THEOlive platform and updates channel status. No authorization required.
Health Check
GET /theolive/webhook/health
Response: { status, service }
Health check endpoint for THEOlive webhook connectivity. No authorization required.
Encoding Webhooks
Bitmovin Webhook
POST /bitmovin/webhook/{status}/{id}/{eId}
Request body: object
Receives encoding status webhooks from the Bitmovin platform. Queues the result for asynchronous processing. No authorization required.
Hybrik Webhook
POST /hybrik/webhook/{id}
Request body: object
Receives encoding completion webhooks from the Hybrik platform. Queues the result for asynchronous processing. No authorization required.
Payment Integration
Stripe Webhook
POST /stripe/webhook
Request body: string (raw Stripe event JSON)
Response: bool
Receives payment event webhooks from the Stripe platform.
AI Processing Webhooks
Mobius Labs Webhook
POST /mobius-labs/notification/{id}/{callbackType}
Request body: object
Response: MobiusLabsWebhookResponseModel
Receives AI processing webhooks from Mobius Labs. Supports callback types: feature-extraction, video-analysis, index, and analyze. No authorization required.
Twelve Labs Webhook
POST /twelve-labs/notification
Request body: object
Receives video understanding webhooks from the Twelve Labs platform. Validated by a webhook request filter. No authorization required.
Common Error Responses
| Status Code | Description |
|---|---|
| 200 | OK — Request processed successfully |
| 204 | No Content — Empty input (e.g., no IDs provided for import) |
| 400 | Bad Request — Missing or invalid parameters |
| 401 | Unauthorized — Missing or invalid Bearer token |
| 404 | Not Found — Resource not found |
