Перейти к основному содержимому
TransConvert

TransConvert API

Конвертируйте изображения и документы программно через один простой HTTP-эндпоинт.

image API конвертации изображений description API конвертации документов picture_as_pdf API конвертации PDF movie API конвертации видео music_note API конвертации аудио compress API сжатия изображений compress API сжатия PDF
rocket_launch

Быстрый старт

От нуля до первого конвертированного файла за три шага.

1

Получите API-ключ

Зарегистрируйтесь (или перейдите на платный тариф в существующем аккаунте) на Basic, Lite, Pro или Team, затем создайте ключ на странице аккаунта — вы всегда сможете вернуться и посмотреть его снова.

2

Отправьте запрос

Отправьте файл методом POST на указанный ниже эндпоинт как multipart/form-data, с ключом в заголовке Authorization и заданными category и target.

3

Получите файл в ответ

Ответ 200 — это необработанные байты конвертированного файла; сохраните тело ответа как есть. Любой другой ответ — это JSON-ошибка с объяснением, что пошло не так.

key

Аутентификация

Каждый запрос требует API-ключ, который передаётся как Bearer-токен в заголовке Authorization.

Header
Authorization: Bearer tc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Доступно на тарифах Basic, Lite, Pro и Team. Создать ключ в личном кабинете →

Проверьте ключ

Быстрый способ убедиться, что ключ работает, ещё до написания реального кода интеграции — сам по себе этот запрос ничего не конвертирует (файл не прикреплён), но ответ 400 no_file вместо 401 подтверждает, что ключ действителен.

curl -X POST -H "Authorization: Bearer tc_live_your_key_here" -F "category=image" https://transconvert.com/api/v1/convert.php
dns

Эндпоинт

Один эндпоинт обрабатывает все виды конвертации. Отправьте POST-запрос multipart/form-data с файлом и указанными ниже полями.

POST https://transconvert.com/api/v1/convert.php

Параметры

Field Description
AuthorizationОбязательно. «Bearer tc_live_...».
categoryОбязательно. «image» или «document» — для сжатия вместо конвертации см. раздел «Сжатие» ниже.
targetОбязательно. Код выходного формата, например «PNG», «DOCX» — см. раздел «Поддерживаемые форматы» ниже.
fileОбязательно. Файл для конвертации (multipart-загрузка).
pdf_modeНеобязательно, только для категории image. «pages» (по умолчанию, растрирует каждую страницу) или «extract» (извлекает встроенные изображения как есть) — актуально только если источник — PDF.
pdf_pagesНеобязательно, только для категории image. «all» (по умолчанию) или «first».
pdf_qualityНеобязательно, только для категории image. «normal» (по умолчанию, 150 DPI) или «high» (300 DPI).

Частые варианты конвертации

Краткий справочник по популярным парам форматов — один и тот же эндпоинт обрабатывает их все, просто с разным сочетанием category/target.

Source → target category target
PNG → JPGimageJPG
JPG → PNGimagePNG
HEIC → JPGimageJPG
WEBP → PNGimagePNG
JPG → PDFimagePDF
PDF → JPGimageJPG
DOCX → PDFdocumentPDF
PDF → DOCXdocumentDOCX
PPTX → PDFdocumentPDF
XLSX → PDFdocumentPDF

Ответ

При успехе (200): необработанные байты конвертированного файла с соответствующими заголовками Content-Type и Content-Disposition. При ошибке: JSON-тело вида {"error": {"code": "...", "message": "..."}} с соответствующим HTTP-статусом — см. раздел «Ошибки» ниже.

Header Value
Content-TypeНастоящий MIME-тип конвертированного файла (например, image/png, application/pdf).
Content-Dispositionattachment; filename="..." — предполагаемое имя файла, как при любой загрузке файла.
Content-LengthРазмер тела ответа в байтах.
compress

Сжатие

Уменьшите размер файла без изменения формата — на входе и выходе один и тот же формат. Отдельная от конвертации пара категорий, image-compress и document-compress, у каждой свои параметры ниже.

image-compress

На входе и выходе один и тот же формат (JPG/PNG/WEBP/GIF) — target_percent задаёт, насколько маленьким должен получиться результат относительно оригинала, а не фиксированный уровень качества.

