DislifyDislify

Command Palette

Search for a command to run...

All documentation
Getting Started

Introduction

Learn what Dislify is, how its media-compression workflow works, and which features are available through the web application and developer API.

Overview

Dislify is a media-compression platform for optimizing videos, images, and audio files for easier storage, delivery, and sharing. Use the dashboard for manual compression or integrate Dislify into your application through the developer API.
01

Introduction

Introduction

Dislify is a media-compression platform for optimizing videos, images, and audio files for easier storage, delivery, and sharing.
You can use Dislify directly through the web application or integrate its compression tools into another product through the developer API.
Dislify handles the complete processing workflow:
  1. Upload a media file.
  1. Select a compression preset.
  1. Track the job while it is processed.
  1. Download the optimized result.
  1. Receive completion events through webhooks when using the API.
02

What you can compress

Dislify currently supports three primary media categories.

Video

Video files are converted into widely supported MP4 outputs using H.264 video and AAC audio.
The processing worker can adjust:
Video bitrate
Audio bitrate
Resolution
Encoding preset
Pixel format
Fast-start metadata
These settings help produce files that are smaller and easier to play across browsers, mobile devices, and messaging platforms.

Images

Image files are optimized and exported as JPEG files.
During processing, Dislify can reduce image dimensions and encoding quality to lower the final file size while keeping the image visually usable.

Audio

Audio files are converted into optimized MP3 outputs.
Dislify adjusts the audio bitrate based on the selected compression preset, making the result more suitable for sharing, previews, voice recordings, and general playback.
03

Compression presets

Every compression job uses one of three presets.

Discord Safe

Discord Safe is designed for files that need to fit within a defined upload-size target.
Dislify calculates an appropriate output target and progressively retries stronger compression settings when necessary.
Use this preset for:
Gameplay clips
Screen recordings
Memes
Short videos
Audio clips
Files intended for messaging platforms

Balanced

Balanced reduces file size while preserving more of the original quality.
Use this preset when you want meaningful compression without applying the strongest available settings.
It is suitable for:
Website media
Product previews
Portfolio content
General file sharing
Internal team uploads

Maximum Compression

Maximum Compression prioritizes the smallest practical output.
It applies more aggressive bitrate and quality targets than the other presets.
Use it when:
File size matters more than visual fidelity
Upload limits are strict
Network bandwidth is limited
The media is intended only as a preview
04

How processing works

Dislify uses an asynchronous processing architecture.
When a file is submitted, the application creates a compression job and sends it to a background worker. The request does not remain open while FFmpeg processes the media.
The general workflow is:
Plain text
Upload
Job created
Added to Redis queue
Celery worker receives the job
FFmpeg processes the media
Output uploaded to private R2 storage
Application receives the final status
Download becomes available
This architecture allows long-running compression jobs to continue independently from the web application.
05

Job statuses

A compression job can have one of the following statuses.

Queued

The job has been accepted and is waiting for an available worker.

Processing

The worker is currently compressing the file.
The dashboard may display progress updates while processing continues.

Completed

The optimized output was created successfully and uploaded to storage.
The job now includes:
Output filename
Output size
Reduction percentage
Download route
Expiration time

Failed

The job could not be completed.
A job may fail because:
The input file is missing or empty
The media type is unsupported
FFmpeg could not decode the file
The selected target could not be reached
The generated output was not smaller than the original
The worker could not access storage or notify the application
The recorded error message is available in the dashboard and API response.
06

Private file storage

Uploaded files and compressed outputs are stored in a private Cloudflare R2 bucket.
The bucket is not publicly exposed.
When an authorized user requests a download, Dislify:
  1. Verifies access to the compression job.
  1. Confirms that the stored output exists.
  1. Creates a temporary signed download URL.
  1. Redirects the browser to the file.
Signed storage URLs expire after a short period and should not be stored permanently.
Applications should store the Dislify job ID or download route instead.
07

Web application

The Dislify dashboard provides a visual interface for managing compression activity.
From the dashboard, users can:
Upload media
Select compression presets
Track processing progress
Browse compression history
View original and output sizes
Download completed files
Retry failed jobs
Recompress previous files
Review usage
Manage subscriptions
Create API keys
Configure webhooks
The dashboard is the easiest way to test Dislify before integrating the API.
08

Developer API

The developer API allows external applications to create and monitor compression jobs programmatically.
Typical integrations include:
Discord bots
Community platforms
Content-management systems
Creator tools
Upload portals
Media-processing workflows
Internal automation systems
API access requires a valid API key with the appropriate scopes.
Example request:
Plain text
curl --request POST \
--url https://dislify.com/api/v1/jobs \
--header "Authorization: Bearer YOUR_API_KEY" \
--form "file=@./video.mp4" \
--form "compression=balanced"
A successful request creates a job and returns its identifier.
Plain text
{
"id": "job_123",
"status": "queued",
"progress": 0
}
The client can then retrieve the latest job status using the returned ID.
09

API-key scopes

API keys use scopes to limit what each key can access.
Available scopes include:
Plain text
jobs:create
jobs:read
webhooks:create
webhooks:read
Only grant the scopes required by the integration.
API keys should never be exposed in browser-side code or committed to source control.
10

Webhooks

Webhooks allow Dislify to notify another application when an event occurs.
Supported events include:
Plain text
upload.received
job.completed
job.failed
quota.updated
Webhook payloads are signed using a secret associated with the endpoint.
Your server should verify the signature before trusting or processing the payload.
A webhook integration is preferable to repeatedly polling job status when processing many files.
11

Usage and quotas

Usage limits depend on the account plan.
Dislify records API activity and compression usage so users can review consumption from the developer dashboard.
When an account reaches its configured quota, additional API requests may be rejected until the usage period resets or the plan is upgraded.
Applications should handle quota errors and display a useful message to the user.
12

File expiration

Compressed outputs are not intended to remain in storage permanently.
Every job includes an expiration time. After that time, the file may be removed during automated cleanup.
Download or move important outputs before they expire.
Dislify should be treated as a processing and delivery service—not as permanent file storage.
13

Authentication and security

The Dislify application uses authenticated sessions for dashboard access and scoped API credentials for integrations.
Security controls include:
Private object storage
Temporary signed URLs
Hashed API keys
Scoped permissions
Signed webhook payloads
Internal worker secrets
Upload-size limits
File-type validation
Account usage limits
Sensitive credentials must remain server-side.
Never expose the following values publicly:
Plain text
STRIPE_SECRET_KEY
R2_SECRET_ACCESS_KEY
WORKER_API_SECRET
INTERNAL_WORKER_SECRET
API key secrets
Webhook signing secrets
14

Next steps

Continue with the following documentation:
Quickstart — Compress your first file through the dashboard.
Authentication — Create and manage API credentials.
Create a job — Submit a file through the developer API.
Retrieve a job — Check status and access completed output.
Webhooks — Receive signed job events.
Errors — Handle validation, processing, and quota failures.


Ready when you are

Put the guide into practice.

Open the compressor for a manual workflow or connect the developer API for automation.