Przejdź do treści głównej
TransConvert

TransConvert API

Konwertuj obrazy i dokumenty programistycznie za pomocą jednego prostego endpointu HTTP.

image API konwersji obrazów description API konwersji dokumentów picture_as_pdf API konwersji PDF movie API konwersji wideo music_note API konwersji audio compress API kompresji obrazów compress API kompresji PDF
rocket_launch

Szybki start

Od zera do pierwszego przekonwertowanego pliku w trzech krokach.

1

Pobierz swój klucz API

Zarejestruj się (lub przejdź na wyższy plan istniejącego konta) — Basic, Lite, Pro lub Team — a następnie wygeneruj klucz na stronie swojego konta. Możesz wrócić i wyświetlić go ponownie w dowolnym momencie.

2

Wyślij żądanie

Wyślij plik metodą POST na poniższy endpoint jako multipart/form-data, z kluczem w nagłówku Authorization oraz ustawionymi category i target.

3

Odbierz swój plik

Odpowiedź 200 to surowe bajty przekonwertowanego pliku — zapisz treść odpowiedzi bezpośrednio. Wszystko inne to błąd JSON wyjaśniający, co poszło nie tak.

key

Uwierzytelnianie

Każde żądanie wymaga klucza API, wysyłanego jako token Bearer w nagłówku Authorization.

Header
Authorization: Bearer tc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Dostępne w planach Basic, Lite, Pro i Team. Wygeneruj klucz na stronie swojego konta →

Przetestuj swój klucz

Szybki sposób, aby potwierdzić, że klucz działa, zanim napiszesz właściwy kod integracji — sam ten test niczego nie przekonwertuje (brak dołączonego pliku), ale odpowiedź 400 no_file zamiast 401 potwierdza, że sam klucz jest poprawny.

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

Endpoint

Jeden endpoint obsługuje każdą konwersję. Wyślij żądanie POST typu multipart/form-data z plikiem i poniższymi polami.

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

Parametry

Field Description
AuthorizationWymagane. „Bearer tc_live_...”.
categoryWymagane. „image” lub „document” — jeśli chcesz kompresować zamiast konwertować, zobacz Kompresję poniżej.
targetWymagane. Kod formatu wyjściowego, np. „PNG”, „DOCX” — zobacz Obsługiwane formaty poniżej.
fileWymagane. Plik do konwersji (przesyłany jako multipart).
pdf_modeOpcjonalne, tylko dla kategorii image. „pages” (domyślnie, rasteryzuje każdą stronę) lub „extract” (wyciąga osadzone obrazy w niezmienionej postaci) — ma znaczenie tylko wtedy, gdy źródłem jest PDF.
pdf_pagesOpcjonalne, tylko dla kategorii image. „all” (domyślnie) lub „first”.
pdf_qualityOpcjonalne, tylko dla kategorii image. „normal” (domyślnie, 150 DPI) lub „high” (300 DPI).

Popularne konwersje

Szybki przegląd popularnych par formatów — ten sam endpoint obsługuje je wszystkie, zmienia się tylko kombinacja 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

Odpowiedź

Przy sukcesie (200): surowe bajty przekonwertowanego pliku, z ustawionymi dla niego nagłówkami Content-Type i Content-Disposition. Przy niepowodzeniu: treść JSON w postaci {"error": {"code": "...", "message": "..."}} wraz z odpowiednim kodem statusu HTTP — zobacz Błędy poniżej.

Header Value
Content-TypeRzeczywisty typ MIME przekonwertowanego pliku (np. image/png, application/pdf).
Content-Dispositionattachment; filename="..." — sugerowana nazwa pliku, tak jak przy każdym pobieraniu pliku.
Content-LengthRozmiar treści odpowiedzi w bajtach.
compress

Kompresja

Zmniejsz rozmiar pliku bez zmiany jego formatu — na wejściu i wyjściu ten sam format. To osobna para kategorii względem konwersji: image-compress i document-compress, każda z własnymi opcjami poniżej.

