Snapshot works well as a custom ShareX uploader. Download ShareX from the official website: https://getsharex.com/.
Snapshot generates a ready-to-import ShareX config on every start. With the Docker and Compose setup, it is written to:
data/snapshot.sxcu
The file contains the configured BASE_URL and API_KEY, so keep it private.
It is overwritten on restart when configuration changes.
Generate it manually without starting the server:
make configOutside Docker, this writes snapshot.sxcu to the current working directory.
Create a new custom uploader with these settings:
| Field | Value |
|---|---|
| Request URL | https://img.example.com/upload |
| Method | POST |
| Body | Multipart form data |
| File form name | file |
| Header | Authorization: Bearer your-api-key |
| URL field | data.url |
For a local test server, use:
http://localhost:3000/upload
ShareX should read the final URL from data.url:
{
"success": true,
"status": "success",
"message": "File uploaded successfully",
"data": {
"url": "https://img.example.com/abc123XYZ9.png"
}
}401 Unauthorized
The authorization header is missing or does not match API_KEY in .env.
400 File type is not permitted
Add the extension to ALLOWED_EXTENSIONS or upload a supported file type.
400 Content type is not permitted
The MIME type or file signature does not match the configured allow-list.
413 Uploaded file is too large
Increase MAX_FILE_SIZE_BYTES or upload a smaller file.