Overview
FUGA is a leading music distribution platform that delivers catalog to 400+ Digital Service Providers (DSPs) worldwide. The Royalti.io API integrates with FUGA using CSV metadata files and FTP file uploads, enabling automated delivery of releases to streaming platforms.Key Features
- Automated CSV Generation - API automatically formats your catalog into FUGA’s CSV template
- FTP Upload Management - Handles file uploads including audio files and artwork
- Webhook Tracking - Real-time delivery status updates from FUGA
- Batch Delivery - Deliver multiple products simultaneously
- Validation - Pre-delivery validation to catch errors early
- Monitoring - Built-in health checks and delivery analytics
Authentication
FUGA delivery endpoints require authentication and the “DDEX & Deliveries” addon to be enabled.
FUGA Workflow
1
Configure FUGA Provider
Set up your FUGA FTP credentials and webhook salt for delivery tracking.
- Node.js
- Python
- cURL
All FTP credentials and webhook salts are automatically encrypted at rest. No plaintext credentials are stored in the database.
2
Prepare Product Metadata
Ensure your product has all required fields for FUGA delivery:Required Product Fields:
- UPC - 12 or 13 digits (no ‘auto’ value)
- Title - Album title (without version)
- Display Artist - Primary artists (no featuring artists)
- Release Date - Consumer street date (YYYY-MM-DD)
- Label - Label name
- Language - 2-letter ISO code (e.g., ‘en’, ‘es’)
- catalogTier - One of: ‘Back’, ‘Mid’, ‘Front’, ‘Premium’
- territories - Array of territory codes or [‘World’]
- C-Line - Copyright line (year + copyright holder)
- P-Line - Phonographic copyright line (year + sound recording owner)
Node.js
3
Create Product with Delivery Flag
Use the delivery flag feature to automatically queue FUGA delivery:
- Node.js
- Python
- cURL
The delivery flag creates the product AND queues FUGA delivery in a single API call. The system automatically generates the CSV file and schedules the FTP upload.
4
Manual Delivery (Alternative)
Or deliver an existing product manually:
Node.js
5
Monitor Delivery Status
Track delivery progress and webhook updates:Delivery Statuses:
Node.js
pending- Queued for deliveryprocessing- Uploading files to FTPdelivered- Successfully uploaded to FUGAconfirmed- FUGA acknowledged receiptcompleted- Delivered to DSPsfailed- Delivery failed (check logs for errors)
CSV Metadata Format
FUGA uses a CSV template with 50+ fields for catalog metadata. The Royalti.io API automatically generates this CSV from your product and asset data.Product-Level Fields (Album)
| Field | Required | Format | Example |
|---|---|---|---|
| Album title | ✓ | Text | ”Greatest Hits” |
| Album version | Text | ”Deluxe Edition” | |
| UPC | ✓ | 12-13 digits | ”012345678901” |
| Primary artists | ✓ | Pipe-separated | ”Artist A | Artist B” |
| Release date | ✓ | YYYY-MM-DD | ”2024-06-01” |
| Main genre | ✓ | Enum | ”Pop”, “Rock”, “Hip Hop/Rap” |
| Label | ✓ | Text | ”XYZ Records” |
| C-Line year | ✓ | YYYY | ”2024” |
| C-Line name | ✓ | Text | ”XYZ Records Inc” |
| P-Line year | ✓ | YYYY | ”2024” |
| P-Line name | ✓ | Text | ”XYZ Records Inc” |
| Parental advisory | ✓ | Enum | ”Yes”, “No”, “Clean” |
| Album format | ✓ | Enum | ”Single”, “EP”, “Album” |
| Catalog Tier | ✓ | Enum | ”Back”, “Mid”, “Front”, “Premium” |
| Territories | Pipe-separated | ”World” or “US|CA|GB” |
Track-Level Fields (Assets)
| Field | Required | Format | Example |
|---|---|---|---|
| Track title | ✓ | Text | ”Song Title” |
| ISRC | ✓ | 12 chars (no dashes) | “USRC12345678” |
| Track Primary artists | ✓ | Pipe-separated | ”Artist A” |
| Track Featuring Artists | Pipe-separated | ”Artist B | Artist C” | |
| Volume number | ✓ | Integer | ”1” |
| Track Main genre | ✓ | Enum | ”Pop” |
| Audio Language | ✓ | 2-letter or ZXX | ”en” (ZXX = Instrumental) |
| Available separately | ✓ | Y/N | ”Y” |
| Track Sequence | ✓ | Integer | ”1” (display order) |
| Track Catalog Tier | ✓ | Enum | ”Front” |
| Original file name | ✓ | Text | ”012345678901_01_01.wav” |
The API automatically formats your product/asset data into FUGA’s CSV format. You don’t need to manually create CSV files.
FTP Upload
The delivery system automatically uploads files to FUGA’s FTP server in the following structure:Audio File Requirements
- Formats: WAV (recommended), FLAC, MP3 (320kbps)
- Sample Rate: 44.1kHz or 48kHz
- Bit Depth: 16-bit or 24-bit (WAV/FLAC)
- Naming:
{UPC}_{volume}_{track}.{ext}(e.g.,012345678901_01_01.wav)
Cover Art Requirements
- Format: JPG or PNG
- Dimensions: Minimum 3000x3000 pixels (square)
- File Size: Maximum 10MB
- Color Mode: RGB
Webhook Integration
FUGA sends webhooks to notify you of delivery status updates. Configure your webhook endpoint to receive these events.Webhook Events
Product State Events:product_state- Product acceptance/rejection/processing status
delivery_completed- Product delivered to DSPdelivery_cancelled- Delivery cancelled by FUGAdelivery_rejected- Delivery rejected by DSP
xml_ingestion- Metadata ingestion results
Webhook Security
FUGA secures webhooks using SHA3-256 signature verification with your configured webhook salt. What happens automatically:- Signature verification using SHA3-256
- Replay attack prevention (rejects webhooks older than 5 minutes)
- Duplicate detection (prevents processing the same webhook twice)
- Delivery status updates
- User notifications
Webhook Endpoint
Configure FUGA to send webhooks to:- Verifies SHA3-256 signature
- Prevents replay attacks (5-minute timestamp window)
- Detects duplicate webhooks
- Updates delivery status
- Sends notifications to users
Validation Requirements
Before delivery, the system validates your product:UPC Validation
UPC Validation
- Must be 12 or 13 digits
- Cannot be ‘auto’ value
- Leading zeros preserved
- No special characters
ISRC Validation
ISRC Validation
- Must be 12 characters
- No dashes or spaces
- Format: XX-XXX-YY-NNNNN (stored without dashes)
Audio File Validation
Audio File Validation
- Valid audio format (WAV, FLAC, MP3)
- Minimum quality requirements met
- File exists in storage
- File size within limits
Metadata Completeness
Metadata Completeness
- All required fields present
- Genre from approved list
- Valid territory codes
- Parental advisory specified
Best Practices
Territory Management
Node.js
Catalog Tier Selection
- Premium - New releases, major label artists
- Front - Standard new releases
- Mid - Catalog releases (1-5 years old)
- Back - Older catalog (5+ years)
File Naming Convention
Node.js
Error Handling
Implement comprehensive validation and error handling:Node.js
Batch Delivery
Deliver multiple products simultaneously:Node.js
Monitoring and Analytics
Health Metrics
Monitor FUGA delivery health:Node.js
FTP Connection Health
Check FTP connectivity:Node.js
Stuck Deliveries
Find deliveries that need attention:Node.js
Troubleshooting
Delivery stuck in 'pending' status
Delivery stuck in 'pending' status
Possible causes:
- Queue processor not running
- FTP credentials invalid
- Rate limit exceeded
UPC validation error
UPC validation error
Error: “Product has invalid UPC format for FUGA delivery”Solution:
- Ensure UPC is 12 or 13 digits
- Remove any dashes or spaces
- UPC cannot be ‘auto’ - generate a real UPC
- Preserve leading zeros
Audio file not found
Audio file not found
Error: “Original file name must exist on FTP server”Solution:
- Ensure audio files are uploaded to storage
- Verify file naming matches CSV metadata
- Check file format is supported (WAV, FLAC, MP3)
Webhook signature verification failed
Webhook signature verification failed
Error: “Invalid webhook signature”Solution:
- Verify webhook salt matches FUGA configuration
- Check salt is stored in provider credentials
- Ensure webhook timestamp is recent (< 5 minutes)