Field Description
categoryУкажите «image-compress».
target_percentНеобязательно, 1–100 (по умолчанию 60). Целевой размер как примерный процент от оригинала — чем меньше число, тем сильнее сжатие.
fileОбязательно. JPG, PNG, WEBP или GIF.
cURL
curl -X POST \
  https://transconvert.com/api/v1/convert.php \
  -H "Authorization: Bearer tc_live_your_key_here" \
  -F "category=image-compress" \
  -F "target_percent=50" \
  -F "file=@photo.jpg" \
  -o compressed.jpg

document-compress

PDF на входе, PDF на выходе — через собственное пересжатие Ghostscript. Результат никогда не будет больше загруженного файла (если пересжатие не помогло, возвращается оригинал).

Field Description
categoryУкажите «document-compress».
levelНеобязательно: «low», «medium» (по умолчанию), «high» или «none». Более сильное сжатие снижает визуальное качество, в первую очередь у встроенных изображений и сканов.
grayscaleНеобязательно. «1» — также перевести в оттенки серого; не указывайте для сохранения цвета.
fileОбязательно. PDF без открытой защиты паролем (если она есть, сначала снимите её через инструмент «Снять защиту PDF» на сайте).
cURL
curl -X POST \
  https://transconvert.com/api/v1/convert.php \
  -H "Authorization: Bearer tc_live_your_key_here" \
  -F "category=document-compress" \
  -F "level=high" \
  -F "file=@report.pdf" \
  -o compressed.pdf
Header Value
X-Original-SizeРазмер загруженного файла в байтах до сжатия.
X-Saved-PercentПримерно, насколько результат меньше оригинала, в виде целого процента (может быть 0).
movie

Видео и аудио (асинхронно)

Конвертация видео и аудио может занимать несколько минут — слишком долго, чтобы держать открытым один синхронный запрос, поэтому вместо эндпоинта выше здесь используется схема «отправить, затем опрашивать». Отправьте файл, сразу получите job_id в ответ, а затем опрашивайте его статус, пока задача не завершится.

Отправка задачи

Тот же формат multipart POST-запроса, что и у основного эндпоинта, но по другому адресу.

POST https://transconvert.com/api/v1/convert-async.php
Field Description
AuthorizationОбязательно. «Bearer tc_live_...».
category«video» или «audio».
targetОбязательно — например, «MP4», «MOV», «MP3», «WAV».
fileОбязательно. Файл для конвертации (multipart-загрузка).
webhook_urlНеобязательно. URL-адрес http(s), на который будет отправлен (POST) результат задания по завершении, вместо того чтобы только опрашивать job-status.php. Должен указывать на публичный адрес.
cURL
curl -X POST \
  https://transconvert.com/api/v1/convert-async.php \
  -H "Authorization: Bearer tc_live_your_key_here" \
  -F "category=video" \
  -F "target=MP4" \
  -F "file=@clip.mov"

Ответ (202 Accepted)

{ "job_id": "job_242e1555d78d166807aa56502f15d118", "status": "queued" }

Опрос статуса

Опрашивайте этот адрес каждые несколько секунд, передавая полученный job_id. «status» принимает одно из значений: queued, processing, completed или failed.

GET https://transconvert.com/api/v1/job-status.php?job_id=job_...
{
  "job_id": "job_242e1555d78d166807aa56502f15d118",
  "status": "completed",
  "category": "video",
  "target_format": "MP4",
  "created_at": "2026-08-26 19:17:47",
  "download_url": "/api/v1/job-status.php?job_id=job_...&download=1",
  "filename": "clip.mp4"
}

Вебхуки (необязательно)

Если вы указали webhook_url при отправке, мы один раз отправим туда тот же JSON, когда задание завершится — при успехе или ошибке — с несколькими повторными попытками, если ваш эндпоинт не отвечает. job-status.php по-прежнему работает как резервный вариант.

POST your webhook_url
{
  "job_id": "job_242e1555d78d166807aa56502f15d118",
  "status": "completed",
  "category": "video",
  "target_format": "MP4",
  "created_at": "2026-08-26 19:17:47",
  "download_url": "https://transconvert.com/api/v1/job-status.php?job_id=job_...&download=1",
  "filename": "clip.mp4"
}

Скачивание результата

