API Guide
Overview of the Nomad Media REST API — base URLs, authentication, common patterns, versioning, and webhook endpoints.
Nomad Media API Documentation
Overview
The Nomad Media API Gateway is a comprehensive media management platform that provides RESTful APIs for asset management, live streaming, content delivery, search, security, and third-party integrations. The platform is served through two primary API entry points — the Admin API for administrative operations and the Portal API for end-user-facing functionality.
Base URLs
| API | Base Path | Description |
|---|---|---|
| Admin API | /admin/... | Administrative operations — asset management, security, users, scheduling, statistics, setup |
| Portal API | /api/... | User-facing operations — media delivery, search, content groups, payments, embedded players |
| V1 Legacy API | /v1/... | Legacy endpoints for backward compatibility |
Authentication
All authenticated endpoints require a JWT Bearer token in the Authorization header:
Authorization: Bearer <your-access-token>
Tokens are obtained through the login flow and have a limited lifetime. Use refresh tokens to obtain new access tokens before expiration.
For full details, see Authentication & Account Management.
API Documentation Index
Core APIs
| Document | Description | Key Endpoints |
|---|---|---|
| Authentication & Account | Login, registration, tokens, password management, facial recognition | 27 endpoints |
| Asset Management | Asset CRUD, uploads, clips, screenshots, annotations, transcription | 69 endpoints |
| Search | Full-text search, filters, sorting, pagination, saved searches | ~15 endpoints |
| Content Management | Content metadata, batch actions, content definitions | ~10 endpoints |
| Portal API | Portal groups, featured content, saved searches, profiles | ~35 endpoints |
Streaming & Media
| Document | Description | Key Endpoints |
|---|---|---|
| Live Streaming | Channels, inputs, output profiles, schedule events, operators | 57 endpoints |
| System Administration | Media groups, items, media builders, MRSS/Roku feeds | ~50 endpoints |
Administration
| Document | Description | Key Endpoints |
|---|---|---|
| Security & Users | Security groups, permissions, user management, audit | ~20 endpoints |
| System Administration | System setup, scheduling, statistics, collections, tags, payments | ~90 endpoints |
Integrations
| Document | Description | Key Endpoints |
|---|---|---|
| Third-Party Integrations | Shares, encoding webhooks, AI processing, streaming, DAM imports | ~35 endpoints |
Reference
| Document | Description |
|---|---|
| Enums & Lookups | Complete reference of enumeration types and lookup values |
| Error Handling | Error response format, HTTP status codes, error scenarios |
| Models Reference | Index of all request and response model types |
Common Response Patterns
Successful Responses
| Status | Description |
|---|---|
200 OK | Request succeeded. Response body contains the result. |
204 No Content | Request succeeded. No content to return. |
Error Responses
| Status | Description |
|---|---|
400 Bad Request | Invalid parameters, missing required fields, or business rule violation. |
401 Unauthorized | Bearer token is missing, expired, or invalid. |
403 Forbidden | Authenticated user lacks required permissions. |
404 Not Found | Requested resource does not exist. |
500 Internal Server Error | Unexpected server error. |
Error responses return a JSON body with the errors array. See Error Handling for full details.
Common Response Types
IdModel
Returned by create and delete operations:
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}ListResultModel<T>
Returned by search and list operations:
{
"items": [...],
"totalItemCount": 150,
"hasItems": true,
"relatedItems": [...]
}BatchResultModel
Returned by bulk operations (collections, tags, related content):
{
"totalCount": 10,
"successCount": 8,
"errorCount": 2,
"errors": [...]
}LookupModel
Used for reference values throughout the API:
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"description": "Display Name"
}For the complete models reference, see Models Reference.
API Versioning
Current API (v2)
The current API is the default version and is accessed without a version prefix. All new development should target these endpoints.
- Admin endpoints:
admin/{resource}(e.g.,admin/asset,admin/schedule) - Portal endpoints:
{resource}(e.g.,media,payment,comment) - Core endpoints:
{resource}(e.g.,account,asset,ping)
V1 Legacy API
The V1 API provides backward-compatible endpoints for older integrations. These endpoints are prefixed with v1/ and are maintained for existing clients.
V1 endpoints include:
v1/config— Application configurationv1/content— Content CRUDv1/contentDefinition— Content definition schemasv1/contentDefinitionGroup— Content definition groupsv1/contentInstance— Content instancesv1/contentLabel— Content labelsv1/contentType— Content typesv1/field— Field definitionsv1/lookup— Lookup values
Migration Notes:
- V1 endpoints return data in the legacy Vibrant CMS format
- Current API endpoints return data in the Nomad Media format
- V1 endpoints are fully documented but new integrations should use the current API
- Both API versions share the same authentication mechanism (JWT Bearer tokens)
Webhook Endpoints
Several endpoints receive callbacks from external services and do not require Bearer token authentication:
| Route | Service | Description |
|---|---|---|
s3/webhook | AWS S3 | S3 bucket event notifications |
twelve-labs/notification | Twelve Labs | Video understanding task callbacks |
mobius-labs/notification/{id}/{callbackType} | Mobius Labs | AI feature extraction callbacks |
admin/job/{id} | Encoding Services | Transcoding job completion callbacks |
admin/transcribe-job/notification | Transcription | Transcription job callbacks |
red5/notification | Red5 Pro | Live streaming event callbacks |
theolive/notification | THEOlive | Live streaming event callbacks |
bitmovin/notification | Bitmovin | Encoding completion callbacks |
hybrik/notification | Hybrik | Encoding completion callbacks |
phenix/notification | Phenix | RTS event callbacks |
See Third-Party Integrations and System Administration for full details.
Background Processing
Many long-running operations support a background query parameter (default: true):
POST /admin/schedule/{scheduleId}/start?background=true
POST /admin/canto/import?background=true
POST /admin/statistics/exportjournal?background=true
When background=true, the API immediately returns a response while the operation is processed asynchronously via a message queue. When background=false, the operation runs synchronously and the response is returned upon completion.
Content Types
The API primarily produces and consumes JSON (application/json), with the following exceptions:
| Content Type | Endpoints |
|---|---|
application/json | Default for all endpoints |
text/html | embedded/iframe-media, embedded/share-media |
text/xml / application/xml | mrss/feed, edge-caster endpoints |
text/plain | media/routes, media/sitemap/{baseUrl} |
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | Statistics journal export |
