#Getting Started
uldl.sh is a text and file upload service optimized for terminal usage. Upload files via curl, get a shareable URL back. No browser required.
#Uploading
There are three ways to upload content to uldl.sh. All methods POST to your username endpoint.
Method 1: Pipe from stdin
Pipe any command output directly to uldl.sh.
Method 2: Multipart file upload
Upload a file with its original filename preserved.
Method 3: Raw body upload
Upload file contents directly as the request body.
#Downloading
Access your blobs via GET request to the returned URL.
#Request Headers
Customize your uploads with these optional headers.
| Header | Description | Example |
|---|---|---|
| X-Title | Set blob title | "My Config File" |
| X-Description | Set description | "Production settings" |
| X-Visibility | public or private | "private" |
| X-Language | Force syntax highlighting | "python" |
| X-Category | Set category | "config" |
| X-Tags | Comma-separated tags | "docker,config" |
| X-Filename | Override filename (raw uploads) | "script.sh" |
#Visibility & Privacy
Blobs are private by default. Public blobs can be accessed by anyone with the URL. Private blobs require your authentication key.
#Authentication
Your access key is a unique 12-character token generated when you sign up. Find it in your dashboard by clicking the curl command button. Use it to access private blobs and delete blobs.
#Versioning
Every blob maintains a version history. When you update a blob through the dashboard, a new version is created. The latest version is always served by default.
Version history can be viewed and managed from your dashboard.
#Deleting Blobs
Delete blobs via DELETE request with your authentication key.
This removes the blob and all its versions. The storage space is immediately freed.
#Response Headers
uldl.sh returns useful metadata in response headers.
| Header | Description |
|---|---|
| X-Blob-Id | Unique blob identifier |
| X-Slug | URL slug |
| X-Storage-Used | Current storage usage (bytes) |
| X-Storage-Remaining | Remaining quota (bytes) |
| X-Storage-Freed | Bytes freed on delete |
| X-Blob-Title | Blob title (on download) |
#Error Handling
uldl.sh uses standard HTTP status codes.
| Status | Message | Cause |
|---|---|---|
| 400 | No file provided | Multipart request missing file |
| 400 | Empty file | Zero-byte upload |
| 401 | Unauthorized | Missing/invalid key for private blob |
| 404 | User not found | Invalid username |
| 404 | Not found | Invalid slug |
| 413 | File too large | Exceeds 4.5MB limit |
| 507 | Storage quota exceeded | User quota full |
#Limits & Quotas
Current service limits:
#Real-World Examples
Common use cases and shell integrations.