OneSaveAPI
Те же движки, что у бота @One_Savebot: прямые ссылки на файлы, метаданные поста, до 10 уникальных версий ролика и варианты подписей. Оплата — Telegram Stars, без карт и договоров.
The same engines as the @One_Savebot bot: direct file links, post metadata, up to 10 unique versions of a video and caption variants. Pay with Telegram Stars, no cards or contracts.
В @One_Savebot отправьте команду /api — это ваш личный кабинет.
Send /api to @One_Savebot — that is your account page.
Кнопка «Создать токен». Токен начинается с sb_. Его можно перевыпустить или отозвать в любой момент.
Tap “Create token”. Tokens start with sb_. You can rotate or revoke it at any time.
Кнопка «Пополнить баланс» — счёт в Telegram Stars прямо в чате. Звёзды списываются по мере запросов.
Tap “Top up balance” — a Telegram Stars invoice right in the chat. Stars are deducted as you make requests.
# скачать пост и получить прямые ссылки на файлыdownload a post and get direct file links
curl -X POST https://api.savebot.pro/download \
-H "Authorization: Bearer sb_ВАШ_ТОКЕН" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.instagram.com/reel/XXXXXXXX/"}'
Базовый адрес — https://api.savebot.pro. Все ответы в JSON, кодировка UTF-8.
Интерактивная схема (Swagger) — на api.savebot.pro/docs.
Base URL — https://api.savebot.pro. All responses are JSON, UTF-8.
The interactive schema (Swagger) lives at api.savebot.pro/docs.
Оплата списывается с баланса в Telegram Stars до обработки. Если запрос не удался или сделано меньше версий, чем заказано, разница возвращается на баланс автоматически.
Stars are deducted from your balance before processing. If a request fails or fewer versions are produced than ordered, the difference is refunded automatically.
POST /uniq — 10 версий ролика = 20 ⭐
POST /uniq — 10 versions of a video = 20 ⭐
POST /download — карусель из 10 фото = 1 ⭐
POST /download — a 10-photo carousel = 1 ⭐
POST /captions — до 10 вариантов за запрос
POST /captions — up to 10 variants per request
Метаданные (/info), список платформ, баланс и раздача файлов — бесплатно.
Телеграм продаёт звёзды пакетами в своём приложении; 100 ⭐ стоят примерно как чашка кофе.
/info, the platform list, balance and file delivery are free.
Telegram sells Stars in packs inside the app; 100 ⭐ cost roughly a cup of coffee.
Токен передаётся в заголовке каждого запроса. Без него или с отозванным токеном API отвечает 401.
Pass the token in a header on every request. Without it, or with a revoked token, the API responds 401.
Authorization: Bearer sb_ВАШ_ТОКЕН
/api, старый сразу перестанет работать./api — the old one stops working immediately.Скачивает пост и отдаёт прямые ссылки на файлы. Работает с видео, фото, каруселями и аудио.
Downloads a post and returns direct file links. Works for videos, photos, carousels and audio.
| Поле | Field | Тип | Type | Описание | Description |
|---|---|---|---|---|---|
url* | string | Ссылка на пост. Трекинг-хвосты вроде ?igsh=… допустимы. |
Post link. Tracking tails like ?igsh=… are fine. | ||
quality | string | best (по умолчанию), 1080p, 720p, 480p, 360p. |
best (default), 1080p, 720p, 480p, 360p. | ||
audio_only | bool | true — только звуковая дорожка (mp3). |
true — audio track only (mp3). | ||
include_audio | bool | true — вернуть и саундтрек отдельным файлом вдобавок к видео. |
true — also return the soundtrack as a separate file alongside the video. | ||
max_size_mb | number | Пережать видео, если оно больше. Нужно, например, для заливки в Telegram по URL (там лимит 20 МБ). | Re-encode the video if it is larger. Useful for uploading to Telegram by URL (20 MB limit there). |
{
"ok": true,
"media": [
{ "type": "video", "url": "https://api.savebot.pro/files/8f1c…/media_001.mp4",
"duration": 14.2, "width": 1080, "height": 1920, "has_audio": true, "size": 3931281 }
],
"caption": "Текст поста целиком",
"author": "username",
"source": "instagram"
}
media идёт в порядке слайдов оригинала; type — video, image или audio.has_audio проверяется по реальной дорожке файла — защита от «немых» роликов.?dl=1 к ссылке, чтобы браузер сразу скачал файл, и &as_name=my.mp4 — чтобы задать имя.media keeps the original slide order; type is video, image or audio.has_audio is checked against the actual track in the file — a guard against silent videos.?dl=1 to a link to force a download in the browser, and &as_name=my.mp4 to set the file name.Метаданные без скачивания: название, автор, описание, длительность, превью и доступные качества с размерами. Удобно показать пользователю карточку поста до того, как платить за скачивание.
Metadata without downloading: title, author, description, duration, thumbnail and available qualities with sizes. Handy for showing a post card to the user before paying for the download.
{ "ok": true, "platform": "youtube", "title": "…", "author": "…", "duration": 212,
"thumbnail": "https://…",
"qualities": [ { "quality": "1080p", "label": "🎬 1080p — 80.5 MB", "size": 84426490 }, … ] }
Список площадок с доменами, вариантами качества и флагом enabled. Выключенная площадка отвечает ошибкой platform_disabled.
The list of platforms with their domains, quality options and an enabled flag. A disabled platform responds with platform_disabled.
Когда один ролик заливают на несколько площадок или аккаунтов, алгоритмы видят повтор и режут охваты. Уникализатор делает N версий файла: у каждой свой микрокроп, цвет, скорость, звук и параметры сжатия, метаданные стёрты. Для алгоритмов это разные файлы, для зрителя — тот же ролик.
When the same video is posted to several platforms or accounts, algorithms spot the duplicate and cut reach. The uniquifier produces N versions of a file: each gets its own micro-crop, colour, speed, audio and encoding tweaks, with metadata wiped. Algorithms see different files; viewers see the same video.
| Поле | Field | Тип | Type | Описание | Description |
|---|---|---|---|---|---|
file | file | Видеофайл, до 300 МБ. Нужен либо file, либо url. |
Video file, up to 300 MB. Either file or url is required. | ||
url | string | Ссылка на пост — берётся первое видео, как в /download. Подпись поста станет исходной для вариантов. |
Post link — the first video is taken, as in /download. The post caption becomes the source for variants. | ||
count | int | Число версий, 1–10. По умолчанию 1. | Number of versions, 1–10. Default 1. | ||
caption | string | Исходная подпись. Каждая версия получит свой вариант (см. /captions). | Source caption. Every version gets its own variant (see /captions). | ||
quality | string | Качество скачивания при url. По умолчанию best. |
Download quality when using url. Default best. |
curl -X POST https://api.savebot.pro/uniq \
-H "Authorization: Bearer sb_ВАШ_ТОКЕН" \
-F file=@video.mp4 -F count=3 -F "caption=Текст поста #tag"
{
"ok": true,
"media": [
{ "type": "video", "index": 1, "url": "https://api.savebot.pro/files/…/video_1.mp4",
"width": 1080, "height": 1920, "duration": 14, "has_audio": true, "size": 2931281,
"caption": "Текст поста ✨\n\n#tag" },
…
],
"count": 3, "requested": 3, "caption_source": "ai", "balance": 94
}
count меньше requested), а разница вернётся на баланс.caption_source: ai — варианты написала нейросеть, template — перестановка хэштегов и эмодзи.count below requested) and the difference is refunded.caption_source: ai — variants written by an LLM, template — hashtag and emoji reshuffle.N вариантов текста поста, чтобы у каждой площадки была своя подпись. Смысл и хэштеги автора сохраняются.
N variants of a post text so every platform gets its own caption. The author’s meaning and hashtags are preserved.
POST /captions
{ "text": "Текст поста #tag1 #tag2", "count": 3, "limit": 900 }
→ { "ok": true, "captions": ["…", "…", "…"], "source": "ai" }
limit — максимальная длина одного варианта в символах (в Telegram подпись к видео — до 1024).
limit — maximum length of one variant in characters (Telegram allows up to 1024 for a video caption).
{ "ok": true, "kind": "personal", "balance": 94, "spent_today": 6,
"prices": { "uniq": 2, "download": 1, "captions": 1 } }
Проверяйте баланс перед большими пачками: при нехватке звёзд запрос вернёт insufficient_stars, ничего не списав.
Пополнение и история операций — в /api бота.
Check the balance before large batches: with too few Stars a request returns insufficient_stars without charging anything.
Top-ups and the transaction history live in the bot’s /api.
«Пост нельзя обработать» — это HTTP 200 с ok: false. Только неверный токен отдаётся с HTTP 401.
“The post cannot be processed” is HTTP 200 with ok: false. Only an invalid token returns HTTP 401.
{ "ok": false, "error": "insufficient_stars", "message": "Недостаточно звёзд: нужно 6, на балансе 4…", "required": 6, "balance": 4 }
| Код | Code | Когда | When | Что делать | What to do |
|---|---|---|---|---|---|
insufficient_stars | Не хватает звёзд на балансе | Not enough Stars on the balance | Пополнить в /api | Top up in /api | |
private_account | Аккаунт закрыт или нужен вход | Private account or login required | Не повторять | Do not retry | |
not_found | Пост удалён или ссылка битая | Post deleted or link broken | Не повторять | Do not retry | |
restricted | Возрастное или региональное ограничение | Age or region restriction | Не повторять | Do not retry | |
unsupported_url | Площадка не поддерживается | Platform not supported | Не повторять | Do not retry | |
platform_disabled | Площадка временно выключена | Platform temporarily disabled | Повторить позже | Retry later | |
rate_limited | Соцсеть ограничивает запросы | The network is throttling requests | Повторить через минуту | Retry in a minute | |
download_failed | Прочий сбой скачивания | Other download failure | Повторить один раз | Retry once | |
bad_request | Нет файла или ссылки, пустой текст, в посте нет видео | No file or link, empty text, no video in the post | Исправить запрос | Fix the request | |
too_big | Файл в /uniq больше 300 МБ | File in /uniq exceeds 300 MB | Сжать файл | Compress the file | |
uniq_failed | ffmpeg не смог прочитать видео | ffmpeg could not read the video | Проверить файл | Check the file | |
unauthorized | Токен неверный или отозван (HTTP 401) | Token invalid or revoked (HTTP 401) | Проверить токен | Check the token |
Скачать пост, затем сделать три версии первого видео с подписями.
Download a post, then make three versions of the first video with captions.
import requests
API = "https://api.savebot.pro"
H = {"Authorization": "Bearer sb_ВАШ_ТОКЕН"}
# 1. скачать постdownload the post
r = requests.post(f"{API}/download", headers=H,
json={"url": "https://www.tiktok.com/@user/video/123"}, timeout=300).json()
if not r["ok"]:
raise SystemExit(r["error"])
video = next(m for m in r["media"] if m["type"] == "video")
data = requests.get(video["url"], timeout=300).content
# 2. три уникальные версии с подписямиthree unique versions with captions
u = requests.post(f"{API}/uniq", headers=H, timeout=600,
files={"file": ("video.mp4", data, "video/mp4")},
data={"count": 3, "caption": r["caption"]}).json()
for v in u["media"]:
print(v["index"], v["url"], v.get("caption", "")[:40])
print("balance:", u["balance"])
const API = "https://api.savebot.pro";
const H = { Authorization: "Bearer sb_ВАШ_ТОКЕН" };
// 1. скачать постdownload the post
const r = await fetch(`${API}/download`, {
method: "POST", headers: { ...H, "Content-Type": "application/json" },
body: JSON.stringify({ url: "https://www.tiktok.com/@user/video/123" }),
}).then(x => x.json());
if (!r.ok) throw new Error(r.error);
const video = r.media.find(m => m.type === "video");
const blob = await fetch(video.url).then(x => x.blob());
// 2. три уникальные версииthree unique versions
const form = new FormData();
form.append("file", blob, "video.mp4");
form.append("count", "3");
form.append("caption", r.caption);
const u = await fetch(`${API}/uniq`, { method: "POST", headers: H, body: form }).then(x => x.json());
for (const v of u.media) console.log(v.index, v.url, v.caption);
console.log("balance:", u.balance);
# версии прямо из ссылки на пост, подпись возьмётся из постаversions straight from a post link; the caption is taken from the post
curl -X POST https://api.savebot.pro/uniq \
-H "Authorization: Bearer sb_ВАШ_ТОКЕН" \
-F url=https://www.tiktok.com/@user/video/123 -F count=3
# только аудио из YouTubeaudio only from YouTube
curl -X POST https://api.savebot.pro/download \
-H "Authorization: Bearer sb_ВАШ_ТОКЕН" -H "Content-Type: application/json" \
-d '{"url":"https://youtu.be/dQw4w9WgXcQ","audio_only":true}'
# балансbalance
curl -H "Authorization: Bearer sb_ВАШ_ТОКЕН" https://api.savebot.pro/me
/uniq. До 300 МБ, формат любой, который читает ffmpeg; на выходе всегда mp4 (H.264 + AAC)./uniq. Up to 300 MB, any format ffmpeg can read; output is always mp4 (H.264 + AAC).