Lewati ke konten utama
TransConvert

TransConvert API

Konversi gambar dan dokumen secara programatis melalui satu endpoint HTTP yang sederhana.

image API Konversi Gambar description API Konversi Dokumen picture_as_pdf API Konversi PDF movie API Konversi Video music_note API Konversi Audio compress API Kompresi Gambar compress API Kompresi PDF
rocket_launch

Mulai cepat

Dari nol hingga file konversi pertama Anda dalam tiga langkah.

1

Dapatkan kunci API Anda

Daftar (atau tingkatkan akun yang sudah ada) ke paket Basic, Lite, Pro, atau Tim, lalu buat kunci dari halaman akun Anda — Anda dapat kembali dan melihatnya lagi kapan saja.

2

Kirim permintaan

Kirim (POST) file Anda ke endpoint di bawah sebagai multipart/form-data, dengan kunci Anda di header Authorization serta category dan target yang sudah diisi.

3

Dapatkan file Anda kembali

Respons 200 berisi byte mentah file hasil konversi — simpan langsung isi respons tersebut. Selain itu, responsnya berupa kesalahan JSON yang menjelaskan apa yang salah.

key

Autentikasi

Setiap permintaan memerlukan kunci API, yang dikirim sebagai Bearer token di header Authorization.

Header
Authorization: Bearer tc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Tersedia di paket Basic, Lite, Pro, dan Tim. Buat kunci dari akun Anda →

Uji kunci Anda

Cara cepat memastikan kunci Anda berfungsi sebelum menulis kode integrasi sesungguhnya — permintaan ini sendiri tidak mengonversi apa pun (tidak ada file terlampir), tetapi respons 400 no_file (bukan 401) sudah memastikan kunci itu sendiri valid.

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

Endpoint

Satu endpoint menangani semua konversi. Kirim permintaan POST multipart/form-data berisi file Anda beserta kolom-kolom di bawah ini.

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

Parameter

Field Description
AuthorizationWajib. "Bearer tc_live_...".
categoryWajib. "image" atau "document" — untuk mengompres alih-alih mengonversi, lihat bagian Kompres di bawah.
targetWajib. Kode format keluaran, mis. "PNG", "DOCX" — lihat bagian Format yang didukung di bawah.
fileWajib. File yang akan dikonversi (unggahan multipart).
pdf_modeOpsional, hanya untuk kategori image. "pages" (default, merasterisasi setiap halaman) atau "extract" (mengambil gambar tersemat apa adanya) — hanya berlaku jika sumbernya berupa PDF.
pdf_pagesOpsional, hanya untuk kategori image. "all" (default) atau "first".
pdf_qualityOpsional, hanya untuk kategori image. "normal" (default, 150 DPI) atau "high" (300 DPI).

Konversi umum

Referensi cepat untuk pasangan format populer — endpoint yang sama menangani semuanya, hanya dengan kombinasi category/target yang berbeda.

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

Respons

Jika berhasil (200): byte mentah file hasil konversi, dengan header Content-Type dan Content-Disposition yang sesuai. Jika gagal: isi JSON berbentuk {"error": {"code": "...", "message": "..."}} dengan kode status HTTP yang sesuai — lihat bagian Kesalahan di bawah.

Header Value
Content-TypeTipe MIME sebenarnya dari file hasil konversi (mis. image/png, application/pdf).
Content-Dispositionattachment; filename="..." — nama file yang disarankan, sama seperti unduhan file pada umumnya.
Content-LengthUkuran isi respons dalam byte.
compress

Kompres

Perkecil ukuran file tanpa mengubah formatnya — format masuk sama dengan format keluar. Ini adalah pasangan kategori terpisah dari konversi, yaitu image-compress dan document-compress, masing-masing dengan opsinya sendiri di bawah.

image-compress

Format masuk sama dengan format keluar (JPG/PNG/WEBP/GIF) — target_percent menentukan seberapa kecil hasil yang ditargetkan relatif terhadap file asli, bukan pengaturan kualitas tetap.

Field Description
categoryDiisi dengan "image-compress".
target_percentOpsional, 1–100 (default 60). Ukuran target sebagai perkiraan persentase dari file asli — semakin kecil angkanya, semakin kuat kompresinya.
fileWajib. JPG, PNG, WEBP, atau 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 masuk, PDF keluar, melalui pemampatan ulang milik Ghostscript sendiri — tidak akan pernah mengembalikan file yang lebih besar dari yang diunggah (kembali ke file asli jika pemampatan ulang tidak membantu).

Field Description
categoryDiisi dengan "document-compress".
levelOpsional: "low", "medium" (default), "high", atau "none". Kompresi yang lebih tinggi mengorbankan lebih banyak kualitas visual, terutama pada gambar/hasil pindai tersemat.
grayscaleOpsional. "1" untuk sekaligus mengonversi ke grayscale; kosongkan untuk warna penuh.
fileWajib. PDF yang tidak dilindungi kata sandi (gunakan Buka Kunci PDF di situs terlebih dahulu jika masih terkunci).
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-SizeUkuran file yang diunggah dalam byte, sebelum kompresi.
X-Saved-PercentPerkiraan seberapa lebih kecil hasilnya dibandingkan file asli, dalam persentase bilangan bulat (bisa 0).
movie

