Skip to main content

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.
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’)
Required DDEX Metadata:
  • catalogTier - One of: ‘Back’, ‘Mid’, ‘Front’, ‘Premium’
  • territories - Array of territory codes or [‘World’]
Copyright Line Fields:
  • c_line_year - Copyright year (©) - defaults to current year if not provided
  • p_line_year - Phonogram year (℗) - defaults to current year if not provided
  • copyright - Copyright holder name for C-Line
  • publisher - Sound recording owner for P-Line
If c_line_year or p_line_year are not provided, the system automatically uses the current year. For reissues, you should explicitly set these to the original release year.
Node.js
Reissue Example:
Node.js
3

Create Product with Delivery Flag

Use the delivery flag feature to automatically queue FUGA delivery:
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:
Node.js
Delivery Statuses:
  • pending - Queued for delivery
  • processing - Uploading files to FTP
  • delivered - Successfully uploaded to FUGA
  • confirmed - FUGA acknowledged receipt
  • completed - Delivered to DSPs
  • failed - 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)

The API automatically maps your product fields to FUGA’s CSV format. Fields like c_line_year and p_line_year default to the current year if not provided.

Track-Level Fields (Assets)

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 Events:
  • delivery_completed - Product delivered to DSP
  • delivery_cancelled - Delivery cancelled by FUGA
  • delivery_rejected - Delivery rejected by DSP
Ingestion Events:
  • xml_ingestion - Metadata ingestion results

Webhook Security

FUGA secures webhooks using SHA3-256 signature verification with your configured webhook salt.
The Royalti.io API automatically verifies all incoming webhook signatures using your configured webhook salt. You don’t need to implement verification yourself.
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:
The API automatically:
  • 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:
  • Must be 12 or 13 digits
  • Cannot be ‘auto’ value
  • Leading zeros preserved
  • No special characters
  • Must be 12 characters
  • No dashes or spaces
  • Format: XX-XXX-YY-NNNNN (stored without dashes)
  • Valid audio format (WAV, FLAC, MP3)
  • Minimum quality requirements met
  • File exists in storage
  • File size within limits
  • 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

Possible causes:
  • Queue processor not running
  • FTP credentials invalid
  • Rate limit exceeded
Solution:
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
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)
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)