Когда status становится «completed», в ответе появляется download_url — тот же адрес статуса с добавленным &download=1. Запрос по нему передаёт необработанные байты конвертированного файла с теми же заголовками, что и у остальных эндпоинтов на этой странице. Результат удаляется сразу после скачивания либо автоматически по истечении короткого срока хранения, если его так и не скачали.

scheduleРезультаты задач удаляются сразу после скачивания либо автоматически по истечении короткого срока хранения, если их так и не скачали — скачивайте их не откладывая.

terminal

Примеры

Один и тот же запрос на четырёх языках — выберите тот, что подходит вашему стеку. Каждый пример конвертирует локальный файл photo.jpg в PNG и сохраняет результат.

TransConvert
curl -X POST \
  https://transconvert.com/api/v1/convert.php \
  -H "Authorization: Bearer tc_live_your_key_here" \
  -F "category=image" \
  -F "target=PNG" \
  -F "file=@photo.jpg" \
  -o converted.png
error

Ошибки

Каждая ошибка возвращает JSON с полем «code», по которому можно ветвить логику в коде, и человекочитаемым «message». Некоторые ошибки содержат дополнительные поля (например, quota_exceeded включает «limit» и «used»).

429 Too Many Requests
{
  "error": {
    "code": "quota_exceeded",
    "message": "Monthly API allowance of 5000 conversion-minutes reached.",
    "limit": 5000,
    "used": 5000
  }
}
Status & code When it happens
401 missing_keyЗаголовок Authorization не был передан.
401 invalid_keyТакого ключа не существует или он отозван.
403 account_suspendedАккаунт, которому принадлежит этот ключ, заблокирован.
403 plan_requiredАккаунт на бесплатном тарифе — для доступа к API нужен Basic, Lite, Pro или Team.
400 invalid_category«category» не равно «image» или «document».
400 missing_target«target» пусто.
400 no_fileФайл не был передан или загрузка не удалась — поле должно называться «file».
413 file_too_largeФайл превышает максимальный размер загрузки для вашего тарифа.
429 quota_exceededМесячная квота минут конвертации по тарифу исчерпана. Обновляется в начале следующего календарного месяца.
429 concurrency_limitДля этого аккаунта уже выполняется слишком много конвертаций одновременно (общий лимит с сайтом) — дождитесь завершения одной из них и повторите запрос.
400/415/422/500/503 conversion_failedСам файл не удалось конвертировать — причина указана в «message». Код статуса зависит от причины: 400/415/422 означают, что файл или формат назначения не сработают, сколько бы вы ни повторяли попытку; 500/503 означают проблему на стороне сервера, а 503 — тот случай, когда стоит выполнить короткую повторную попытку.
405 method_not_allowedНеверный HTTP-метод — этот эндпоинт принимает только POST.
400 invalid_target«target» не является поддерживаемым выходным форматом для этой категории.
404 job_not_foundЗадачи с таким id для этого аккаунта не существует (тот же ответ возвращается и для job_id другого аккаунта — его существование никогда не раскрывается).
410 result_goneЗадача завершена, но её результат уже удалён (результаты удаляются сразу после скачивания либо автоматически по истечении короткого срока хранения).
500 storage_failedСерверу не удалось сохранить загруженный файл для фоновой обработки. Можно безопасно повторить запрос.

Обработка ошибок и повторные попытки

Ветвите логику по полю JSON «code», а не по тексту «message» — формулировки могут меняться со временем, а код — нет. concurrency_limit имеет смысл повторить через несколько секунд (лимит снимается, как только завершится одна из ваших текущих конвертаций); quota_exceeded сам по себе не исчезнет до следующего месяца, поэтому не повторяйте запрос в цикле. conversion_failed — единственный код, где важен именно HTTP-статус: 503 — временная проблема на стороне сервера, стоит повторить один раз; а 400/415/422/500 означают, что именно эта комбинация файла и формата назначения не сработает, сколько бы раз вы ни отправляли запрос. Проверка размера файла на стороне клиента перед загрузкой позволяет не тратить запрос на заведомый file_too_large.

speed

Тарифы и лимиты

API использует те же лимиты, что и ваш тариф на сайте — отдельно ничего настраивать не нужно.

bolt

Basic

bolt2000 минут конвертации / месяц

upload_fileФайлы до 2 GB

sync_alt50 запрос(ов) одновременно