Video & audio (asinkron)

Konversi video dan audio bisa berjalan selama beberapa menit — terlalu lama untuk mempertahankan satu permintaan sinkron tetap terbuka — sehingga menggunakan alur submit-lalu-poll, bukan endpoint di atas. Kirim sebuah file, dapatkan job_id sebagai balasan langsung, lalu poll statusnya sampai selesai.

Kirim tugas

Bentuk POST multipart yang sama seperti endpoint utama, hanya di URL yang berbeda.

POST https://transconvert.com/api/v1/convert-async.php
Field Description
AuthorizationWajib. "Bearer tc_live_...".
category"video" atau "audio".
targetWajib diisi — mis. "MP4", "MOV", "MP3", "WAV".
fileWajib. File yang akan dikonversi (unggahan multipart).
webhook_urlOpsional. URL http(s) untuk mem-POST hasil job saat selesai, alih-alih hanya melakukan polling ke job-status.php. Harus dapat diresolusi ke alamat publik.
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"

Respons (202 Accepted)

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

Poll status

Poll endpoint ini setiap beberapa detik menggunakan job_id yang Anda terima. "status" berupa salah satu dari queued, processing, completed, atau 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 (opsional)

Jika Anda memberikan webhook_url saat mengirim, kami akan mem-POST isi JSON yang sama ke sana satu kali setelah job selesai — berhasil atau gagal — mencoba beberapa kali lagi jika endpoint Anda tidak merespons. job-status.php tetap berfungsi sebagai cadangan.

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

Unduh hasilnya

Setelah status menjadi "completed", respons menyertakan download_url — URL status yang sama dengan tambahan &download=1. Meminta URL ini akan menstream byte mentah file hasil konversi, dengan header yang sama seperti endpoint lain di halaman ini. Hasil akan dihapus begitu diunduh, atau otomatis dihapus setelah periode penyimpanan singkat jika tidak pernah diunduh.

scheduleHasil tugas dihapus segera setelah diunduh, atau otomatis dihapus setelah periode penyimpanan singkat jika tidak pernah diunduh — segera unduh.

terminal

Contoh

Permintaan yang sama dalam empat bahasa pemrograman — pilih yang sesuai dengan stack Anda. Masing-masing mengonversi file lokal photo.jpg ke PNG lalu menyimpan hasilnya.

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

Kesalahan