image-compress

Ten sam format na wejściu i wyjściu (JPG/PNG/WEBP/GIF) — target_percent to przybliżony rozmiar wyniku względem oryginału, do którego dążymy, a nie stały poziom jakości.

Field Description
categoryUstaw na „image-compress”.
target_percentOpcjonalne, 1–100 (domyślnie 60). Docelowy rozmiar jako przybliżony procent oryginału — mniejsze liczby oznaczają mocniejszą kompresję.
fileWymagane. JPG, PNG, WEBP lub 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 na wejściu, PDF na wyjściu, dzięki rekompresji wbudowanej w Ghostscript — nigdy nie zwraca pliku większego niż przesłany (jeśli rekompresja nie pomogła, zwracany jest oryginał).

Field Description
categoryUstaw na „document-compress”.
levelOpcjonalne: „low”, „medium” (domyślnie), „high” lub „none”. Wyższa kompresja oznacza większy spadek jakości wizualnej, głównie w osadzonych obrazach/skanach.
grayscaleOpcjonalne. „1”, aby dodatkowo skonwertować do skali szarości; pomiń, aby zachować pełny kolor.
fileWymagane. Plik PDF, który nie jest otwarty ani zabezpieczony hasłem (jeśli jest, najpierw użyj narzędzia Odblokuj PDF na stronie).
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-SizeRozmiar przesłanego pliku w bajtach, przed kompresją.
X-Saved-PercentW przybliżeniu o ile mniejszy jest wynik od oryginału, jako pełna liczba procent (może wynosić 0).
movie

Wideo i audio (asynchronicznie)

Konwersje wideo i audio mogą trwać kilka minut — zbyt długo, by utrzymywać jedno synchroniczne żądanie — dlatego zamiast powyższego endpointu korzystają z modelu wyślij-i-odpytuj. Prześlij plik, od razu otrzymaj job_id, a następnie odpytuj o jego status, aż będzie gotowy.

Prześlij zadanie

Taki sam kształt żądania POST typu multipart jak w głównym endpoincie, tylko pod innym adresem URL.

POST https://transconvert.com/api/v1/convert-async.php
Field Description
AuthorizationWymagane. „Bearer tc_live_...”.
category„video” lub „audio”.
targetWymagane — np. „MP4”, „MOV”, „MP3”, „WAV”.
fileWymagane. Plik do konwersji (przesyłany jako multipart).
webhook_urlOpcjonalne. Adres URL http(s), na który zostanie wysłany (POST) wynik zadania po jego zakończeniu, zamiast tylko odpytywania job-status.php. Musi wskazywać na publiczny adres.
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"

Odpowiedź (202 Accepted)

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

Odpytuj o status

Odpytuj co kilka sekund, używając otrzymanego job_id. „status” przyjmuje jedną z wartości: queued, processing, completed lub 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"
}

Webhooki (opcjonalnie)

Jeśli podano webhook_url podczas przesyłania, po zakończeniu zadania — sukcesem lub niepowodzeniem — wyślemy tam ten sam JSON, ponawiając próbę kilka razy, jeśli Twój endpoint nie odpowiada. job-status.php nadal działa jako zapasowe rozwiązanie.

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

Pobierz wynik

Gdy status to „completed”, odpowiedź zawiera download_url — ten sam adres URL statusu z dopisanym &download=1. Zażądanie go strumieniuje surowe bajty przekonwertowanego pliku, z takimi samymi nagłówkami jak każdy inny endpoint na tej stronie. Wynik jest usuwany w momencie pobrania, a jeśli nigdy nie zostanie pobrany — automatycznie po krótkim okresie przechowywania.

scheduleWyniki zadań są usuwane natychmiast po pobraniu, a jeśli nigdy nie zostaną pobrane — automatycznie po krótkim okresie przechowywania — pobierz je bez zwłoki.

terminal

Przykłady

To samo żądanie w czterech językach — wybierz ten, który pasuje do Twojego stosu technologicznego. Każdy przykład konwertuje lokalny plik photo.jpg do PNG i zapisuje wynik.

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

