Image Uploader to API
pendingby babarot
Upload images to any API endpoint on drag & drop or paste, and insert the public URL as Markdown.
Image Uploader to API
An Obsidian plugin that uploads images to any API endpoint when you drag & drop or paste them, and inserts the public URL as Markdown.
Features
- Drag & Drop — Drop images into the editor to upload automatically
- Paste — Paste images from clipboard (Cmd/Ctrl+V) to upload
- Any API — Works with any image hosting API (custom server, Imgur, Cloudflare Images, etc.)
- Configurable Headers — Add any HTTP headers (API keys, auth tokens, etc.)
- Configurable Response Parsing — Extract the image URL from any JSON response structure using dot-notation
- Multiple Images — Upload multiple images at once in parallel
- Upload Indicator — Shows
![Uploading...]()placeholder while uploading
Supported Formats
Images: .jpg, .jpeg, .png, .gif, .webp, .svg, .avif, .ico
Documents: .pdf (opt-in via settings)
Images are inserted as . PDF handling is controlled by the PDF handling setting:
- Save locally — Obsidian's default behavior (saved to vault attachment folder)
- Always upload to API — Uploaded and inserted as
[filename](url) - Ask each time — A dialog asks whether to upload or save locally
Unsupported file types are left to Obsidian's default behavior.
Settings
| Setting | Description |
|---|---|
| API Endpoint | The URL to POST the image to |
| File Field Name | The multipart/form-data field name for the file (e.g. file, image) |
| Image URL Path | Dot-notation path to extract the URL from the JSON response (e.g. url, data.link) |
| PDF handling | Choose how PDFs are handled: save locally (default), always upload, or ask each time |
| HTTP Headers | Key-value pairs sent with the request (e.g. X-API-Key, Authorization) |
Examples
Custom Upload API
| Setting | Value |
|---|---|
| API Endpoint | https://example.com/api/upload |
| File Field Name | file |
| Image URL Path | url |
| Headers | X-API-Key = your-api-key |
Response: {"url": "https://example.com/files/image.png", "size": 204800}
Imgur
| Setting | Value |
|---|---|
| API Endpoint | https://api.imgur.com/3/image |
| File Field Name | image |
| Image URL Path | data.link |
| Headers | Authorization = Client-ID your-client-id |
Comparison with Image Uploader
This plugin is inspired by Image Uploader but addresses several limitations:
| Image Uploader to API | Image Uploader | |
|---|---|---|
| Drag & Drop | Yes | No (paste only) |
| Multiple images at once | Yes (parallel upload) | No (single file only) |
| Header configuration | Key-value UI | Raw JSON textarea |
| HTTP client | Obsidian requestUrl (no CORS issues) | axios |
| PDF upload support | Yes (configurable) | No |
| External dependencies | None | axios, object-path, compressorjs |
Network Usage
This plugin sends image files over the network to the API endpoint you configure in the settings. No data is sent to any service unless you explicitly set an endpoint. The plugin itself does not collect any telemetry or analytics.
Installation
From Community Plugins (Recommended)
- Open Settings → Community plugins → Browse
- Search for "Image Uploader to API"
- Click Install, then Enable
Manual
- Download
main.js,manifest.json, andstyles.cssfrom the latest release - Create a folder
image-uploader-to-apiin your vault's.obsidian/plugins/directory - Place the downloaded files into that folder
- Enable the plugin in Settings → Community plugins
Development
npm install
npm run dev # watch mode
npm run build # production build
License
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.