Setiap kegagalan mengembalikan bungkus kesalahan JSON berisi "code" yang dapat digunakan kode Anda untuk pencabangan logika, ditambah "message" yang mudah dibaca manusia. Beberapa kesalahan menyertakan kolom tambahan (misalnya, quota_exceeded menyertakan "limit" dan "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_keyHeader Authorization tidak dikirim.
401 invalid_keyKunci tidak ada, atau sudah dicabut.
403 account_suspendedAkun pemilik kunci ini telah ditangguhkan.
403 plan_requiredAkun berada di paket Gratis — akses API memerlukan paket Basic, Lite, Pro, atau Tim.
400 invalid_category"category" bukan "image" atau "document".
400 missing_target"target" kosong.
400 no_fileTidak ada file yang dikirim, atau unggahan gagal — kolom harus diberi nama "file".
413 file_too_largeUkuran file melebihi batas unggah maksimum paket Anda.
429 quota_exceededJatah menit konversi bulanan paket Anda telah habis. Akan diatur ulang di awal bulan kalender berikutnya.
429 concurrency_limitTerlalu banyak konversi yang berjalan bersamaan untuk akun ini (dibagi dengan situs web) — tunggu salah satunya selesai lalu coba lagi.
400/415/422/500/503 conversion_failedFile itu sendiri tidak dapat dikonversi — "message" menjelaskan alasannya. Kode status bervariasi tergantung alasannya: 400/415/422 berarti file atau target tidak akan pernah berhasil sebanyak apa pun Anda mencoba ulang; 500/503 berarti ada masalah di sisi server, dan khusus 503 layak dicoba ulang sebentar lagi.
405 method_not_allowedMetode HTTP salah — endpoint ini hanya menerima POST.
400 invalid_target"target" bukan format keluaran yang didukung untuk kategori tersebut.
404 job_not_foundTidak ada tugas dengan id tersebut untuk akun ini (juga dikembalikan untuk job_id milik akun lain — keberadaannya tidak pernah diungkapkan).
410 result_goneTugas telah selesai, tetapi hasilnya sudah dihapus (hasil dihapus segera setelah diunduh, atau otomatis setelah periode penyimpanan singkat).
500 storage_failedServer tidak dapat menyimpan unggahan untuk diproses di latar belakang. Aman untuk dicoba lagi.

Menangani kesalahan & percobaan ulang

Gunakan kolom JSON "code" untuk pencabangan logika, bukan teks "message" — kata-katanya bisa berubah seiring waktu, kodenya tidak. concurrency_limit layak dicoba ulang sebentar setelah beberapa detik (kondisi ini hilang begitu salah satu konversi Anda yang sedang berjalan selesai); quota_exceeded tidak akan pulih dengan sendirinya sampai bulan berikutnya, jadi jangan mencoba ulang dalam sebuah loop. conversion_failed adalah satu-satunya kode di mana status HTTP masih penting: 503 adalah masalah sementara di sisi server yang layak dicoba ulang sekali secara singkat, sedangkan 400/415/422/500 berarti kombinasi file/target tersebut tidak akan pernah berhasil sebanyak apa pun Anda mengirim ulang. Memeriksa ukuran file di sisi klien sebelum mengunggah akan menghindarkan Anda dari permintaan yang sia-sia karena sudah pasti akan menghasilkan file_too_large.

speed

Paket & batas

Batas API mengikuti paket yang sama dengan yang Anda gunakan di situs web — tidak ada konfigurasi terpisah yang diperlukan.

bolt

Basic

bolt2000 menit konversi / bulan

upload_fileFile hingga 2 GB

sync_alt50 permintaan sekaligus

speed30 permintaan/menit

bolt

Lite

bolt3000 menit konversi / bulan

upload_fileFile hingga 4 GB

sync_alt100 permintaan sekaligus

speed60 permintaan/menit

Paling populer
workspace_premium

Pro

bolt5000 menit konversi / bulan

upload_fileFile hingga 10 GB

sync_altPermintaan sekaligus tanpa batas

speed120 permintaan/menit

group

Tim

bolt10000 menit konversi / bulan

upload_fileFile hingga 20 GB

sync_altPermintaan sekaligus tanpa batas

speed240 permintaan/menit

tollDibagi dengan kuota kredit bulanan tim, jika tim menggunakannya

Setelah batas per menit berlaku, setiap respons menyertakan header X-RateLimit-Limit dan X-RateLimit-Remaining; respons 429 juga menyertakan Retry-After (dalam detik) — gunakan ini untuk memperlambat sebelum mencapai batas, alih-alih baru bereaksi setelah menerima 429.

layers

Format yang didukung

Menggunakan mesin konversi yang persis sama dengan situs web — tidak ada yang eksklusif untuk API atau eksklusif untuk situs web.

image

category: image

Diterima sebagai sumber:

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

Tersedia sebagai target:

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

description

category: document

Diterima sebagai sumber:

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

Tersedia sebagai target:

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

compress

category: image-compress

Sumber dan target (format masuk sama dengan format keluar):

JPG, PNG, WEBP, GIF

compress

category: document-compress

Sumber dan target (format masuk sama dengan format keluar):

PDF

movie

category: video (async)

Sumber dan target (format masuk sama dengan format keluar):

MP4, MOV, AVI, MKV, WEBM

music_note

category: audio (async)

Sumber dan target (format masuk sama dengan format keluar):

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

infoVideo dan audio — baik konversi maupun kompresi — untuk saat ini hanya tersedia di situs web: panggilan HTTP sinkron kurang cocok untuk proses yang bisa memakan waktu beberapa menit.

help

Pertanyaan yang sering diajukan

Apakah API mendukung konversi video atau audio?

Belum — konversi semacam itu bisa memakan waktu beberapa menit, yang kurang cocok untuk satu permintaan HTTP sinkron. Saat ini konversi tersebut tersedia di situs web; dukungan API mungkin menyusul jika suatu saat ada versi API berbasis async/job.

Apa yang terjadi pada kunci saya jika saya turun ke paket Gratis?

Akses API memerlukan paket Basic, Lite, Pro, atau Tim. Jika akun berpindah ke paket Gratis — karena pembatalan, atau langganan yang berakhir — kunci yang sudah ada langsung berhenti berfungsi. Kunci tersebut akan otomatis berfungsi kembali begitu akun kembali ke paket berbayar; Anda tidak perlu membuat kunci baru.

Kapan jatah bulanan saya diatur ulang?

Di awal setiap bulan kalender, bukan pada tanggal penagihan Anda.

Apakah ada mode sandbox atau uji coba?

Belum saat ini — setiap permintaan mengurangi jatah bulanan Anda yang sebenarnya. Gunakan file berukuran kecil selama proses integrasi untuk menghemat jatah tersebut.

Bisakah saya menjalankan konversi secara paralel?

Hingga batas konversi bersamaan paket Anda (lihat Paket & batas di atas) — dibagi dengan konversi yang mungkin sedang Anda jalankan di situs web pada saat bersamaan, bukan jatah terpisah khusus API.

Apakah kompres menjamin file yang lebih kecil?

Untuk document-compress, ya — file ini tidak akan pernah mengembalikan PDF yang lebih besar dari yang diunggah; jika pemampatan ulang Ghostscript tidak membantu, Anda akan menerima kembali file asli tanpa perubahan (X-Saved-Percent akan bernilai 0). Untuk image-compress, target_percent adalah target yang dituju oleh encoder, bukan jaminan mutlak — sumber yang sudah sangat terkompresi mungkin tidak akan mengecil banyak lagi.

Siap untuk memulai?

Buat kunci dan kirim permintaan pertama Anda dalam waktu kurang dari satu menit.

Dapatkan kunci API Anda