~horsieshare

Secure file hosting with horses.

Features

API Usage

Basic upload:

curl -F "file=@/path/to/file" \
-u username:password \
https://share.tilde.horse/api/upload

With custom retention (hours):

curl -F "file=@/path/to/file" \
-u username:password \
-H "X-Retention: 48" \
https://share.tilde.horse/api/upload

Returns file URL. Response headers include quota information.

Check daily quota:

curl -u username:password \
https://share.tilde.horse/api/quota

Returns JSON with quota usage, including bytes and MB values

Delete files:

curl -X DELETE \
-u username:password \
https://share.tilde.horse/api/delete/FILENAME.EXT

You can only delete your own files

Set custom embed color (Discord, Telegram, etc.):

curl -X POST \
-u username:password \
-H "Content-Type: application/json" \
-d '{"color": "#ff5733"}' \
https://share.tilde.horse/api/embed/color

Supports hex colors: #4a9eff, 4a9eff, #fff, fff

Get your current embed color:

curl -u username:password \
https://share.tilde.horse/api/embed/color

Returns your custom color or the default branding color

Upload Script

CLI script with fzf integration and custom retention:

examples/upload.sh

Setup:

export HORSE_TOKEN=$(echo -n "username:password" | base64)

Usage (outputs URL to stdout for piping):

# Upload and copy to clipboard (Wayland)
./upload.sh /path/to/file | wl-copy

# Upload and copy to clipboard (X11)
./upload.sh /path/to/file | xclip -selection clipboard

# Upload from stdin
cat file.txt | ./upload.sh | wl-copy

# Interactive mode (requires fzf)
./upload.sh | wl-copy

Limits

Default retention: 24 hours

Max file size: 50MB

Daily quota: 500MB per user