Błędy

Każde niepowodzenie zwraca kopertę błędu JSON z polem „code”, po którym Twój kod może rozgałęziać logikę, oraz czytelnym dla człowieka polem „message”. Niektóre błędy zawierają dodatkowe pola (na przykład quota_exceeded zawiera „limit” i „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_keyNie wysłano nagłówka Authorization.
401 invalid_keyKlucz nie istnieje lub został unieważniony.
403 account_suspendedKonto, do którego należy ten klucz, zostało zawieszone.
403 plan_requiredKonto jest w planie Free — dostęp do API wymaga planu Basic, Lite, Pro lub Team.
400 invalid_categoryPole „category” nie miało wartości „image” ani „document”.
400 missing_targetPole „target” było puste.
400 no_fileNie wysłano żadnego pliku albo przesyłanie się nie powiodło — pole musi nazywać się „file”.
413 file_too_largePlik przekracza maksymalny rozmiar przesyłania dla Twojego planu.
429 quota_exceededMiesięczny limit minut konwersji w tym planie został wyczerpany. Odnawia się na początku kolejnego miesiąca kalendarzowego.
429 concurrency_limitZbyt wiele konwersji uruchomionych jednocześnie dla tego konta (limit współdzielony ze stroną) — poczekaj, aż jedna się zakończy, i spróbuj ponownie.
400/415/422/500/503 conversion_failedSamego pliku nie udało się przekonwertować — powód wyjaśnia pole „message”. Kod statusu zależy od przyczyny: 400/415/422 oznaczają, że plik lub format docelowy nie zadziałają niezależnie od liczby prób; 500/503 oznaczają problem po stronie serwera, a 503 w szczególności warto krótko ponowić.
405 method_not_allowedNiewłaściwa metoda HTTP — ten endpoint akceptuje tylko POST.
400 invalid_target„target” nie jest obsługiwanym formatem wyjściowym dla tej kategorii.
404 job_not_foundNie istnieje zadanie o tym identyfikatorze na tym koncie (zwracane też dla job_id innego konta — jego istnienie nigdy nie jest ujawniane).
410 result_goneZadanie zostało ukończone, ale jego wynik został już usunięty (wyniki są usuwane natychmiast po pobraniu lub automatycznie po krótkim okresie przechowywania).
500 storage_failedSerwer nie mógł zapisać przesłanego pliku do przetwarzania w tle. Można bezpiecznie ponowić próbę.

Obsługa błędów i ponawianie prób

Rozgałęziaj logikę na podstawie pola JSON „code”, a nie tekstu „message” — treść komunikatu może się zmieniać, kod nie. concurrency_limit warto krótko ponowić po kilku sekundach (znika, gdy tylko zakończy się jedna z Twoich trwających konwersji); quota_exceeded nie rozwiąże się samo aż do następnego miesiąca, więc nie ponawiaj go w pętli. conversion_failed to jedyny kod, przy którym nadal liczy się status HTTP: 503 to przejściowy problem po stronie serwera, warty jednej krótkiej ponownej próby, natomiast 400/415/422/500 oznaczają, że ta konkretna kombinacja pliku i formatu docelowego nie powiedzie się niezależnie od liczby ponownych prób. Sprawdzenie rozmiaru pliku po stronie klienta przed przesłaniem pozwala uniknąć marnowania żądania na gwarantowany file_too_large.

speed

Plany i limity

API współdzieli limity z tym samym planem, którego już używasz na stronie — nie ma nic osobnego do skonfigurowania.

bolt

Basic

bolt2000 minut konwersji / miesiąc

upload_filePliki do 2 GB

sync_alt50 żądanie(a) jednocześnie

speed30 żądań/minutę

bolt

Lite

bolt3000 minut konwersji / miesiąc

upload_filePliki do 4 GB

sync_alt100 żądanie(a) jednocześnie

speed60 żądań/minutę

Najpopularniejszy
workspace_premium

Pro

bolt5000 minut konwersji / miesiąc

upload_filePliki do 10 GB

sync_altNielimitowana liczba żądań jednocześnie

speed120 żądań/minutę

group

Team

bolt10000 minut konwersji / miesiąc

upload_filePliki do 20 GB

sync_altNielimitowana liczba żądań jednocześnie

speed240 żądań/minutę

tollWspółdzielone z miesięczną pulą kredytów zespołu, jeśli z niej korzysta

Gdy obowiązuje limit na minutę, każda odpowiedź zawiera nagłówki X-RateLimit-Limit i X-RateLimit-Remaining; odpowiedź 429 zawiera również Retry-After (w sekundach) — użyj ich, aby zwolnić tempo, zanim osiągniesz limit, zamiast reagować dopiero po 429.

layers

Obsługiwane formaty

Dokładnie ten sam silnik konwersji, którego używa strona — nic nie jest zarezerwowane wyłącznie dla API ani wyłącznie dla strony.

image

category: image

Akceptowane jako źródło:

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

Dostępne jako format docelowy:

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

description

category: document

Akceptowane jako źródło:

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

Dostępne jako format docelowy:

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

compress

category: image-compress

Źródło i format docelowy (ten sam format na wejściu i wyjściu):

JPG, PNG, WEBP, GIF

compress

category: document-compress

Źródło i format docelowy (ten sam format na wejściu i wyjściu):

PDF

movie

category: video (async)

Źródło i format docelowy (ten sam format na wejściu i wyjściu):

MP4, MOV, AVI, MKV, WEBM

music_note

category: audio (async)

Źródło i format docelowy (ten sam format na wejściu i wyjściu):

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

infoWideo i audio — zarówno konwersja, jak i kompresja — są na razie dostępne tylko na stronie: synchroniczne żądanie HTTP słabo pasuje do zadania, które może trwać kilka minut.

help

Najczęściej zadawane pytania

Czy API obsługuje konwersję wideo lub audio?

Jeszcze nie — te konwersje mogą trwać kilka minut, co słabo pasuje do pojedynczego synchronicznego żądania HTTP. Są dziś dostępne na stronie; wsparcie w API może pojawić się, jeśli kiedyś powstanie asynchroniczna, oparta na zadaniach wersja API.

Co stanie się z moim kluczem, jeśli przejdę na plan Free?

Dostęp do API wymaga planu Basic, Lite, Pro lub Team. Jeśli konto przejdzie na Free — przez anulowanie lub wygaśnięcie subskrypcji — istniejące klucze natychmiast przestają działać. Zaczynają działać ponownie automatycznie, gdy konto wróci do planu płatnego; nie musisz generować nowego klucza.

Kiedy odnawia się mój miesięczny limit?

Na początku każdego miesiąca kalendarzowego, nie w dniu rozliczenia.

Czy istnieje tryb testowy lub sandbox?

Nie na razie — każde żądanie liczy się do Twojego rzeczywistego miesięcznego limitu. Podczas integracji używaj małych plików, aby go oszczędzać.

Czy mogę uruchamiać konwersje równolegle?

Do limitu jednoczesnych żądań Twojego planu (zobacz Plany i limity powyżej) — współdzielonego z konwersjami, które jednocześnie uruchamiasz na stronie, a nie osobnej puli tylko dla API.

Czy kompresja gwarantuje mniejszy plik?

Dla document-compress — tak, nigdy nie zwraca pliku PDF większego niż przesłany; jeśli rekompresja w Ghostscript nie pomogła, otrzymujesz z powrotem niezmieniony oryginał (X-Saved-Percent pokaże 0). Dla image-compress parametr target_percent jest wartością docelową, do której dąży enkoder, a nie twardą gwarancją — źródło już mocno skompresowane może nie zmniejszyć się dużo bardziej.

Gotowy, aby zacząć?

Wygeneruj klucz i wykonaj swoje pierwsze żądanie w niecałą minutę.

Pobierz swój klucz API