Документация 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 — загрузить файл

Загружает один файл для авторизованного аккаунта.

ПолеТипОбязательноеОписание
uploadsfileодно из этих трёхФайл для загрузки, до 100 МБ (лимит одного запроса через нашу сеть). Один файл на запрос: пакетная загрузка нескольких файлов этим эндпоинтом не поддерживается.
urlstringПубличная http(s)-ссылка на изображение или видео. Мы скачиваем файл сами, поэтому подходят файлы до 200 МБ.
upload_idstringФайл, заранее отправленный по частям через POST /api/chunk, до 200 МБ.
filenamestringнетВместе с upload_id: исходное имя файла.
expires_inintegerнетАвтоматически удалить загрузку через указанное число секунд (от 60 до 31 536 000, то есть от 1 минуты до 1 года). Если не указывать, загрузка обычная и постоянная.
allow_duplicatebooleanнетСохранить новую копию, даже если ваш аккаунт уже загружал точно такой же файл (см. duplicate ниже).
keep_originalbooleanнетСохранить изображение точно таким, как оно загружено. Без этого параметра JPG/PNG-файлы больше 1 МБ оптимизируются в WebP. Метаданные, например GPS, удаляются в любом случае.
visibilitystringнетunlisted (по умолчанию): файл и его страница работают для всех, у кого есть ссылка, но нигде не показываются в списках. private: только файл; ссылка на страницу сразу перенаправляет всех, кроме вас, на сам файл (без комментариев, реакций и рекламы). public: показывается на сайте и индексируется.
titlestringнетДо 90 символов, показывается на странице загрузки.
descriptionstringнетДо 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Уникальный идентификатор файла.
typeimage или video.
pathАдрес файла в хранилище в том виде, в каком он загружен. Вскоре после конвертации (WebP/MP4) он может измениться, поэтому сохраняйте src, а не path.
srcПостоянная прямая ссылка на файл: всегда открывает актуальный файл, подходит для src в <img>/<video> и для сохранения.
directСтраница файла на YourImageShare (название, описание, комментарии, варианты поделиться).
thumbМиниатюра WebP шириной 280px (для видео — его первый кадр) или null.
width, heightОтображаемый размер в пикселях (с учётом поворота; для видео — размер кадра) или null, если он неизвестен.
sizeРазмер сохранённого файла в байтах.
lockedtrue, если загрузка защищена паролем.
visibilityprivate, unlisted или public (см. поле запроса выше).
title, descriptionКак заданы, или null. Текст проходит ту же модерацию, что и на сайте.
delete_urlТолько для новых загрузок: личная ссылка, по которой загрузку можно удалить без API-ключа. Показывается один раз (хранится только хеш), поэтому сохраните её, если она вам нужна.
expires_atВремя автоматического удаления загрузки в формате ISO 8601 или null, если срок не ограничен.
duplicatetrue, если ваш аккаунт уже загружал точно такой же файл: возвращается та загрузка, а ничего нового не сохраняется. Не применяется к загрузкам с истекающим сроком и при allow_duplicate=1.

Загрузки с истекающим сроком: когда наступает expires_at, файл удаляется из хранилища, а страница загрузки примерно через 5 минут начинает отвечать 410 Gone. Это нельзя отменить или продлить позже: удалите файл раньше через эндпоинт DELETE, если он нужен вам недолго, или загрузите заново с новым expires_in, если срок нужен дольше.

POST /api/chunk — большие файлы

Один запрос может содержать не более 100 МБ. Для файлов побольше (до 200 МБ) или чтобы сделать каждый запрос небольшим при медленном соединении, отправляйте файл частями не более 5 МБ, а затем завершите загрузку запросом POST /api:

  1. Выберите идентификатор загрузки: 32 случайных шестнадцатеричных символа.
  2. Для каждой части отправьте POST /api/chunk (multipart/form-data) с полями upload_id, index (с нуля), total (число частей) и байтами в chunk. Ответ: {"type": "success", "chunk_size": 5242880}.
  3. Отправьте 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 на страницу.

ПараметрГдеОбязательныйОписание
pagequeryнетНомер страницы, по умолчанию 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." }
СтатусЗначение
401API-ключ отсутствует или недействителен.
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 своим настоящим ключом. Назначьте его местом назначения для изображений и файлов, и снимки будут загружаться автоматически.

Скачать YourImageShare.sxcu

Удаление: ссылка «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 в файле событий шаблона расширения своим настоящим ключом только для загрузки.

Скачать для phpBB

SMF (Simple Machines Forum)

Настоящий пакет SMF: установите его через Admin > Package Manager, затем замените YOUR_UPLOAD_ONLY_KEY в Sources/yis_forumupload.php своим настоящим ключом только для загрузки.

Скачать для SMF

MyBB

Настоящий плагин MyBB 1.8. Скопируйте в inc/plugins/, активируйте в разделе Configuration > Plugins, затем замените YOUR_UPLOAD_ONLY_KEY в файле плагина своим настоящим ключом только для загрузки.

Скачать для MyBB

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.

Кнопка загрузки для любого сайта

Добавьте посетителям кнопку «Загрузить» на любой сайт: в форму комментария, на страницу поддержки, на форум, для которого у нас нет плагина, на статический сайт. Вставьте две строки; серверный код не нужен, всё работает без регистрации.

<a class="yis-upload" href="https://yourimageshare.com/" data-target="#message" data-format="bbcode">Image and video hosting by YourImageShare</a>
<script src="https://yourimageshare.com/w.js" async></script>

