Support

This website is an entirely free and ad-less service sustained without profit in mind.
Every donation is greatly appreciated!

Stripe - USD (Card, Paypal, Apple, Google, USA Bank):
https://donate.stripe.com/8x26oI2nQenr8Sv9FM1B600

Stripe - EUR (Card, Paypal, Apple, Google, EU Bank):
https://donate.stripe.com/14A7sM6E6a7bfgTdW21B601

Ko-fi (Card, Paypal):
https://ko-fi.com/MaldEntertainmentStudio

segs.lol


Settings
ShareX
Chatterino

Settings; External Tools; Image Uploader

Request URL: https://segs.lol/api/upload
Form field: file
Image link: {link}
Deletion link: {delete}
DankChat

Native Twitch chat client for mobile --
Same configuration format as Chatterino, uploader defaults to kappa.lol.

CLI
Bash
curl "https://segs.lol/api/upload" -F "file=@/path/to/file.png"
PowerShell
curl "https://segs.lol/api/upload" -F "file=@C:\path\to\file.png"
API
Upload
curl "https://segs.lol/api/upload" -F "file=@/home/supa/kappa.png"
Response
content-type: application/json
{
    "id": "${id}",
    "ext": ".png",
    "type": "image/png",
    "checksum": "${md5}",
    "key": "${key}",
    "origin": "https://segs.lol",
    "private": false,
    "link": "https://segs.lol/${id}",
    "delete": "https://segs.lol/delete?${key}"
}
SDK examples
Node.js (fetch)
import fs from "node:fs";
import FormData from "form-data";

const filePath = "/path/to/file.png";
const form = new FormData();
form.append("file", fs.createReadStream(filePath));

const res = await fetch("https://segs.lol/api/upload", {
  method: "POST",
  headers: { Authorization: "Bearer {token}" },
  body: form
});
console.log(await res.json());
Python (requests)
import requests

file_path = "/path/to/file.png"
with open(file_path, "rb") as f:
    res = requests.post(
        "https://segs.lol/api/upload",
        headers={"Authorization": "Bearer {token}"},
        files={"file": f},
    )
print(res.json())
PHP (cURL)
<?php
$file = new CURLFile("/path/to/file.png");
$ch = curl_init("https://segs.lol/api/upload");
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => ["Authorization: Bearer {token}"],
  CURLOPT_POSTFIELDS => ["file" => $file],
  CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Auth
Authorization: Bearer {token}
X-API-Key: {token}
https://segs.lol/api/upload?token={token}
Private upload
curl "https://segs.lol/api/upload" -F "file=@/path/to/file.png" -F "visibility=private" -F "password=secret"
Access
https://segs.lol/{id}?pw=secret
X-File-Password: secret
Delete
curl "https://segs.lol/api/delete?key=$fileKey"
Response
content-type: application/json
{
    "success": true
}
Object
curl "https://segs.lol/api/object?id=$fileId"
Response
content-type: application/json
{
    "id": "${id}",
    "type": "${mimetype}",
    "date": "${Number(unixUploadTimeMS)}",
    "size": "${Number(bytes)}",
    "checksums": {
        "md5": "${md5}"
    },
    "name": "${filename} (nullable)"
}
Download options
https://segs.lol/{id}?skip-cd=true
Limits & Errors
Rate limits
Upload 20/min, Delete 60/min, Object 120/min
Errors
400 bad request, 401 unauthorized, 403 forbidden, 404 not found, 413 file too large, 429 too many requests, 500 server error

Looking for a cool song/video queue manager for your Twitch chat?
Either way, check out chat.vote/playlist!