speed30 запросов/минуту

bolt

Lite

bolt3000 минут конвертации / месяц

upload_fileФайлы до 4 GB

sync_alt100 запрос(ов) одновременно

speed60 запросов/минуту

Популярный выбор
workspace_premium

Pro

bolt5000 минут конвертации / месяц

upload_fileФайлы до 10 GB

sync_altНеограниченное число запросов одновременно

speed120 запросов/минуту

group

Team

bolt10000 минут конвертации / месяц

upload_fileФайлы до 20 GB

sync_altНеограниченное число запросов одновременно

speed240 запросов/минуту

tollИспользует общий месячный пул кредитов команды, если он применяется

Как только начинает действовать лимит в минуту, каждый ответ содержит заголовки X-RateLimit-Limit и X-RateLimit-Remaining; ответ 429 также содержит Retry-After (в секундах) — используйте их, чтобы снизить частоту запросов заранее, а не реагировать только после 429.

layers

Поддерживаемые форматы

Тот же самый движок конвертации, что используется на сайте, — ничего не доступно только через API или только на сайте.

image

category: image

Принимается как источник:

JPG, PNG, GIF, WEBP, BMP, AVIF, PDF, PSD, TIFF, EPS, HEIC

Доступно как формат назначения:

JPG, PNG, GIF, WEBP, BMP, AVIF, PDF, ICO, PSD, TIFF, EPS

description

category: document

Принимается как источник:

PDF, DOCX, DOC, PPTX, PPT, XLSX, XLS, RTF, ODT, ODP, ODS, HTML

Доступно как формат назначения:

PDF, DOCX, DOC, PPTX, PPT, XLSX, XLS, RTF, ODT, ODP, ODS

compress

category: image-compress

Источник и назначение (один и тот же формат на входе и выходе):

JPG, PNG, WEBP, GIF

compress

category: document-compress

Источник и назначение (один и тот же формат на входе и выходе):

PDF

movie

category: video (async)

Источник и назначение (один и тот же формат на входе и выходе):

MP4, MOV, AVI, MKV, WEBM

music_note

category: audio (async)

Источник и назначение (один и тот же формат на входе и выходе):

MP3, WAV, OGG, AAC, FLAC, M4A, WMA, OPUS, AIFF, AMR, AU, CAF, AC3, DTS, GSM, IRCAM, MP2, TTA, VOC, W64, WV, SPX, RM

infoКонвертация и сжатие видео и аудио пока доступны только на сайте: синхронный HTTP-запрос плохо подходит для задачи, которая может занимать несколько минут.

help

Частые вопросы

Поддерживает ли API конвертацию видео или аудио?

Пока нет — такие конвертации могут занимать несколько минут, что плохо подходит для одного синхронного HTTP-запроса. Сегодня они доступны на сайте; поддержка в API может появиться, если когда-нибудь будет асинхронная, основанная на задачах версия API.

Что произойдёт с моим ключом, если я перейду на бесплатный тариф?

Доступ к API требует тарифа Basic, Lite, Pro или Team. Если аккаунт переходит на Free — из-за отмены подписки или её истечения — существующие ключи сразу перестают работать. Они автоматически заработают снова, как только аккаунт вернётся на платный тариф — создавать новый ключ не нужно.

Когда обновляется моя месячная квота?

В начале каждого календарного месяца, а не в день оплаты подписки.

Есть ли песочница или тестовый режим?

Пока нет — каждый запрос расходует вашу настоящую месячную квоту. При интеграции используйте небольшие файлы, чтобы её экономить.

Можно ли запускать конвертации параллельно?

В пределах лимита одновременных запросов вашего тарифа (см. раздел «Тарифы и лимиты» выше) — этот лимит общий с конвертациями, которые вы одновременно выполняете на сайте, а не отдельная квота только для API.

Гарантирует ли сжатие уменьшение размера файла?

Для document-compress — да: результат никогда не будет больше загруженного файла; если пересжатие Ghostscript не помогло, вы получите оригинал без изменений (X-Saved-Percent будет равен 0). Для image-compress target_percent — это ориентир для кодировщика, а не строгая гарантия: уже сильно сжатый исходник может уменьшиться незначительно.

Готовы начать?

Создайте ключ и отправьте первый запрос меньше чем за минуту.

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