Оба атрибута необязательны: без них кнопка показывает ссылки с кнопкой «Копировать». Окно загрузки строится вокруг ссылки.

  • Загрузка происходит прямо на вашей странице: нажмите кнопку, перетащите на неё файлы или вставьте в неё скриншот — можно сразу несколько файлов, с индикатором выполнения и миниатюрой
  • Изображения, вставленные или перетащенные прямо в поле, указанное в data-target (любое текстовое поле, input или редактируемый блок), тоже загружаются, а ссылки добавляются в это поле; без целевого поля они появляются под кнопкой с кнопкой «Копировать»
  • data-format: url (прямая ссылка на файл, по умолчанию), page, bbcode, html или markdown; data-label меняет текст кнопки
  • data-key (необязательно): ваш ключ только для загрузки (Мой аккаунт > API). Тогда загрузки попадают в ваш аккаунт и подчиняются вашим лимитам. Без ключа загрузки анонимные и unlisted, с суточным лимитом на посетителя и на сайт
  • Разработчики могут слушать событие yis:upload в окне загрузки: event.detail.item содержит {id, type, page, url, thumb}
  • Файлы до 95 МБ через кнопку (бо́льшие — на сайте). Наша модерация и условия действуют как обычно; каждый посетитель получает свою ссылку для удаления

Кнопка отрисовывается в собственном изолированном блоке, поэтому CSS вашего сайта не может её сломать. Небольшая ссылка «Image and video hosting by YourImageShare» остаётся видимой внутри окна загрузки.

Быстрая команда для iPhone и iPad

Загружайте из меню «Поделиться» любого приложения — Фото, Файлов, Safari, скриншота — и получайте ссылку в буфере обмена. Приложение устанавливать не нужно, аккаунт тоже.

Чтобы собрать её самостоятельно в приложении «Команды» (около двух минут):

  1. Создайте новую команду и назовите её «Upload to YourImageShare». В её настройках включите Show in Share Sheet и разрешите изображения и медиафайлы.
  2. Добавьте Get Contents of URL: URL https://yourimageshare.com/api/widget, метод POST, тело запроса Form с двумя полями: uploads (File) = Shortcut Input и client (Text) = ios-shortcut.
  3. Добавьте Get Dictionary Value для data, затем ещё одно для src — это и есть прямая ссылка.
  4. Добавьте 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

Скачать плагин для PicGo

Telegram-бот

Получите ссылку на фото, видео или GIF, не выходя из Telegram. Отправьте файл @YourImageShare_bot, и ссылка сразу придёт обратно — без аккаунта и без API-ключа. Бот загружает файлы через тот же эндпоинт /api, описанный выше.

  • Отправьте фото, видео, GIF либо файл изображения или видео; альбом до 10 файлов вернётся одним ответом
  • В группе ответьте /link на фото или видео, и бот опубликует ссылку на него для всех
  • /autodelete включает автоматическое удаление ваших следующих загрузок через 1 час, 1 день, 1 неделю или 30 дней
  • У каждого результата есть кнопка «Удалить», которая работает только для того, кто загрузил файл
  • Ссылки unlisted: файл видят только те, у кого есть ссылка
  • Бот отвечает на языке вашего Telegram, если сайт доступен на нём

Сохраните исходное качество: Telegram сжимает фото, отправленные обычным способом. Отправьте их как файл (📎 → File), и загрузится оригинал. Telegram позволяет ботам получать файлы до 20 МБ, поэтому файлы побольше загружайте на сайте.

Открыть @YourImageShare_bot в Telegram

Discord-бот

Превращайте любое изображение, GIF или видео в Discord в постоянную ссылку. Собственные ссылки на вложения Discord со временем перестают работать, а ссылки YourImageShare — нет. Аккаунт и API-ключ не нужны. Бот загружает файлы через тот же эндпоинт /api, описанный выше.

  • /upload с файлом: необязательное автоудаление через 1, 7 или 30 дней и параметр only_me, чтобы показать ссылку только вам
  • Нажмите правой кнопкой на сообщение → Apps → Rehost on YourImageShare, чтобы перезалить из него до 6 изображений или видео одним ответом
  • Добавьте его на сервер или в свой аккаунт, чтобы использовать в любом чате или личных сообщениях
  • У каждого результата есть кнопка «Удалить», которая работает только для того, кто загрузил файл
  • Ссылки unlisted: файл видят только те, у кого есть ссылка

Добавить YourImageShare в Discord

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 }}

Инструкция по настройке на GitHub

Проекты сообщества

Одни из лучших интеграций YourImageShare создают те, кто им пользуется. Эти проекты сделали участники сообщества на основе описанного выше публичного API. Их поддерживают сами авторы, поэтому с вопросами и сообщениями об ошибках обращайтесь к автору на странице проекта.

  • YourImageShare Uploads for FlatBB — плагин для форума FlatBB от madromas (MadWay Inc.).
    • Добавляет кнопку загрузки в редактор сообщений FlatBB: выберите одно или несколько изображений или видео, и Markdown вставится в позицию курсора
    • Вставляет каждую загрузку как миниатюру-ссылку, изображение полного размера или обычную ссылку (видео — как ссылку)
    • Загрузки идут через сервер вашего форума с ключом API только для загрузки, поэтому ключ никогда не попадает в браузеры посетителей
    • Файлы хранятся на YourImageShare, а не на диске вашего форума, с видимостью по умолчанию на ваш выбор (private, unlisted или public)
    • Работает вместе со встроенным загрузчиком FlatBB, с отдельным ограничением размера файла

    Исходный код на GitHub · Страница в магазине FlatBB

Спасибо

Большое спасибо всем, кто создаёт проекты на основе YourImageShare и делится ими с другими. Проекты сообщества приносят YourImageShare туда, куда мы сами никогда бы не добрались. Сделали что-нибудь с помощью API? Расскажите нам об этом, и мы с радостью добавим проект сюда.

Из блога

Готовы попробовать?

Получить API-ключ →