Документация API
API YourImageShare позволяет загружать, просматривать и удалять файлы из кода. Это небольшой JSON/REST API: SDK не нужен, достаточно HTTP-клиента и API-ключа. Также доступны официальные библиотеки для JavaScript, Python и MCP.
Все клиентские библиотеки и перечисленные ниже инструменты имеют открытый исходный код. Смотрите код, сообщайте о проблемах и вносите свой вклад в нашем официальном репозитории на GitHub: github.com/yourimageshare/yourimageshare.
Базовый URL: https://yourimageshare.com/api · Формат: JSON в запросах и ответах, кроме загрузок, которые идут как multipart/form-data · Авторизация: API-ключ в каждом запросе. · Машиночитаемая спецификация: /openapi.json (OpenAPI 3.1) для агентов и инструментов генерации кода, которым не нужно разбирать эту страницу.
Как получить API-ключ
Войдите в аккаунт, откройте Мой аккаунт и перейдите на вкладку API. Там показан ваш ключ и кнопка Regenerate. Пересоздание ключа сразу делает старый недействительным, поэтому сначала обновите его везде, где он используется.
На этой вкладке есть и второй, независимый ключ только для загрузки (Upload-only key). О том, когда использовать его, читайте в совете ниже и в разделе Плагины для форумов.
Авторизация
Передавайте ключ в заголовке. Это предпочтительный способ: строки запроса обычно попадают в журналы доступа, журналы прокси и заголовки Referer:
X-API-Key: YOUR_API_KEY Параметр запроса ?key= тоже работает: он оставлен для совместимости со старыми интеграциями и быстрых разовых команд curl. Если указаны оба способа, приоритет у заголовка.
?key=YOUR_API_KEY Совет: относитесь к ключу как к паролю: любой, у кого он есть, может загружать, просматривать, изменять и удалять файлы в вашем аккаунте. Каждый успешный запрос записывается и отображается в виде графика на вкладке API страницы аккаунта, с разбивкой по дням и типам запросов. Если ключ должен лежать там, где его могут увидеть другие, например в плагине форума или публичном файле конфигурации, используйте вместо него ключ только для загрузки с той же вкладки: он умеет только загружать, а просмотр списка, получение, изменение и удаление с ним отклоняются с ошибкой 401.
Эндпоинты
Загрузка, просмотр списка и удаление используют общую авторизацию и общие лимиты запросов; большие файлы сначала можно отправить по частям.
POST /api — загрузить файл
Загружает один файл для авторизованного аккаунта.
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
uploads | file | одно из этих трёх | Файл для загрузки, до 100 МБ (лимит одного запроса через нашу сеть). Один файл на запрос: пакетная загрузка нескольких файлов этим эндпоинтом не поддерживается. |
url | string | Публичная http(s)-ссылка на изображение или видео. Мы скачиваем файл сами, поэтому подходят файлы до 200 МБ. | |
upload_id | string | Файл, заранее отправленный по частям через POST /api/chunk, до 200 МБ. | |
filename | string | нет | Вместе с upload_id: исходное имя файла. |
expires_in | integer | нет | Автоматически удалить загрузку через указанное число секунд (от 60 до 31 536 000, то есть от 1 минуты до 1 года). Если не указывать, загрузка обычная и постоянная. |
allow_duplicate | boolean | нет | Сохранить новую копию, даже если ваш аккаунт уже загружал точно такой же файл (см. duplicate ниже). |
keep_original | boolean | нет | Сохранить изображение точно таким, как оно загружено. Без этого параметра JPG/PNG-файлы больше 1 МБ оптимизируются в WebP. Метаданные, например GPS, удаляются в любом случае. |
visibility | string | нет | unlisted (по умолчанию): файл и его страница работают для всех, у кого есть ссылка, но нигде не показываются в списках. private: только файл; ссылка на страницу сразу перенаправляет всех, кроме вас, на сам файл (без комментариев, реакций и рекламы). public: показывается на сайте и индексируется. |
title | string | нет | До 90 символов, показывается на странице загрузки. |
description | string | нет | До 500 символов. |
Допустимые типы: изображения JPG, PNG, GIF, WEBP, AVIF, BMP, TIFF, HEIC или HEIF; видео MP4, WEBM, AVI, MOV, MKV, MPEG, WMV, FLV или 3GP (точный список со временем может расширяться). HEIC/HEIF и TIFF сохраняются как WebP, видео не в формате MP4/WebM конвертируется в MP4, а крупные JPEG/PNG-изображения вскоре после загрузки преобразуются в WebP, если это заметно уменьшает их размер. Максимальный размер: 200 МБ; слишком большие или нечитаемые файлы отклоняются с ошибкой 422.
Ответ — 200 OK:
{
"type": "success",
"msg": "success",
"data": {
"id": "aB3xY9qRz1",
"type": "image",
"path": "https://i.yourimageshare.com/aB3xY9qRz1.png",
"src": "https://yourimageshare.com/ib/aB3xY9qRz1.png",
"direct": "https://yourimageshare.com/ib/aB3xY9qRz1",
"thumb": "https://i.yourimageshare.com/thumb-aB3xY9qRz1.webp",
"width": 1920,
"height": 1080,
"size": 482113,
"locked": false,
"visibility": "unlisted",
"title": null,
"description": null,
"expires_at": null,
"duplicate": false,
"delete_url": "https://yourimageshare.com/delete#iV3x...k9"
}
} | Поле | Описание |
|---|---|
id | Уникальный идентификатор файла. |
type | image или video. |
path | Адрес файла в хранилище в том виде, в каком он загружен. Вскоре после конвертации (WebP/MP4) он может измениться, поэтому сохраняйте src, а не path. |
src | Постоянная прямая ссылка на файл: всегда открывает актуальный файл, подходит для src в <img>/<video> и для сохранения. |
direct | Страница файла на YourImageShare (название, описание, комментарии, варианты поделиться). |
thumb | Миниатюра WebP шириной 280px (для видео — его первый кадр) или null. |
width, height | Отображаемый размер в пикселях (с учётом поворота; для видео — размер кадра) или null, если он неизвестен. |
size | Размер сохранённого файла в байтах. |
locked | true, если загрузка защищена паролем. |
visibility | private, unlisted или public (см. поле запроса выше). |
title, description | Как заданы, или null. Текст проходит ту же модерацию, что и на сайте. |
delete_url | Только для новых загрузок: личная ссылка, по которой загрузку можно удалить без API-ключа. Показывается один раз (хранится только хеш), поэтому сохраните её, если она вам нужна. |
expires_at | Время автоматического удаления загрузки в формате ISO 8601 или null, если срок не ограничен. |
duplicate | true, если ваш аккаунт уже загружал точно такой же файл: возвращается та загрузка, а ничего нового не сохраняется. Не применяется к загрузкам с истекающим сроком и при allow_duplicate=1. |
Загрузки с истекающим сроком: когда наступает expires_at, файл удаляется из хранилища, а страница загрузки примерно через 5 минут начинает отвечать 410 Gone. Это нельзя отменить или продлить позже: удалите файл раньше через эндпоинт DELETE, если он нужен вам недолго, или загрузите заново с новым expires_in, если срок нужен дольше.
POST /api/chunk — большие файлы
Один запрос может содержать не более 100 МБ. Для файлов побольше (до 200 МБ) или чтобы сделать каждый запрос небольшим при медленном соединении, отправляйте файл частями не более 5 МБ, а затем завершите загрузку запросом POST /api:
- Выберите идентификатор загрузки: 32 случайных шестнадцатеричных символа.
- Для каждой части отправьте
POST /api/chunk(multipart/form-data) с полямиupload_id,index(с нуля),total(число частей) и байтами вchunk. Ответ:{"type": "success", "chunk_size": 5242880}. - Отправьте
POST /apiсupload_idиfilenameвместоuploadsи любыми другими полями загрузки. Ответ — это обычный ответ на загрузку.
Части незавершённой загрузки удаляются через 2 часа. В лимиты загрузки засчитывается только завершающий POST /api.
GET /api/{id} и PATCH /api/{id} — одна загрузка
GET возвращает одну из ваших загрузок с теми же полями, что и в списке ниже. PATCH меняет её visibility, title или description (поля формы или JSON; пустое название или описание очищает значение) и возвращает обновлённую загрузку. Для обоих нужен полный API-ключ; 404, если такой загрузки в вашем аккаунте нет.
curl -X PATCH https://yourimageshare.com/api/aB3xY9qRz1 \
-H "X-API-Key: YOUR_API_KEY" -d visibility=public -d title="Sunset" POST /api/{id}/replace — заменить файл
Подменяет файл в одной из ваших загрузок, сохраняя её id, страницу и все ссылки. Подходит любой разрешённый тип, даже другой (изображение может стать видео). Отправьте новый файл как uploads (или upload_id файла, отправленного по частям через POST /api/chunk); keep_original работает так же, как при загрузке. К новому файлу применяются те же проверки и конвертации, что и к новой загрузке, а предыдущая версия удаляется. Нужен полный API-ключ; 404, если такой загрузки в вашем аккаунте нет, и 409, если она защищена паролем или ограничена по числу просмотров.
curl -X POST https://yourimageshare.com/api/aB3xY9qRz1/replace \
-H "X-API-Key: YOUR_API_KEY" -F uploads=@new-version.png GET /api — список ваших загрузок
Возвращает постраничный список загрузок авторизованного аккаунта (из любого источника: API, сайта или редактора), сначала новые, по 50 на страницу.
| Параметр | Где | Обязательный | Описание |
|---|---|---|---|
page | query | нет | Номер страницы, по умолчанию 1. |
Ответ — 200 OK:
{
"type": "success",
"data": [
{
"id": "aB3xY9qRz1",
"type": "image",
"title": null,
"path": "https://i.yourimageshare.com/aB3xY9qRz1.webp",
"src": "https://yourimageshare.com/ib/aB3xY9qRz1.webp",
"direct": "https://yourimageshare.com/ib/aB3xY9qRz1",
"thumb": "https://i.yourimageshare.com/thumb-aB3xY9qRz1.webp",
"width": 1920,
"height": 1080,
"size": 482113,
"locked": false,
"visibility": "unlisted",
"description": null,
"expires_at": null,
"created_at": "2026-07-23T15:43:28+01:00"
}
],
"meta": { "current_page": 1, "last_page": 1, "total": 1 }
} Поля здесь означают то же, что и в ответе на загрузку выше (для загруженного с паролем файла path и thumb — это недолговечные подписанные ссылки). Чтобы получить одну загрузку по её id, используйте GET /api/{id}.
DELETE /api/{id} — удалить загрузку
Безвозвратно удаляет одну из загрузок авторизованного аккаунта. Через API это нельзя отменить. {id} — значение, возвращаемое как id эндпоинтами загрузки и списка.
Ответ — 200 OK:
{ "type": "success", "msg": "Deleted." } 404, если в вашем аккаунте нет загрузки с таким id (она либо никогда вам не принадлежала, либо уже удалена).
POST /api/compare — слайдер «до/после»
Создаёт сравнение «до/после» из двух ваших загруженных изображений: страницу со слайдером по адресу /c/{id}, которую можно встроить и на любой сайт. Ключ только для загрузки тоже подходит. Передайте before и after (id загрузок, обязательно), а также при желании title, label_before и label_after (по умолчанию «Before» и «After»).
Ответ — 201 Created:
{
"type": "success",
"id": "P7uAYy04VA",
"url": "https://yourimageshare.com/c/P7uAYy04VA",
"embed_url": "https://yourimageshare.com/embed/c/P7uAYy04VA",
"embed": { "script": "<blockquote class=\"YISEmbed\" ...", "iframe": "<iframe ..." }
} 422, если какой-либо из id не относится к вашим загрузкам изображений (видео и изображения, защищённые паролем, использовать нельзя).
Лимиты запросов
У каждого API-ключа есть независимые квоты в минуту и в сутки, а также более грубый суточный лимит на IP-адрес: он страхует от перебора одним IP нескольких ключей. Загрузка, получение списка и удаление используют общие лимиты.
| Период | Лимит по умолчанию | Область действия |
|---|---|---|
| В минуту | 20 запросов | на API-ключ |
| В сутки | 500 запросов | на полный API-ключ |
| В сутки | 2 000 запросов | на ключ только для загрузки (плагины, переносящие целые медиатеки) |
| В сутки | 2 000 запросов | на IP-адрес |
| В минуту | 300 частей | на API-ключ, только для POST /api/chunk |
Эти лимиты могут меняться. Каждый ответ содержит стандартные заголовки лимитов:
X-RateLimit-Limit: 20
X-RateLimit-Remaining: 14 При превышении лимита возвращается 429 с заголовком Retry-After, в котором указано, сколько секунд нужно подождать.
Ошибки
Все ответы с ошибкой имеют одинаковую структуру независимо от эндпоинта и причины:
{ "type": "error", "errors": "A human-readable description of what went wrong." } | Статус | Значение |
|---|---|
| 401 | API-ключ отсутствует или недействителен. |
| 403 | Аккаунту или вашему текущему IP закрыт доступ к загрузке. |
| 404 | В этом аккаунте нет загрузки с таким id (получение, изменение, удаление). |
| 413 | Запрос больше 100 МБ. Отправьте файл по частям (POST /api/chunk) или передайте ссылку на него в url (до 200 МБ). |
| 422 | Ошибка проверки: не передан файл или ссылка, неподдерживаемый тип файла, нечитаемые данные изображения, размеры больше лимита 30000x30000px, файл больше 200 МБ, незавершённый или просроченный upload_id либо url, который не удалось скачать (в сообщении указана причина). |
| 429 | Превышен лимит запросов; см. раздел Лимиты запросов выше. |
| 500 | Непредвиденный сбой на стороне сервера. Можно безопасно повторить запрос. |
Клиентские библиотеки
Официальные SDK, которые оборачивают описанные выше эндпоинты, возвращают типизированные результаты и выбрасывают исключения при ошибках API, избавляя вас от работы с сырым HTTP.
JavaScript / TypeScript
Без зависимостей, работает в Node.js и в браузерах. Также доступна в JSR как @yourimageshare/yourimageshare — npx jsr add @yourimageshare/yourimageshare; тот же исходный код, опубликованный сразу как TypeScript.
npm install yourimageshare Python
Одна зависимость (requests), Python 3.8+.
pip install yourimageshare PHP
Без зависимостей Composer (использует собственное расширение curl в PHP), PHP 7.4+. Исходный код на GitHub.
composer require yourimageshare/yourimageshare-php Go
Без зависимостей (только стандартная библиотека), Go 1.18+. Полную справку смотрите на pkg.go.dev.
go get github.com/yourimageshare/yourimageshare/go Rust
Две зависимости (ureq для блокирующего HTTP — без асинхронной среды выполнения — и serde), Rust 1.70+. Исходный код на GitHub.
cargo add yourimageshare Ruby
Без зависимостей от гемов (стандартные Net::HTTP и json), Ruby 2.7+. Исходный код на GitHub.
gem install yourimageshare .NET
Одна зависимость (собственный System.Text.Json от Microsoft), целевая платформа netstandard2.0, поэтому работает и в .NET Framework, и в современном .NET. Исходный код на GitHub. Собрана и проверена на этом действующем API; публикация в NuGet скоро.
dotnet add package YourImageShare Dart / Flutter
Одна зависимость (http, собственный пакет команды Dart), Dart 2.17+. Исходный код на GitHub. Собрана и проверена на этом действующем API; публикация в pub.dev скоро.
dart pub add yourimageshare Elixir
Одна зависимость (Req), Elixir 1.14+. Возвращает кортежи {:ok, result}| {:error, reason} — прямой аналог обработки ошибок этого API в остальных SDK — а также варианты с восклицательным знаком, которые выбрасывают исключения. Исходный код на GitHub, документация на HexDocs.
{:yourimageshare, "~> 1.1"} MCP-сервер
Для ИИ-агентов, пишущих код (Claude Code, Cursor и других инструментов, совместимых с MCP): вставляйте скриншот в отчёт об ошибке, описание PR или обращение в поддержку как обычную ссылку, а не как base64-блок или ручную загрузку. Так же работает с Claude Desktop и любым другим MCP-клиентом.
Размещённый сервер, ничего устанавливать не нужно: добавьте его как удалённый MCP-сервер (в Claude: Settings › Connectors › Add custom connector; также в ChatGPT, Cursor, VS Code и других клиентах, которым нужен адрес сервера), указав API-ключ в URL:
https://yourimageshare.com/mcp?key=YOUR_API_KEY Клиенты, позволяющие задавать заголовки, могут использовать https://yourimageshare.com/mcp с Authorization: Bearer YOUR_API_KEY. URL с вашим ключом работает как пароль: храните его в тайне, а если он утёк, получите новый ключ в разделе Мой аккаунт. На размещённом сервере upload_image принимает публичную ссылку (до 200 МБ) или встроенное содержимое в base64 (до 15 МБ). Без ключа https://yourimageshare.com/mcp всё равно загружает анонимно, как и сайт: только unlisted или private, лимиты ниже, а загрузка удаляется по возвращаемой ссылке delete_url. Остальным инструментам нужен ключ.
Локально: запустите напрямую через npx, без установки (так он может читать и файлы с вашего диска):
npx yourimageshare-mcp Инструменты: upload_image (локальный файл, встроенное содержимое или ссылка, до 200 МБ, с необязательными видимостью, названием и автоудалением), list_uploads, get_upload, update_upload и delete_upload.
Также есть в официальном реестре MCP (как io.github.yourimageshare/yourimageshare) и в каталогах Smithery и Glama, если ваш MCP-клиент устанавливает серверы оттуда.
Впервые слышите про MCP? Подробная инструкция: как подключить Claude и ChatGPT к этому API по MCP.
Все десять распространяются по лицензии MIT. Нет официальной библиотеки для вашего языка? Прямые вызовы API показаны в примерах кода ниже.
Примеры кода
curl
# Upload a file
curl "https://yourimageshare.com/api" \
-H "X-API-Key: YOUR_API_KEY" \
-F "uploads=@/path/to/photo.jpg"
# Upload from a link (files up to 200MB; one direct upload request stops at 100MB -
# bigger files go in pieces, see Large Files above)
curl "https://yourimageshare.com/api" \
-H "X-API-Key: YOUR_API_KEY" \
-F "url=https://example.com/video.mp4"
# Upload a file that auto-deletes after 1 hour
curl "https://yourimageshare.com/api" \
-H "X-API-Key: YOUR_API_KEY" \
-F "uploads=@/path/to/photo.jpg" \
-F "expires_in=3600"
# List uploads
curl "https://yourimageshare.com/api" -H "X-API-Key: YOUR_API_KEY"
# Upload a file without a page of its own (file only) and give it a title
curl "https://yourimageshare.com/api" \
-H "X-API-Key: YOUR_API_KEY" \
-F "uploads=@/path/to/photo.jpg" \
-F "visibility=private" \
-F "title=Sunset"
# Look up one upload, then make it public
curl "https://yourimageshare.com/api/aB3xY9qRz1" -H "X-API-Key: YOUR_API_KEY"
curl -X PATCH "https://yourimageshare.com/api/aB3xY9qRz1" \
-H "X-API-Key: YOUR_API_KEY" -d "visibility=public"
# Delete an upload
curl -X DELETE "https://yourimageshare.com/api/aB3xY9qRz1" -H "X-API-Key: YOUR_API_KEY" JavaScript (fetch)
const API_KEY = 'YOUR_API_KEY';
const BASE = 'https://yourimageshare.com/api';
async function uploadFile(file) {
const form = new FormData();
form.append('uploads', file);
const res = await fetch(BASE, {
method: 'POST',
headers: { 'X-API-Key': API_KEY },
body: form,
});
const json = await res.json();
if (json.type !== 'success') throw new Error(json.errors);
return json.data;
}
async function listUploads(page = 1) {
const res = await fetch(`${BASE}?page=${page}`, {
headers: { 'X-API-Key': API_KEY },
});
return res.json();
}
async function deleteUpload(id) {
const res = await fetch(`${BASE}/${id}`, {
method: 'DELETE',
headers: { 'X-API-Key': API_KEY },
});
return res.json();
} Python (requests)
import requests
API_KEY = "YOUR_API_KEY"
BASE = "https://yourimageshare.com/api"
HEADERS = {"X-API-Key": API_KEY}
# Upload a file
with open("/path/to/photo.jpg", "rb") as f:
res = requests.post(BASE, headers=HEADERS, files={"uploads": f})
res.raise_for_status()
upload = res.json()["data"]
# List uploads
res = requests.get(BASE, headers=HEADERS, params={"page": 1})
uploads = res.json()
# Delete an upload
res = requests.delete(f"{BASE}/{upload['id']}", headers=HEADERS) PHP (curl)
<?php
$apiKey = 'YOUR_API_KEY';
$base = 'https://yourimageshare.com/api';
// Upload a file
$curl = curl_init($base);
curl_setopt_array($curl, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-API-Key: $apiKey"],
CURLOPT_POSTFIELDS => ['uploads' => new CURLFile('/path/to/photo.jpg')],
CURLOPT_RETURNTRANSFER => true,
]);
$upload = json_decode(curl_exec($curl), true)['data'];
curl_close($curl);
// List uploads
$curl = curl_init("$base?page=1");
curl_setopt($curl, CURLOPT_HTTPHEADER, ["X-API-Key: $apiKey"]);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$uploads = json_decode(curl_exec($curl), true);
curl_close($curl); Go (net/http)
Официальный Go SDK выше уже оборачивает всё это за вас; эта версия без обёртки — для тех, кто не хочет добавлять зависимость.
package main
import (
"bytes"
"encoding/json"
"io"
"mime/multipart"
"net/http"
"os"
)
const apiKey = "YOUR_API_KEY"
const base = "https://yourimageshare.com/api"
func uploadFile(path string) (map[string]any, error) {
file, err := os.Open(path)
if err != nil {
return nil, err
}
defer file.Close()
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("uploads", path)
io.Copy(part, file)
writer.Close()
req, _ := http.NewRequest("POST", base, body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-API-Key", apiKey)
res, err := http.DefaultClient.Do(req)
if err != nil {
return nil, err
}
defer res.Body.Close()
var result map[string]any
json.NewDecoder(res.Body).Decode(&result)
return result, nil
} Инструменты для скриншотов
Расширение для браузера, а также готовые конфигурации и скрипты, которые отправляют скриншоты прямо на YourImageShare без ручной загрузки. Все они загружают файлы через тот же эндпоинт /api, который описан выше.
Расширение для браузера (Chrome и Firefox)
Расширение YourImageShare Capture для Chrome и Firefox обходится без скриптов и файлов конфигурации. Оно снимает видимую область, выделенный мышью фрагмент или всю прокручиваемую страницу, открывает встроенный редактор со стрелками, текстом, размытием/скрытием и другими пометками, а затем скачивает результат, копирует его в буфер обмена или публикует на YourImageShare одним нажатием. Публикация использует тот же эндпоинт /api, описанный выше: один раз добавьте свой API-ключ в настройках расширения, и после каждой публикации вы сразу получаете ссылку, которой можно поделиться. Работает в Chrome для компьютера (и других браузерах на Chromium), Firefox для компьютера и Firefox для Android.
Установить YourImageShare Capture для Firefox Установить YourImageShare Capture для Chrome
ShareX
Скачайте файл пользовательского загрузчика ниже, затем в ShareX откройте Destinations > Custom uploader settings > Import > from file, выберите скачанный .sxcu и замените YOUR_API_KEY в поле Headers своим настоящим ключом. Назначьте его местом назначения для изображений и файлов, и снимки будут загружаться автоматически.
Удаление: ссылка «Delete» для каждой загрузки в ShareX открывает в браузере нашу страницу удаления (одноразовый delete_url загрузки), поэтому снимок можно удалить прямо из истории ShareX. Загрузки также можно удалить в разделе Мой аккаунт. Скачали конфигурацию до октября 2026 года? Скачайте её заново, чтобы получить эту возможность.
Flameshot (Linux)
Небольшой shell-скрипт, который запускает flameshot gui, загружает снимок и копирует ссылку в буфер обмена. Назначьте его на сочетание клавиш в вашем окружении рабочего стола вместо стандартного сочетания Flameshot.
Скачать yis-flameshot-upload.sh
# One-time setup
chmod +x yis-flameshot-upload.sh
export YIS_API_KEY="YOUR_API_KEY" # or add to ~/.config/yourimageshare/api_key
# Then bind this to a hotkey instead of calling flameshot directly:
/path/to/yis-flameshot-upload.sh Greenshot (Windows)
Скрипт PowerShell для встроенного места назначения External command в Greenshot. Совместим с Windows PowerShell 5.1, который входит в состав Windows, дополнительная установка не нужна.
Скачать yis-greenshot-upload.ps1
# One-time setup
setx YIS_API_KEY "YOUR_API_KEY"
# In Greenshot: Preferences > Destinations > External command > Settings
# Command: powershell.exe
# Arguments: -ExecutionPolicy Bypass -File "C:\path\to\yis-greenshot-upload.ps1" "%1" Плагины для форумов
Добавьте настоящую кнопку «Загрузить изображение» рядом с редактором сообщений вашего форума. Каждый плагин загружает файлы через тот же эндпоинт /api, описанный выше, и вставляет BBCode в позицию курсора: без отдельной вкладки и ручного копирования.
Ниже используйте ключ только для загрузки, а не основной API-ключ. Каждый плагин выводит ключ в исходном коде страницы для всех посетителей, а ключ только для загрузки (Мой аккаунт > вкладка API) умеет только загружать: он не позволяет просматривать и удалять ваши загрузки, даже если кто-то скопирует его со страницы.
Загрузки с форума по умолчанию private: изображение работает в сообщении, но YourImageShare не создаёт для него отдельную страницу (без комментариев, реакций и рекламы). В каждом плагине есть настройка для переключения на unlisted, если вы хотите, чтобы страница была и у тех, у кого есть ссылка.
phpBB
Настоящее расширение phpBB 3.2/3.3. Распакуйте в ext/, включите его в разделе Customise > Manage extensions, затем замените YOUR_UPLOAD_ONLY_KEY в файле событий шаблона расширения своим настоящим ключом только для загрузки.
SMF (Simple Machines Forum)
Настоящий пакет SMF: установите его через Admin > Package Manager, затем замените YOUR_UPLOAD_ONLY_KEY в Sources/yis_forumupload.php своим настоящим ключом только для загрузки.
MyBB
Настоящий плагин MyBB 1.8. Скопируйте в inc/plugins/, активируйте в разделе Configuration > Plugins, затем замените YOUR_UPLOAD_ONLY_KEY в файле плагина своим настоящим ключом только для загрузки.
FluxBB, PunBB и ZetaBoards
В них нет формальной системы плагинов, поэтому это небольшой фрагмент кода, который вставляется прямо в шаблон (FluxBB/PunBB) или в панель администратора (ZetaBoards). Полные инструкции по копированию для каждого:
Инструкция для FluxBB Инструкция для PunBB Инструкция для ZetaBoards
Плагин WordPress
Переносите медиатеку на YourImageShare вместо локального диска. Новые изображения и видео автоматически загружаются через тот же эндпоинт /api, описанный выше, локальный файл (и все созданные размеры миниатюр) удаляется после подтверждения загрузки, а все адреса вложений WordPress — в блочном редакторе, миниатюрах записей, галереях, REST API — ведут на файл, размещённый на YourImageShare. Без шорткодов и без изменения привычной работы.
- Массовый перенос существующей медиатеки в фоновом режиме (или командой
wp yis offload --all), а не только новых загрузок - Изображения и видео, уже вставленные в записи, продолжают работать после удаления локальных файлов
- Миниатюры и srcset используют нашу миниатюру 280px, поэтому небольшие блоки с изображениями не загружают файлы полного размера
- Файлы до 200 МБ, которые отправляются по частям, поэтому большие видео не перегружают виртуальный хостинг
- Любой перенесённый файл в любой момент можно вернуть в локальное хранилище
- Столбец в медиатеке показывает, что перенесено, а что пока локально
- Перенесённые файлы хранятся как private: они загружаются везде, где их использует ваш сайт, но у них нет собственной страницы на YourImageShare
Используется ключ только для загрузки, а не основной API-ключ. Необязательный полный API-ключ нужен, только если вы хотите, чтобы перенесённые файлы удалялись с YourImageShare при удалении в WordPress.
Получить на WordPress.org Скачать ZIP
В WordPress: Plugins > Add New, найдите YourImageShare Media Offload, затем нажмите Install и Activate.
Быстрая команда для iPhone и iPad
Загружайте из меню «Поделиться» любого приложения — Фото, Файлов, Safari, скриншота — и получайте ссылку в буфере обмена. Приложение устанавливать не нужно, аккаунт тоже.
Чтобы собрать её самостоятельно в приложении «Команды» (около двух минут):
- Создайте новую команду и назовите её «Upload to YourImageShare». В её настройках включите Show in Share Sheet и разрешите изображения и медиафайлы.
- Добавьте Get Contents of URL: URL
https://yourimageshare.com/api/widget, методPOST, тело запроса Form с двумя полями:uploads(File) = Shortcut Input иclient(Text) =ios-shortcut. - Добавьте Get Dictionary Value для
data, затем ещё одно дляsrc— это и есть прямая ссылка. - Добавьте Copy to Clipboard и Show Notification («Ссылка скопирована»).
Без ключа загрузки анонимные и unlisted, с суточным лимитом. Добавьте заголовок X-API-Key с вашим ключом только для загрузки (Мой аккаунт > API), чтобы загружать в свой аккаунт. В ответе также есть delete_url, если вы хотите сохранить ссылку для удаления.
PicGo и PicList
PicGo и PicList загружают вставленные или перетащенные изображения для редакторов Markdown — Typora, VS Code, Obsidian, Joplin — и подставляют ссылку в ваш текст. Наш плагин делает YourImageShare одним из их хостингов изображений.
- В PicGo или PicList: Plugins, найдите
yourimageshare, установите, затем выберите YourImageShare как сервис загрузки. Из командной строки:picgo install yourimageshare - Или скачайте плагин и импортируйте его как локальный (сначала распакуйте архив)
- Настройки: ключ только для загрузки (необязательно: если пусто — анонимные unlisted-загрузки), видимость и то, что возвращать: прямую ссылку на изображение (для Markdown) или ссылку на страницу
- Возвращаемая ссылка продолжает работать, даже когда крупные изображения позже оптимизируются в WebP
Telegram-бот
Получите ссылку на фото, видео или GIF, не выходя из Telegram. Отправьте файл @YourImageShare_bot, и ссылка сразу придёт обратно — без аккаунта и без API-ключа. Бот загружает файлы через тот же эндпоинт /api, описанный выше.
- Отправьте фото, видео, GIF либо файл изображения или видео; альбом до 10 файлов вернётся одним ответом
- В группе ответьте
/linkна фото или видео, и бот опубликует ссылку на него для всех /autodeleteвключает автоматическое удаление ваших следующих загрузок через 1 час, 1 день, 1 неделю или 30 дней- У каждого результата есть кнопка «Удалить», которая работает только для того, кто загрузил файл
- Ссылки unlisted: файл видят только те, у кого есть ссылка
- Бот отвечает на языке вашего Telegram, если сайт доступен на нём
Сохраните исходное качество: Telegram сжимает фото, отправленные обычным способом. Отправьте их как файл (📎 → File), и загрузится оригинал. Telegram позволяет ботам получать файлы до 20 МБ, поэтому файлы побольше загружайте на сайте.
Discord-бот
Превращайте любое изображение, GIF или видео в Discord в постоянную ссылку. Собственные ссылки на вложения Discord со временем перестают работать, а ссылки YourImageShare — нет. Аккаунт и API-ключ не нужны. Бот загружает файлы через тот же эндпоинт /api, описанный выше.
/uploadс файлом: необязательное автоудаление через 1, 7 или 30 дней и параметр only_me, чтобы показать ссылку только вам- Нажмите правой кнопкой на сообщение → Apps → Rehost on YourImageShare, чтобы перезалить из него до 6 изображений или видео одним ответом
- Добавьте его на сервер или в свой аккаунт, чтобы использовать в любом чате или личных сообщениях
- У каждого результата есть кнопка «Удалить», которая работает только для того, кто загрузил файл
- Ссылки unlisted: файл видят только те, у кого есть ссылка
GitHub Action для Playwright и Cypress
Когда сквозные тесты падают в pull request, узнайте причину, не скачивая архивы с артефактами. Action загружает скриншоты ошибок и визуальные различия и показывает их как изображения в одном комментарии к pull request, который обновляется при каждом запуске.
- Работает с Playwright и Cypress и сам определяет, какой из них использует проект
- Неудачные визуальные сравнения показываются как Expected, Actual и Diff со ссылкой на слайдер «до/после» (
toHaveScreenshotв Playwright; для Cypress — плагины cypress-image-diff-js и cypress-visual-regression) - Когда тесты исправлены, комментарий меняется на «all tests passed»; тот же отчёт попадает в сводку задания
- Скриншоты private (только файлы изображений, без страницы) и по умолчанию удаляются через 30 дней
- Нужен ваш ключ только для загрузки в качестве секрета репозитория
YOURIMAGESHARE_API_KEY; сборку он никогда не ломает
- uses: yourimageshare/playwright-pr-screenshots@v1
if: always()
with:
api-key: ${{ secrets.YOURIMAGESHARE_API_KEY }} Проекты сообщества
Одни из лучших интеграций YourImageShare создают те, кто им пользуется. Эти проекты сделали участники сообщества на основе описанного выше публичного API. Их поддерживают сами авторы, поэтому с вопросами и сообщениями об ошибках обращайтесь к автору на странице проекта.
- YourImageShare Uploads for FlatBB — плагин для форума FlatBB от madromas (MadWay Inc.).
- Добавляет кнопку загрузки в редактор сообщений FlatBB: выберите одно или несколько изображений или видео, и Markdown вставится в позицию курсора
- Вставляет каждую загрузку как миниатюру-ссылку, изображение полного размера или обычную ссылку (видео — как ссылку)
- Загрузки идут через сервер вашего форума с ключом API только для загрузки, поэтому ключ никогда не попадает в браузеры посетителей
- Файлы хранятся на YourImageShare, а не на диске вашего форума, с видимостью по умолчанию на ваш выбор (private, unlisted или public)
- Работает вместе со встроенным загрузчиком FlatBB, с отдельным ограничением размера файла
Спасибо
Большое спасибо всем, кто создаёт проекты на основе YourImageShare и делится ими с другими. Проекты сообщества приносят YourImageShare туда, куда мы сами никогда бы не добрались. Сделали что-нибудь с помощью API? Расскажите нам об этом, и мы с радостью добавим проект сюда.
Из блога
Руководства и пошаговые инструкции для разработчиков
- Мгновенная загрузка скриншотов через ShareX, Flameshot или Greenshot
- Настоящая кнопка загрузки изображений для форума phpBB, SMF или MyBB
- Как использовать MCP: подключите Claude, ChatGPT и ИИ-агентов к YourImageShare
- YourImageShare Capture: расширение для скриншотов в Chrome и Firefox
- Перенесите медиатеку WordPress на бесплатный хостинг изображений
- Telegram-бот YourImageShare: ссылка на любое фото или видео
Готовы попробовать?
Получить API-ключ →