Overview
The Queue API provides endpoints for managing BullMQ media processing jobs and monitoring queue health. Jobs are enqueued via this API and processed by background workers. Base Path:/api/queue
Key Features:
- Enqueue media jobs (transcoding, thumbnails, captions)
- Real-time queue statistics (depth, waiting, active, completed)
- Subscription tier enforcement
- Taxonomy cache management
GET /api/queue/stats
Returns BullMQ queue depths and taxonomy cache statistics. Useful for dashboard observability. Authentication: None (public endpoint)Request success status
BullMQ queue statistics object containing:
waiting- Jobs waiting to be processedactive- Currently processing jobscompleted- Successfully completed jobsfailed- Failed jobsdelayed- Jobs scheduled for future execution
Taxonomy cache statistics:
size- Number of cached entrieshits- Cache hit countmisses- Cache miss count
- Health check dashboards
- Queue depth monitoring alerts
- Performance analytics
- Worker scaling decisions
POST /api/queue/media
Enqueue a media job that already exists in the Directusmedia_jobs collection.
Authentication: Directus JWT (Bearer token)
You must create the Directus
media_jobs record before calling this endpoint. This endpoint only pushes the job into BullMQ so workers can pick it up.Request Parameters
UUID of the existing
media_jobs Directus recordOperation type (e.g.,
transcoding, thumbnail, caption_generation). Used for tier validation.UUID of the input file from Directus
directus_files (optional)URL of remote input file (optional, alternative to
input_file_id)Job-specific parameters (e.g.,
{"format": "mp4", "resolution": "1080p"})UUID of the associated
platform_connections record (optional)Job priority (1-100, default: 10). Lower numbers = higher priority.
Response
Request success status
BullMQ job ID (UUID) assigned by the queue
Directus
media_jobs record UUID (echoed from request)Example Request
Subscription Tier Enforcement
The endpoint validates if the user’s subscription tier allows the requested operation: Fromqueue.js:88:
Supported Operations
Commonoperation values (validated against subscription tier):
transcoding- Video format conversionthumbnail- Generate video thumbnailcaption_generation- AI caption generationdownload- Download remote mediaupload- Upload processinganalysis- Media analysis/metadata extraction
POST /api/queue/taxonomy/invalidate
Bust the taxonomy cache (e.g., after admin updatestaxonomy_terms in Directus).
Authentication: None (internal loopback only)
Example Request:
Queue Architecture
Job Lifecycle
- Create Directus Record - Client creates
media_jobsrecord withstatus=pending - Enqueue - Client calls
POST /api/queue/mediawith jobId - BullMQ Processing - Worker picks up job from queue
- Status Updates - Worker updates Directus record (
status=processing,status=completed,status=failed) - Client Polling - Client polls Directus
media_jobsrecord for status changes
Queue Configuration
Fromserver/utils/actionBus.js:
Job Priority Levels
1-3- Critical (real-time user actions)4-6- High (scheduled urgent tasks)7-10- Normal (default background processing)11+- Low (batch operations, cleanup)
Error Handling
Missing required fields:Monitoring & Observability
Queue Metrics Dashboard
Use the/stats endpoint to build real-time dashboards:
Alerting Thresholds
Recommended alert triggers:- High queue depth:
waiting > 100(consider scaling workers) - High failure rate:
failed / (completed + failed) > 0.1(10%) - Stalled jobs:
active > 0for > 30 minutes (worker crash?)
Integration Example
Complete workflow for enqueuing a transcoding job:Next Steps
Captions API
Generate AI-powered captions (one of the queue operations)
Credentials API
Manage encrypted credentials for media jobs
