API başvuru belgesi
33 dosya aracını kendi kodunuzdan çalıştırın. Bir başlıkta tek anahtar, tek yükleme, sorgulanacak bir durum adresi — SDK gerekmez.
Giriş
Convertavo API, web sitesiyle aynı dönüştürücüleri — PDF, resim, OCR ve medya araçlarını — düz HTTPS üzerinden sunar. Birkaç öngörülebilir kaynak etrafında düzenlenmiştir, multipart/form-data yüklemeleri kabul eder ve her zaman standart HTTP durum kodlarıyla JSON olarak yanıt verir.
Kimlik doğrulama
Panelinizde API anahtarları altından bir anahtar oluşturun. Anahtarlar at_ ile başlar ve bir kez gösterilir: yalnızca bir özet (hash) saklarız; bu yüzden kaybolan bir anahtar geri getirilemez — iptal edin ve yenisini oluşturun. Anahtarı her istekte gönderin:
Authorization: Bearer at_your_key_hereCONVERTAVO_KEY gibi bir ortam değişkeninden okuyun.
Eksik bir anahtar 401 Missing API key, yanlış ya da iptal edilmiş bir anahtar 401 Invalid or revoked API key döndürür.
Hızlı başlangıç
Bir PDF'yi baştan sona sıkıştırın: yükleyin, işi bekleyin, sonucu kaydedin. Dilinizi seçin — seçim sayfa boyunca hatırlanır.
- 1Anahtarınızı ayarlayın
CONVERTAVO_KEYortam değişkeni olarak kaydedin. - 2GerekenlercURL, ext-curl ile PHP,
requestsile Python ya da Node.js 18+. - 3Betiği çalıştırınYükler, her 2 saniyede bir sorgular ve indirir.
# 1. Upload — returns 202 and a status_url
curl -X POST https://convertavo.com/tr/api/v1/tools/compress-pdf/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@report.pdf" \
-F "settings[Compression level]=Balanced (recommended)"
# 2. Poll until status is "done" or "failed"
curl https://convertavo.com/tr/api/v1/conversions/852 \
-H "Authorization: Bearer $CONVERTAVO_KEY"
# 3. Download the signed download_url from step 2 as it is
# (no key needed; it stops working when the file is deleted)
curl -L -o report-small.pdf "https://convertavo.com/tr/download/1814?expires=1791200000&signature=3f9a…"
<?php
const BASE = 'https://convertavo.com/tr/api/v1';
function convertavo(string $method, string $url, array $fields = []): array
{
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY'), 'Accept: application/json'],
CURLOPT_POSTFIELDS => $fields ?: null,
]);
$body = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($code >= 400) {
throw new RuntimeException($body['message'] ?? "HTTP {$code}");
}
return $body;
}
// 1. Upload
$job = convertavo('POST', BASE . '/tools/compress-pdf/convert', [
'files[0]' => new CURLFile('report.pdf'),
'settings[Compression level]' => 'Balanced (recommended)',
]);
// 2. Poll
do {
sleep(2);
$job = convertavo('GET', $job['status_url'] ?? BASE . "/conversions/{$job['id']}");
} while (in_array($job['status'], ['queued', 'processing'], true));
if ($job['status'] === 'failed') {
throw new RuntimeException($job['error']);
}
// 3. Download
foreach ($job['files'] as $file) {
copy($file['download_url'], $file['name']);
}
import os
import time
import requests
BASE = 'https://convertavo.com/tr/api/v1'
session = requests.Session()
session.headers['Authorization'] = f"Bearer {os.environ['CONVERTAVO_KEY']}"
# 1. Upload
with open('report.pdf', 'rb') as f:
r = session.post(
f'{BASE}/tools/compress-pdf/convert',
files=[('files[]', f)],
data={'settings[Compression level]': 'Balanced (recommended)'},
timeout=120,
)
r.raise_for_status()
job = r.json()
status_url = job['status_url']
# 2. Poll
while job['status'] in ('queued', 'processing'):
time.sleep(2)
job = session.get(status_url, timeout=30).json()
if job['status'] == 'failed':
raise RuntimeError(job['error'])
# 3. Download
for file in job['files']:
with open(file['name'], 'wb') as out:
out.write(requests.get(file['download_url'], timeout=120).content)
import { readFile, writeFile } from 'node:fs/promises';
const BASE = 'https://convertavo.com/tr/api/v1';
const headers = { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` };
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
// 1. Upload
const form = new FormData();
form.append('files[]', new Blob([await readFile('report.pdf')]), 'report.pdf');
form.append('settings[Compression level]', 'Balanced (recommended)');
let res = await fetch(`${BASE}/tools/compress-pdf/convert`, { method: 'POST', headers, body: form });
let job = await res.json();
if (res.status !== 202) throw new Error(job.message);
const statusUrl = job.status_url;
// 2. Poll
while (['queued', 'processing'].includes(job.status)) {
await sleep(2000);
job = await (await fetch(statusUrl, { headers })).json();
}
if (job.status === 'failed') throw new Error(job.error);
// 3. Download
for (const file of job.files) {
const data = Buffer.from(await (await fetch(file.download_url)).arrayBuffer());
await writeFile(file.name, data);
}
Bir dönüştürme nasıl çalışır
Dönüştürmeler bir kuyrukta çalışır; bu yüzden yükleme hemen yanıt döner ve iş arka planda — genellikle saniyeler içinde — biter.
status_url ile 202queued → processing → done ya da faileddownload_url, bir saat geçerli/api/v1/toolsAraçları listele
Her etkin aracı, dönüştürme uç noktasının beklediği tam ayar adlarıyla döndürür. Seçenekleri koda sabit yazmak yerine bunu kullanın. "api_supported": false olan araçlar bir linkten çalışır ve yalnızca web sitesinde kullanılabilir.
curl https://convertavo.com/tr/api/v1/tools \
-H "Authorization: Bearer $CONVERTAVO_KEY"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);
import os
import requests
response = requests.get(
'https://convertavo.com/tr/api/v1/tools',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
timeout=30,
)
response.raise_for_status()
print(response.json())
const response = await fetch('https://convertavo.com/tr/api/v1/tools', {
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
});
console.log(await response.json());
{
"tools": [
{
"key": "compress-pdf",
"name": "Compress PDF",
"category": "PDF",
"input": "file",
"api_supported": true,
"accepts": "PDF",
"accepts_multiple_files": false,
"settings": [ … ],
"switches": [ … ]
}
]
}
/api/v1/tools/{key}Bir aracı getir
Anahtarına göre tek bir araç. Bilinmeyen ya da devre dışı bir araç için 404 döndürür.
| Yol parametresi | Tür | Açıklama |
|---|---|---|
key zorunlu | string | Araç anahtarı, örn. compress-image. Araç başvurusuna bakın. |
curl https://convertavo.com/tr/api/v1/tools/compress-image \
-H "Authorization: Bearer $CONVERTAVO_KEY"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/compress-image');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);
import os
import requests
response = requests.get(
'https://convertavo.com/tr/api/v1/tools/compress-image',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
timeout=30,
)
response.raise_for_status()
print(response.json())
const response = await fetch('https://convertavo.com/tr/api/v1/tools/compress-image', {
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
});
console.log(await response.json());
{
"key": "compress-image",
"name": "Compress Image",
"category": "Image",
"input": "file",
"api_supported": true,
"accepts": "JPG, PNG, WebP",
"accepts_multiple_files": true,
"settings": [
{ "name": "Quality", "type": "range" },
{ "name": "Output format", "type": "select",
"options": ["Keep original", "JPG", "WebP", "AVIF"] },
{ "name": "Max width", "type": "number", "example": "1920" }
],
"switches": [
{ "index": 0, "name": "Strip EXIF and location data" }
]
}
/api/v1/tools/{key}/convertDosyaları dönüştür
Bir ya da daha fazla dosya yükler ve dönüştürmeyi kuyruğa alır. multipart/form-data gönderin. Hemen 202 Accepted ile yanıt verir; sonuç için status_url'yi izleyin.
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu | file[] | İstek başına planınızın grup boyutuna kadar (Sınırlar'a bakın); daha büyük grupları bölün. Her dosya aracın kredisini tutar. Çoklu dosya desteği olmayan araçlar tek dosya alır. |
settings[<name>] isteğe bağlı | string | Tam adıyla bir ayar, örn. settings[Output format]=WebP. Gönderilmeyen ayarlar aracın varsayılanını kullanır. |
switches[<index>] isteğe bağlı | boolean | Konumuna göre bir onay kutusu seçeneği; 1 açık, 0 kapalı. Gönderilmeyen anahtarlar kapalıdır. |
curl -X POST https://convertavo.com/tr/api/v1/tools/compress-image/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@photo.jpg" \
-F 'settings[Quality]=80' \
-F 'settings[Output format]=WebP' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/compress-image/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('photo.jpg'),
'settings[Quality]' => '80',
'settings[Output format]' => 'WebP',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/compress-image/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('photo.jpg', 'rb'))],
data={
'settings[Quality]': '80',
'settings[Output format]': 'WebP',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('photo.jpg')]), basename('photo.jpg'));
form.append('settings[Quality]', '80');
form.append('settings[Output format]', 'WebP');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/compress-image/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
{
"id": 852,
"status": "queued",
"status_url": "https://convertavo.com/tr/api/v1/conversions/852",
"credits_charged": 1,
"credits_remaining": 2999
}
/api/v1/conversions/{id}Bir dönüştürmeyi getir
Başlattığınız bir dönüştürmenin durumu. Başka bir hesaba ait bir dönüştürme 404 döndürür.
| Alan | Tür | Açıklama |
|---|---|---|
status | enum | queued, processing, done ya da failed. |
error | string | null | failed olduğunda: bir kişiye gösterilmesi güvenli bir cümle (İngilizce). |
files[] | array | done olduğunda: name, bayt cinsinden size, download_url. |
download_all_url | string | Bir iş birden fazla dosya ürettiğinde: hepsi tek bir ZIP olarak. |
expires_at | ISO 8601 | Çıktı dosyalarının silineceği zaman. |
curl https://convertavo.com/tr/api/v1/conversions/852 \
-H "Authorization: Bearer $CONVERTAVO_KEY"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/conversions/852');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);
import os
import requests
response = requests.get(
'https://convertavo.com/tr/api/v1/conversions/852',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
timeout=30,
)
response.raise_for_status()
print(response.json())
const response = await fetch('https://convertavo.com/tr/api/v1/conversions/852', {
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
});
console.log(await response.json());
{
"id": 852,
"tool_key": "compress-image",
"status": "done",
"error": null,
"files": [
{
"name": "photo.webp",
"size": 58766,
"download_url": "https://convertavo.com/tr/download/1814?expires=1794545640&signature=3f9a\u2026"
}
],
"expires_at": "2026-11-13T09:54:00+05:00"
}
Ayarlar ve anahtarlar
Seçenekler her aracın sayfasındaki kontrollerin aynısıdır; adlar ise o sayfaların İngilizce sürümünde gördüğünüz kelimelerdir.
- Ayarlar etiketiyle belirtilir:
settings[Compression level]=Maximum compression. Boşluklar ve noktalama adın parçasıdır; HTTP kütüphaneniz onları kodlar. - Seçim ayarları, büyük/küçük harf dahil, listelenen değerlerden birini tam olarak kabul eder.
- Anahtarlar,
0'dan başlayarak konuma göre onay kutularıdır. Web sitesinde ilk anahtar işaretli başlar; API üzerinden ise siz1göndermedikçe her anahtar kapalıdır. - Bilinmeyen adlar reddedilmez, yok sayılır — bir seçeneğin etkisi yok gibi görünüyorsa yazımı Bir aracı getir ile kontrol edin.
Sınırlar ve kotalar
| Sınır | Free | Basic | Standard | Business | Lifetime |
|---|---|---|---|---|---|
| Krediler | günde 50 | ayda 3.000 | ayda 10.000 | ayda 40.000 | tek seferlik 60.000 |
| Dakika başına istek | 10 | 30 | 60 | 120 | 60 |
| En büyük dosya | 100 MB | 200 MB | 500 MB | 1.000 MB | 500 MB |
| İstek başına dosya | 10 | 20 | 50 | 100 | 50 |
- Dönüştürmeler, web sitesiyle aynı fiyatlarla ve aynı bakiyeden dosya başına kredi tutar: her biri 1 kredilik on resim 10 kredi tutar.
- Sorgulama, araçları listeleme ve sonuçları indirme hiçbir şeye mal olmaz, ama her istek planınızın dakika başına istek sınırına sayılır.
- Her dönüştürme yanıtı
credits_chargedvecredits_remainingiçerir; böylece bir betik kendi hızını ayarlayabilir. - Ekip üyeleri ekibin kredilerini harcar.
Hatalar
Hatalar, insan tarafından okunabilir bir message içeren JSON gövdesi döndürür. Doğrulama hataları (422) ayrıca alana göre anahtarlanmış bir errors nesnesi içerir.
| Durum | Anlamı | Ne yapmalı |
|---|---|---|
| 202 | Kabul edildi — dönüştürme kuyrukta. | status_url'yi sorgulayın. |
| 401 | Eksik, yanlış ya da iptal edilmiş anahtar. | Authorization başlığını kontrol edin. |
| 404 | Bilinmeyen araç ya da size ait olmayan bir dönüştürme. | Anahtarı ya da kimliği kontrol edin. |
| 410 | Dosyası silinmiş bir indirme linki. | Yeniden dönüştürün. |
| 422 | Dosya yok, planınızın boyut sınırını aşan bir dosya ya da yalnızca linkle çalışan bir araç. | errors'u okuyun ve isteği düzeltin. |
| 402 | Bu istek için yeterli kredi yok. | Gövdede credits_needed, credits_remaining ve credits_reset_at vardır. Yenilenmeyi bekleyin ya da planınızı yükseltin. |
| 429 | Planınız için dakikada çok fazla istek. | Retry-After saniyesi kadar bekleyin, sonra yeniden deneyin. |
| 5xx | Bizim tarafımızda bir şey başarısız oldu. | Üstel geri çekilmeyle yeniden deneyin. |
{
"message": "The files field is required.",
"errors": {
"files": ["The files field is required."]
}
}
İndirmeler ve saklama
- İndirme adresleri API anahtarı gerektirmez; bu yüzden birini bir tarayıcıya verebilirsiniz. Tahmin edilemezler — geçerli oldukları sürece onları gizli tutun.
- Girdi ve çıktı dosyaları dönüştürmeden bir saat sonra silinir; sonrasında link
410döndürür. - Dönüştürme kaydı (ad, boyut, durum) panel geçmişinizde kalır.
En iyi uygulamalar
done ya da failed'da durun.5xx ve ağ hatalarını geri çekilmeyle yeniden deneyin. 4xx'i yeniden denemeyin — isteği düzeltin.Mevcut sınırlamalar
- Henüz webhook yok — durum adresini sorgulayın.
- Dönüştürme geçmişi için uç nokta yok; paneli kullanın.
- Uyumsuz değişiklikler
/v2olarak yayınlanacak;/v1belgelendiği gibi kalır.
QR Kod API
Statik ve dinamik QR kodlar oluşturun, onları SVG, PNG, JPG, WebP ya da PDF olarak indirin, dinamik bir kodun nereye yönlendirdiğini değiştirin ve okutma istatistiklerini okuyun. Yukarıdaki her şeyle aynı anahtarı ve web sitesiyle aynı motoru kullanır: aynı içerik biçimleri, aynı tasarım kuralları ve bir kodun size verilmeden önce gerçekten okunduğuna dair aynı kontrol.
| Uç nokta | Ne yapar |
|---|---|
GET /api/v1/qr/types | Kullanabileceğiniz türler ve her birinin aldığı alanlar. |
POST /api/v1/qr/render | Bir resim oluşturur ve döndürür. Hiçbir şey kaydedilmez. |
POST /api/v1/qr | Statik ya da dinamik bir kod kaydeder. |
GET /api/v1/qr | Kodlarınızı listeler (mode, status, type, q, per_page). |
GET · PATCH · DELETE /api/v1/qr/{id} | Tek bir kodu okur, değiştirir ya da siler. id, kod oluşturulduğunda döndürülen id'dir. |
GET /api/v1/qr/{id}/image | Kod, bir resim dosyası olarak. |
GET /api/v1/qr/{id}/analytics | Okutmalar, tekil ziyaretçiler, cihazlar, ülkeler ve daha fazlası (yalnızca dinamik). |
403). Çağrılar planınızın dakika başına istek sınırına sayılır ve her anahtar dakikada 60 istekle — resim oluşturan her şey için dakikada 20 istekle — sınırlıdır. Aşmak, bir Retry-After başlığıyla 429 döndürür. Kod kaydetme ve dinamik kodlar web sitesindeki plan haklarının aynısını izler.
datatürün alanlarını tutar. Adlar için/qr/types'a sorun — bir Wi-Fi kodussid,password,authenticationalır; bir linkurlalır.designisteğe bağlıdır ve her alanı doğrulanır. Renkler#rrggbbbiçimindedir; güvenilir şekilde okunmayacak bir tasarım422,scannability_scoredeğeri vereasonsile reddedilir.- Barındırılan sayfalar (kartvizit, menü, dosya sayfaları…) ve uygulama mağazası linkleri API üzerinden değil, web sitesinde yapılır.
- Bir logo
data:resmi olarak gönderilebilir; SVG logolar betiklerden temizlenir ve gerçekten resim olmayan her şey reddedilir. - Başkasına ait bir kod, tıpkı var olmamış gibi
404yanıtı verir.
/api/v1/qr/renderQR resmi oluştur
Kodun ne söyleyeceğini gönderin; resim hemen geri gelir. format svg, png (varsayılan), jpg, webp ya da pdf'dir; size piksel cinsindendir, en fazla 2048.
curl -X POST https://convertavo.com/tr/api/v1/qr/render \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"wifi","data":{"ssid":"Guest","password":"welcome-2026","authentication":"WPA"},"design":{"dots":{"shape":"rounded","color":{"type":"solid","value":"#1e3a8a"}}},"format":"png","size":512}' \
-o wifi.png
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/qr/render');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CONVERTAVO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['type' => 'wifi', 'data' => ['ssid' => 'Guest', 'password' => 'welcome-2026', 'authentication' => 'WPA'], 'design' => ['dots' => ['shape' => 'rounded', 'color' => ['type' => 'solid', 'value' => '#1e3a8a']]], 'format' => 'png', 'size' => 512]),
]);
$response = curl_exec($ch);
file_put_contents('wifi.png', $response);
import os
import requests
response = requests.request(
'POST',
'https://convertavo.com/tr/api/v1/qr/render',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
json={'type': 'wifi', 'data': {'ssid': 'Guest', 'password': 'welcome-2026', 'authentication': 'WPA'}, 'design': {'dots': {'shape': 'rounded', 'color': {'type': 'solid', 'value': '#1e3a8a'}}}, 'format': 'png', 'size': 512},
timeout=60,
)
response.raise_for_status()
open('wifi.png', 'wb').write(response.content)
import { writeFile } from 'node:fs/promises';
const response = await fetch('https://convertavo.com/tr/api/v1/qr/render', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.CONVERTAVO_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({"type":"wifi","data":{"ssid":"Guest","password":"welcome-2026","authentication":"WPA"},"design":{"dots":{"shape":"rounded","color":{"type":"solid","value":"#1e3a8a"}}},"format":"png","size":512}),
});
if (!response.ok) throw new Error((await response.json()).message);
await writeFile('wifi.png', Buffer.from(await response.arrayBuffer()));
{
"message": "This design would not scan reliably, so it was not made.",
"scannability_score": 40,
"reasons": [
"Contrast between the dots and background is too low (1.4:1, minimum 4.0:1) …"
]
}
/api/v1/qrQR kod oluştur
mode ya static (varsayılan: veri sonsuza kadar kodun içindedir) ya da dynamic'tir (kod, sonradan yeniden yönlendirebileceğiniz bir kısa link tutar — tür, url gibi bir web adresi üretmelidir). İsteğe bağlı: name, tags, folder_id, design ve dinamik kodlar için custom_slug. 201 döndürür.
curl -X POST https://convertavo.com/tr/api/v1/qr \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"url","mode":"dynamic","name":"Spring menu","data":{"url":"https://example.com/menu"},"tags":["spring"]}'
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/qr');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CONVERTAVO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['type' => 'url', 'mode' => 'dynamic', 'name' => 'Spring menu', 'data' => ['url' => 'https://example.com/menu'], 'tags' => ['spring']]),
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));
import os
import requests
response = requests.request(
'POST',
'https://convertavo.com/tr/api/v1/qr',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
json={'type': 'url', 'mode': 'dynamic', 'name': 'Spring menu', 'data': {'url': 'https://example.com/menu'}, 'tags': ['spring']},
timeout=60,
)
response.raise_for_status()
print(response.json())
const response = await fetch('https://convertavo.com/tr/api/v1/qr', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.CONVERTAVO_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({"type":"url","mode":"dynamic","name":"Spring menu","data":{"url":"https://example.com/menu"},"tags":["spring"]}),
});
console.log(await response.json());
{
"data": {
"id": "0f6c1b52-…",
"name": "Spring menu",
"type": "url",
"mode": "dynamic",
"status": "active",
"short_url": "https://…/q/k3d9x2p",
"destination_url": "https://example.com/menu",
"scannability_score": 100,
"scan_count": 0,
"links": {
"self": "https://…/api/v1/qr/0f6c1b52-…",
"image": "https://…/api/v1/qr/0f6c1b52-…/image",
"analytics": "https://…/api/v1/qr/0f6c1b52-…/analytics"
}
}
}
/api/v1/qr PATCH/api/v1/qr/{id}Listele, oku, güncelle, sil
PATCH; name, tags ve — dinamik kodlar için — destination (web sitesinde yazılan bir hedef gibi kontrol edilir) ve status (paused ya da active) kabul eder. Basılı kod asla değişmez. DELETE, 204 döndürür.
curl -X PATCH https://convertavo.com/tr/api/v1/qr/0f6c1b52-0000-0000-0000-000000000000 \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-H "Content-Type: application/json" \
-d '{"destination":"https://example.com/summer-menu"}'
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/qr/0f6c1b52-0000-0000-0000-000000000000');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CONVERTAVO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['destination' => 'https://example.com/summer-menu']),
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));
import os
import requests
response = requests.request(
'PATCH',
'https://convertavo.com/tr/api/v1/qr/0f6c1b52-0000-0000-0000-000000000000',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
json={'destination': 'https://example.com/summer-menu'},
timeout=60,
)
response.raise_for_status()
print(response.json())
const response = await fetch('https://convertavo.com/tr/api/v1/qr/0f6c1b52-0000-0000-0000-000000000000', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${process.env.CONVERTAVO_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({"destination":"https://example.com/summer-menu"}),
});
console.log(await response.json());
{ "message": "That website is not allowed on this service." }
/api/v1/qr/{id}/image?format=svg&size=1024Resim indir
Kayıtlı bir kodu saklanan tasarımından oluşturur. Dinamik bir kodun resmi kısa linkini kodlar; bu yüzden bastığınız dosyanın asla değişmesi gerekmez.
curl -X GET https://convertavo.com/tr/api/v1/qr/0f6c1b52-0000-0000-0000-000000000000/image?format=svg&size=1024 \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-o qr.svg
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/qr/0f6c1b52-0000-0000-0000-000000000000/image?format=svg&size=1024');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CONVERTAVO_KEY'),
'Content-Type: application/json',
],
]);
$response = curl_exec($ch);
file_put_contents('qr.svg', $response);
import os
import requests
response = requests.request(
'GET',
'https://convertavo.com/tr/api/v1/qr/0f6c1b52-0000-0000-0000-000000000000/image?format=svg&size=1024',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
timeout=60,
)
response.raise_for_status()
open('qr.svg', 'wb').write(response.content)
import { writeFile } from 'node:fs/promises';
const response = await fetch('https://convertavo.com/tr/api/v1/qr/0f6c1b52-0000-0000-0000-000000000000/image?format=svg&size=1024', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.CONVERTAVO_KEY}`,
'Content-Type': 'application/json',
},
});
if (!response.ok) throw new Error((await response.json()).message);
await writeFile('qr.svg', Buffer.from(await response.arrayBuffer()));
/api/v1/qr/{id}/analyticsOkutma istatistikleri
range; today, 7d, 30d (varsayılan), 90d, 365d ya da from ve to tarihleriyle custom'dur. Tüm tarihler UTC'dir. Ziyaretçiler sayılır, asla tanımlanmaz.
curl -X GET https://convertavo.com/tr/api/v1/qr/0f6c1b52-0000-0000-0000-000000000000/analytics?range=7d \
-H "Authorization: Bearer $CONVERTAVO_KEY"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/qr/0f6c1b52-0000-0000-0000-000000000000/analytics?range=7d');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CONVERTAVO_KEY'),
'Content-Type: application/json',
],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));
import os
import requests
response = requests.request(
'GET',
'https://convertavo.com/tr/api/v1/qr/0f6c1b52-0000-0000-0000-000000000000/analytics?range=7d',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
timeout=60,
)
response.raise_for_status()
print(response.json())
const response = await fetch('https://convertavo.com/tr/api/v1/qr/0f6c1b52-0000-0000-0000-000000000000/analytics?range=7d', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.CONVERTAVO_KEY}`,
'Content-Type': 'application/json',
},
});
console.log(await response.json());
{
"data": {
"from": "2026-09-16", "to": "2026-09-22",
"totals": { "scans": 412, "unique": 301 },
"delta": { "scans": 12.5, "unique": 8.1 },
"series": [ … ],
"breakdowns": { "device": [ … ], "country": [ … ], … }
}
}
Fatura API
Faturalar, teklifler ve iade faturaları oluşturun, düzenleyin ve takip edin; müşterilerinizi tutun; ödemeleri kaydedin; PDF'yi ve EN 16931 ile uyumlu XML'i indirin ve bir fatura görüntülendiğinde, ödendiğinde ya da vadesi geçtiğinde kendi yazılımınıza haber verilsin. Yukarıdaki her şeyle aynı anahtarı ve Fatura Oluşturucu ile aynı motoru kullanır: aynı doğrulama, aynı toplamlar, aynı numaralandırma, aynı PDF.
| Uç nokta | Ne yapar |
|---|---|
POST /api/v1/invoices | Bir taslak oluşturur ya da "issue": true ile hemen düzenler. |
GET /api/v1/invoices | Belgeleri en yeniden başlayarak listeler (status, type, client_id, issued_from, issued_to, q). |
GET · PATCH · DELETE /api/v1/invoices/{id} | Bir belgeyi okur; bir taslağı değiştirir ya da siler. |
POST /api/v1/invoices/{id}/issue | Bir taslağı düzenler: numara şimdi verilir. |
POST /api/v1/invoices/{id}/payments | Bir ödeme kaydeder. |
POST /api/v1/invoices/{id}/send · /cancel | Müşteriye e-postayla gönderir · iptal eder. |
GET /api/v1/invoices/{id}/pdf | PDF. |
GET /api/v1/invoices/{id}/pdf-a3 · /xml/ubl · /xml/cii | Yapılandırılmış veri (faturalar ve iade faturaları). |
GET · POST /api/v1/clients, GET · PATCH · DELETE /api/v1/clients/{id} | Müşterileriniz. |
GET /api/v1/businesses | Adına fatura kestiğiniz işletmeler. |
403). Bir belge düzenlemek, tıpkı web sitesindeki gibi bir kredi harcar; taslaklar, okuma ve ödemeler ücretsizdir. Dakika başına istekler planınızı izler ve aşmak Retry-After ile 429 döndürür.
- Tutarlar belgenin para biriminde ondalık metin olarak gönderilir —
"1250.50", asla kayan noktalı sayı değil. İki kez geri gelirler:amountsiçinde ondalık metin olarak veamounts_minoriçinde küçük birim cinsinden tam sayı olarak; hesaplamalar için tam sayıları kullanın. Sunucu her toplamı kendisi hesaplar; istekteki toplamlar yok sayılır. - Idempotency. Her
POST,PATCHya daDELETEile birIdempotency-Keybaşlığı gönderin. 24 saat içinde aynı gövdeyle aynı anahtar,Idempotent-Replayed: trueolarak işaretlenmiş ilk yanıtı yeniden döndürür — yani bir bağlantı koparsa yeniden gönderin yeter. Farklı bir gövdeyle aynı anahtar422ile reddedilir. - Sayfalama imleçle yapılır:
nullolana kadarmeta.next_cursordeğerinicursorolarak geri gönderin.per_pageen fazla 100 olabilir. - Başkasına ait bir fatura ya da müşteri, tıpkı var olmamış gibi
404yanıtı verir. - Makinelerin okuyabildiği tam başvuru belgesi: bu uç noktaları sunan koddan üretilmiş OpenAPI 3.1 belgesi.
/api/v1/invoicesFatura oluştur ve düzenle
Gövde, faturanın düzenleyicinin tuttuğu hâlidir: currency, lines (her biri description, quantity, unit_price, tax_rate, tax_category ile) ve isteğe bağlı olarak tarihler, buyer, seller, indirimler, kargo, notlar ve şablon. Alıcıyı kayıtlı bir müşteriden doldurmak için bir client_id, hangi işletmenizden geleceğini seçmek için bir business_id verin. "issue": true ile hemen numaralandırılır ve yanıt pdf_url değerini taşır; olmadan, değiştirebileceğiniz bir taslak olarak kalır.
curl -X POST https://convertavo.com/tr/api/v1/invoices \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-H "Content-Type: application/json" \
-d '{"issue":true,"currency":"USD","issue_date":"2026-10-20","due_date":"2026-11-03","buyer":{"name":"Northwind Studio","email":"accounts@northwind.example"},"lines":[{"description":"Logo design","quantity":"1","unit_price":"450.00","tax_rate":"0","tax_category":"zero"},{"description":"Brand guidelines (hours)","quantity":"6","unit_price":"65.00","tax_rate":"0","tax_category":"zero"}],"notes":"Thank you for your business."}'
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/invoices');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CONVERTAVO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['issue' => true, 'currency' => 'USD', 'issue_date' => '2026-10-20', 'due_date' => '2026-11-03', 'buyer' => ['name' => 'Northwind Studio', 'email' => 'accounts@northwind.example'], 'lines' => [['description' => 'Logo design', 'quantity' => '1', 'unit_price' => '450.00', 'tax_rate' => '0', 'tax_category' => 'zero'], ['description' => 'Brand guidelines (hours)', 'quantity' => '6', 'unit_price' => '65.00', 'tax_rate' => '0', 'tax_category' => 'zero']], 'notes' => 'Thank you for your business.']),
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));
import os
import requests
response = requests.request(
'POST',
'https://convertavo.com/tr/api/v1/invoices',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
json={'issue': True, 'currency': 'USD', 'issue_date': '2026-10-20', 'due_date': '2026-11-03', 'buyer': {'name': 'Northwind Studio', 'email': 'accounts@northwind.example'}, 'lines': [{'description': 'Logo design', 'quantity': '1', 'unit_price': '450.00', 'tax_rate': '0', 'tax_category': 'zero'}, {'description': 'Brand guidelines (hours)', 'quantity': '6', 'unit_price': '65.00', 'tax_rate': '0', 'tax_category': 'zero'}], 'notes': 'Thank you for your business.'},
timeout=60,
)
response.raise_for_status()
print(response.json())
const response = await fetch('https://convertavo.com/tr/api/v1/invoices', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.CONVERTAVO_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({"issue":true,"currency":"USD","issue_date":"2026-10-20","due_date":"2026-11-03","buyer":{"name":"Northwind Studio","email":"accounts@northwind.example"},"lines":[{"description":"Logo design","quantity":"1","unit_price":"450.00","tax_rate":"0","tax_category":"zero"},{"description":"Brand guidelines (hours)","quantity":"6","unit_price":"65.00","tax_rate":"0","tax_category":"zero"}],"notes":"Thank you for your business."}),
});
console.log(await response.json());
{
"data": {
"id": "0199a2b4-7a10-71d4-8c3b-1a2b3c4d5e6f",
"object": "invoice",
"type": "invoice",
"status": "partially_paid",
"number": "INV-2026-0042",
"business_id": 12,
"client_id": 34,
"client_name": "Northwind Studio",
"currency": "USD",
"language": "en",
"issue_date": "2026-10-20",
"due_date": "2026-11-03",
"reference": "Project Kite",
"po_number": "PO-77",
"related_invoice_id": "0199a2b4-5d00-7e2f-a1b2-c3d4e5f60718",
"amounts": {
"subtotal": "840.00",
"discount": "0.00",
"shipping": "0.00",
"tax": "0.00",
"withholding": "0.00",
"rounding": "0.00",
"total": "840.00",
"payable": "840.00",
"paid": "400.00",
"credited": "0.00",
"balance": "440.00"
},
"amounts_minor": {
"subtotal": 84000,
"discount": 0,
"shipping": 0,
"tax": 0,
"withholding": 0,
"rounding": 0,
"total": 84000,
"payable": 84000,
"paid": 40000,
"credited": 0,
"balance": 44000
},
"issued_at": "2026-10-20T09:05:00+05:00",
"sent_at": "2026-10-20T09:06:00+05:00",
"viewed_at": "2026-10-20T11:30:00+05:00",
"paid_at": "2026-10-21T10:00:00+05:00",
"cancelled_at": "2026-10-21T10:00:00+05:00",
"pdf_url": "https://convertavo.com/api/v1/invoices/0199a2b4-7a10-71d4-8c3b-1a2b3c4d5e6f/pdf",
"pdf_sha256": "abababababababababababababababababababababababababababababababab",
"created_at": "2026-10-20T09:00:00+05:00",
"updated_at": "2026-10-21T10:00:00+05:00"
}
}
Hatalar, alan yoluna göre anahtarlanmış errors ile 422 olarak gelir — lines.1.unit_price — böylece doğru alanın yanında gösterilebilirler. Kredi kalmadıysa düzenleme 402 yanıtı verir ve taslak tutulur (draft_id).
/api/v1/invoices/{id}/paymentsFaturalar, ödemeler, gönderme
Bir ödeme; paid_on, method ve reference ile bir amount (ondalık metin) ya da amount_minor'dur. Kendi external_id değerinizi — bir banka ya da ödeme altyapısı işlem kimliği — verin; aynı ödeme kaç kez gelirse gelsin bir kez kaydedilir. Fatura kendiliğinden partially_paid ve paid durumlarına geçer.
curl -X POST https://convertavo.com/tr/api/v1/invoices/0199a2b4-7a10-71d4-8c3b-1a2b3c4d5e6f/payments \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-H "Content-Type: application/json" \
-d '{"amount":"300.00","method":"bank_transfer","reference":"TRX-9921","external_id":"bank-tx-55120"}'
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/invoices/0199a2b4-7a10-71d4-8c3b-1a2b3c4d5e6f/payments');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CONVERTAVO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['amount' => '300.00', 'method' => 'bank_transfer', 'reference' => 'TRX-9921', 'external_id' => 'bank-tx-55120']),
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));
import os
import requests
response = requests.request(
'POST',
'https://convertavo.com/tr/api/v1/invoices/0199a2b4-7a10-71d4-8c3b-1a2b3c4d5e6f/payments',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
json={'amount': '300.00', 'method': 'bank_transfer', 'reference': 'TRX-9921', 'external_id': 'bank-tx-55120'},
timeout=60,
)
response.raise_for_status()
print(response.json())
const response = await fetch('https://convertavo.com/tr/api/v1/invoices/0199a2b4-7a10-71d4-8c3b-1a2b3c4d5e6f/payments', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.CONVERTAVO_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({"amount":"300.00","method":"bank_transfer","reference":"TRX-9921","external_id":"bank-tx-55120"}),
});
console.log(await response.json());
{
"data": { "id": 56, "object": "payment", "amount_minor": 30000, "amount": "300.00", "currency": "USD", "paid_on": "2026-10-21", "method": "bank_transfer", "reference": "TRX-9921" },
"invoice": { "id": "0199a2b4-…", "status": "partially_paid", "amounts_minor": { "payable": 84000, "paid": 30000, "balance": 54000, … }, … }
}
- Düzenlenmiş bir belge değiştirilemez ya da silinemez (
409): web sitesinden bir iade faturasıyla düzeltin ya da hiçbir şey ödenmemiş veya iade edilmemişken iptal edin. - Zaten düzenlenmiş bir belgede
POST …/issueonu değiştirmeden döndürür — tekrarlamak güvenlidir. POST …/sendmüşteriye belgenin dilinde PDF'yi ve özel bir linki e-postalar;toadresi geçersiz kılar.
/api/v1/clientsMüşteriler
En az bir name ile oluşturun; email, address, tax_number, country (ISO kodu), currency, language ve payment_terms_days ekleyin. PATCH yalnızca gönderdiğiniz alanları değiştirir (null birini temizler) ve "archived": true arşivler. Belgeleri olan bir müşteri silinemez — bunun yerine arşivleyin, geçmişi bütün kalsın.
curl -X POST https://convertavo.com/tr/api/v1/clients \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Northwind Studio","email":"accounts@northwind.example","country":"US","currency":"USD"}'
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/clients');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CONVERTAVO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['name' => 'Northwind Studio', 'email' => 'accounts@northwind.example', 'country' => 'US', 'currency' => 'USD']),
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));
import os
import requests
response = requests.request(
'POST',
'https://convertavo.com/tr/api/v1/clients',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
json={'name': 'Northwind Studio', 'email': 'accounts@northwind.example', 'country': 'US', 'currency': 'USD'},
timeout=60,
)
response.raise_for_status()
print(response.json())
const response = await fetch('https://convertavo.com/tr/api/v1/clients', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.CONVERTAVO_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({"name":"Northwind Studio","email":"accounts@northwind.example","country":"US","currency":"USD"}),
});
console.log(await response.json());
/api/v1/invoices/{id}/pdf-a3PDF/A-3 & XML
Faturalar ve iade faturaları için: aynı belge, Avrupa e-fatura standardı EN 16931 ile uyumlu yapılandırılmış veri olarak. /xml/ubl UBL 2.1, /xml/cii UN/CEFACT CII'dir; /pdf-a3 ise içinde CII dosyası factur-x.xml olarak bulunan PDF'nin PDF/A-3 kopyasıdır — insanların okuduğu, muhasebe yazılımlarının içe aktardığı tek bir dosya.
409 yanıtı verir, çünkü bu biçimlerde onun için yer yoktur.
curl -X GET https://convertavo.com/tr/api/v1/invoices/0199a2b4-7a10-71d4-8c3b-1a2b3c4d5e6f/xml/ubl \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-o invoice-ubl.xml
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/invoices/0199a2b4-7a10-71d4-8c3b-1a2b3c4d5e6f/xml/ubl');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CONVERTAVO_KEY'),
'Content-Type: application/json',
],
]);
$response = curl_exec($ch);
file_put_contents('invoice-ubl.xml', $response);
import os
import requests
response = requests.request(
'GET',
'https://convertavo.com/tr/api/v1/invoices/0199a2b4-7a10-71d4-8c3b-1a2b3c4d5e6f/xml/ubl',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
timeout=60,
)
response.raise_for_status()
open('invoice-ubl.xml', 'wb').write(response.content)
import { writeFile } from 'node:fs/promises';
const response = await fetch('https://convertavo.com/tr/api/v1/invoices/0199a2b4-7a10-71d4-8c3b-1a2b3c4d5e6f/xml/ubl', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.CONVERTAVO_KEY}`,
'Content-Type': 'application/json',
},
});
if (!response.ok) throw new Error((await response.json()).message);
await writeFile('invoice-ubl.xml', Buffer.from(await response.arrayBuffer()));
Webhook'lar
Panelde (İşletme sekmesi → Webhook'lar) bir https adresi ekleyin ve olayları seçin. Her biri bir JSON POST'udur — olayın type değeri, bir created zamanı ve data.object olarak fatura (ödeme olaylarında ayrıca data.payment):
invoice.issued, invoice.sent, invoice.viewed, invoice.reminder_sent, invoice.overdue, invoice.paid, invoice.cancelled, invoice.credited, payment.recorded, payment.refunded, quote.accepted, quote.declined
- İmzayı doğrulayın.
Convertavo-Signature,t=<unix time>,v1=<signature>biçimindedir; burada imza, uç noktanızın imzalama gizli anahtarıyla<t>.<raw body>değerinin onaltılık HMAC-SHA256'sıdır. Yeniden hesaplayın, sabit sürede karşılaştırın ve beş dakikadan eski her şeyi reddedin. - Hızlı yanıt verin. 10 saniye içinde herhangi bir
2xxbir teslimattır. Başka her şey bir dakika, beş dakika, yarım saat, iki saat ve altı saat sonra yeniden denenir. Art arda 15 teslimatı başarısız olan bir adres, siz yeniden açana kadar kapatılır. - Tekrarları bekleyin.
Convertavo-Delivery, bir teslimatın her yeniden denemesinde aynıdır: işlediklerinizi saklayın ve atlayın.
<?php
// $secret: the webhook's signing secret.
$body = file_get_contents('php://input');
$header = $_SERVER['HTTP_CONVERTAVO_SIGNATURE'] ?? '';
if (! preg_match('/^t=(\d+),v1=([0-9a-f]{64})$/', $header, $m)
|| abs(time() - (int) $m[1]) > 300
|| ! hash_equals(hash_hmac('sha256', $m[1].'.'.$body, $secret), $m[2])) {
http_response_code(400);
exit;
}
$event = json_decode($body, true);
// $event['type'], $event['data']['object'] …
http_response_code(200);
import { createHmac, timingSafeEqual } from 'node:crypto';
// rawBody: the request body exactly as received (a Buffer).
export function verify(rawBody, header, secret) {
const m = /^t=(\d+),v1=([0-9a-f]{64})$/.exec(header ?? '');
if (!m || Math.abs(Date.now() / 1000 - Number(m[1])) > 300) return false;
const expected = createHmac('sha256', secret)
.update(`${m[1]}.${rawBody}`)
.digest();
return timingSafeEqual(expected, Buffer.from(m[2], 'hex'));
}
Kısa Link API
Linkleri kısaltın, nereye gittiklerini değiştirin ve tıklamalarını okuyun — link kısaltıcıyla aynı motor ve aynı güvenlik kontrolleri. Yukarıdaki her şeyle aynı anahtarı kullanır.
| Uç nokta | Ne yapar |
|---|---|
POST /api/v1/links | Tek bir linki kısaltır. |
POST /api/v1/links/bulk | Tek çağrıda en fazla 100 linki kısaltır. |
GET /api/v1/links | Linklerinizi listeler (search, tag, en fazla 100 per_page, page). |
GET · PATCH · DELETE /api/v1/links/{code} | Tek bir linki okur, değiştirir ya da siler. |
GET /api/v1/links/{code}/stats | Tıklamalar, tekil ziyaretçiler, ülkeler, cihazlar, yönlendiren siteler ve daha fazlası. |
Retry-After ile 429 döndürür) ve yeni linkler web sitesiyle aynı saatlik ve günlük sınırları izler — hesap başına saatte 100 ve günde 1.000.
- Her hedef tam olarak web sitesindeki gibi kontrol edilir: herkese açık bir
http(s)adresi olmalı, başka bir kısaltıcı olmamalı, engel listesinde olmamalı ve Google Güvenli Tarama tarafından listelenmemiş olmalıdır. Bir ret, bir kişiye gösterebileceğiniz (İngilizce) birmessageile422'dir. - Kodlar büyük/küçük harfe duyarlı değildir. Başkasına ait bir link, tıpkı var olmamış gibi
404yanıtı verir. - Güvenlik nedeniyle engellenen bir link okunabilir ama değiştirilemez (
423). - RapidAPI üzerinden kullanılamaz: linkler hesabınıza aittir.
/api/v1/linksLink kısalt
url zorunludur. İsteğe bağlı: code (özel uzantı, 3–40 harf, rakam, - ya da _), title, tags, expires_at ve activates_at (ISO 8601 ya da timezone ile yerel saat), click_limit, one_time, password, expired_redirect_url, redirect_type (varsayılan 302 ya da 301), sosyal önizleme için og_title / og_description / og_image, beş utm_* etiketi ve fbclid gibi takip parametrelerini kaldırmak için clean: true. 201 döndürür.
curl -X POST https://convertavo.com/tr/api/v1/links \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/spring-menu","code":"spring-menu","utm_source":"newsletter","utm_medium":"email","expires_at":"2026-12-31T23:59:00Z"}'
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/links');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CONVERTAVO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['url' => 'https://example.com/spring-menu', 'code' => 'spring-menu', 'utm_source' => 'newsletter', 'utm_medium' => 'email', 'expires_at' => '2026-12-31T23:59:00Z']),
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));
import os
import requests
response = requests.request(
'POST',
'https://convertavo.com/tr/api/v1/links',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
json={'url': 'https://example.com/spring-menu', 'code': 'spring-menu', 'utm_source': 'newsletter', 'utm_medium': 'email', 'expires_at': '2026-12-31T23:59:00Z'},
timeout=60,
)
response.raise_for_status()
print(response.json())
const response = await fetch('https://convertavo.com/tr/api/v1/links', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.CONVERTAVO_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({"url":"https://example.com/spring-menu","code":"spring-menu","utm_source":"newsletter","utm_medium":"email","expires_at":"2026-12-31T23:59:00Z"}),
});
console.log(await response.json());
{
"code": "spring-menu",
"short_url": "https://…/s/spring-menu",
"destination": "https://example.com/spring-menu?utm_source=newsletter&utm_medium=email",
"safety_status": "clean",
"warnings": [],
"clicks": 0,
"is_active": true,
"redirect_type": 302,
"expires_at": "2026-12-31T23:59:00+00:00",
"urls": {
"qr_png": "https://…/tools/url-shortener/links/spring-menu/qr.png",
"qr_svg": "https://…/tools/url-shortener/links/spring-menu/qr.svg",
"stats": "https://…/tools/url-shortener/stats/spring-menu"
}
}
safety_status; clean, pending (Güvenli Tarama'ya henüz sorulamadı; yeniden kontrol edilir) ya da suspicious'tır — link çalışır, ama ziyaretçiler önce bir uyarı görür ve warnings nedenini söyler.
/api/v1/links/{code} PATCH/api/v1/links/{code}Listele, oku, güncelle, sil
PATCH; url (yeni bir link gibi kontrol edilen yeni bir hedef — kısa link ve QR kodu aynı kalır), yukarıdaki herhangi bir seçeneği, remove_password: true ve duraklatmak ya da sürdürmek için is_active alır. DELETE, 204 döndürür; adres bundan sonra 410 Gone yanıtı verir ve asla yeniden kullanılmaz.
curl -X PATCH https://convertavo.com/tr/api/v1/links/spring-menu \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/summer-menu","is_active":true}'
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/links/spring-menu');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CONVERTAVO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['url' => 'https://example.com/summer-menu', 'is_active' => true]),
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));
import os
import requests
response = requests.request(
'PATCH',
'https://convertavo.com/tr/api/v1/links/spring-menu',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
json={'url': 'https://example.com/summer-menu', 'is_active': True},
timeout=60,
)
response.raise_for_status()
print(response.json())
const response = await fetch('https://convertavo.com/tr/api/v1/links/spring-menu', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${process.env.CONVERTAVO_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({"url":"https://example.com/summer-menu","is_active":true}),
});
console.log(await response.json());
{ "message": "That is already a short link from another service. Shorten the address it leads to instead." }
/api/v1/links/bulkToplu kısalt
links, tek bir linkle aynı alanlara sahip en fazla 100 nesnelik bir dizidir. Her biri kendi başına başarılı ya da başarısız olur; yanıt onları sırayla listeler.
curl -X POST https://convertavo.com/tr/api/v1/links/bulk \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-H "Content-Type: application/json" \
-d '{"links":[{"url":"https://example.com/a"},{"url":"https://example.com/b","code":"page-b"}]}'
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/links/bulk');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CONVERTAVO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['links' => [['url' => 'https://example.com/a'], ['url' => 'https://example.com/b', 'code' => 'page-b']]]),
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));
import os
import requests
response = requests.request(
'POST',
'https://convertavo.com/tr/api/v1/links/bulk',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
json={'links': [{'url': 'https://example.com/a'}, {'url': 'https://example.com/b', 'code': 'page-b'}]},
timeout=60,
)
response.raise_for_status()
print(response.json())
const response = await fetch('https://convertavo.com/tr/api/v1/links/bulk', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.CONVERTAVO_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({"links":[{"url":"https://example.com/a"},{"url":"https://example.com/b","code":"page-b"}]}),
});
console.log(await response.json());
{
"results": [
{ "index": 0, "link": { "code": "x7kq2m", "short_url": "https://…/s/x7kq2m", … } },
{ "index": 1, "error": "That back-half is already taken." }
]
}
/api/v1/links/{code}/statsTıklama istatistikleri
range; 7d, 30d (varsayılan), 90d, 12m, all ya da from ve to ile custom'dur; grain; hour, day, week ya da month'tur; bots=1 otomatik ziyaretleri clicks'e ekler. Günler UTC'dir. Çerez kullanılmaz: tekil ziyaretçiler her gün değişen bir değerden günlük olarak sayılır; bu yüzden asla bir kişiye kadar izlenemezler.
curl https://convertavo.com/tr/api/v1/links/spring-menu/stats?range=7d \
-H "Authorization: Bearer $CONVERTAVO_KEY"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/links/spring-menu/stats?range=7d');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);
import os
import requests
response = requests.get(
'https://convertavo.com/tr/api/v1/links/spring-menu/stats?range=7d',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
timeout=30,
)
response.raise_for_status()
print(response.json())
const response = await fetch('https://convertavo.com/tr/api/v1/links/spring-menu/stats?range=7d', {
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
});
console.log(await response.json());
{
"range": { "from": "2026-10-11", "to": "2026-10-17", "grain": "day", "includes_bots": false },
"totals": { "clicks": 412, "people": 412, "unique_daily": 330, "bots": 17, "qr_scans": 96, "all_time": 1288 },
"series": [ { "label": "Sun 11 Oct", "start": "2026-10-11", "clicks": 51 }, … ],
"breakdowns": {
"by_country": { "PK": 220, "AE": 81, "GB": 60, "other": 51 },
"by_device": { "mobile": 301, "desktop": 104, "tablet": 7 },
"by_source": { "link": 316, "qr": 96 }
}
}
Tıklama webhook'ları
Panel → Kısa linkler bölümünde bir webhook adresi ekleyin; linklerinizdeki her tıklama, gerçekleştikten birkaç saniye sonra ona JSON POST olarak gönderilir. Botlar gönderilmez.
{
"event": "link.clicked",
"link": { "code": "spring-menu", "short_url": "https://…/s/spring-menu" },
"click": {
"at": "2026-10-17T12:04:55+00:00",
"country": "PK", "device": "mobile", "os": "Android", "browser": "Chrome",
"referrer": "www.instagram.com", "source": "link", "utm_campaign": "spring-sale"
}
}
- Her istek, ham gövdenin webhook gizli anahtarınızla HMAC-SHA256 değeri olan
X-Convertavo-Signature: sha256=…taşır. İsteğe güvenmeden önce onu kendiniz hesaplayıp karşılaştırın. - 5 saniye içinde herhangi bir
2xxile yanıt verin. Başka her şey 10 saniye, 1 dakika ve 5 dakika sonra yeniden denenir. - Art arda 20 başarısız teslimattan sonra webhook kapatılır; panelden yeniden açın.
- Webhook adresleri herkese açık
httpsadresleri olmalıdır.
Araç başvurusu
Her araç, kabul ettiği dosyalar, tüm ayarları ve çalışan bir istek. Genişletmek için bir araca tıklayın.
PDF 10 araç
PDF Sıkıştır
compress-pdf
Convertavo'nun PDF Sıkıştır aracı, büyük bir PDF'yi e-postaya ya da yükleme sınırına sığacak şekilde küçültür. Metniniz net kalır. Bir form 1 MB'tan küçük bir dosya istiyorsa bunu hedef boyut olarak yazabilirsiniz. İndirmeden önce yeni sayfanızı eskisiyle yan yana karşılaştırabilirsiniz.
/api/v1/tools/compress-pdf/convert
- Kabul ettiği
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 5–15 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (PDF). Boyut sınırı planınıza bağlıdır. |
settings[Compression level] isteğe bağlı |
string |
Balanced (recommended)Maximum compressionLight — best quality |
settings[Image quality] isteğe bağlı |
string |
Web (150 DPI)Print (300 DPI)Keep original |
settings[Target size (MB)] isteğe bağlı |
number |
Number. Örnek: 1080
|
switches[0] isteğe bağlı |
boolean | Downsample embedded images. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Remove metadata and leftover editing data. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Subset embedded fonts. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/compress-pdf/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@document.pdf" \
-F 'settings[Compression level]=Balanced (recommended)' \
-F 'settings[Image quality]=Web (150 DPI)' \
-F 'settings[Target size (MB)]=1080' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/compress-pdf/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('document.pdf'),
'settings[Compression level]' => 'Balanced (recommended)',
'settings[Image quality]' => 'Web (150 DPI)',
'settings[Target size (MB)]' => '1080',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/compress-pdf/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('document.pdf', 'rb'))],
data={
'settings[Compression level]': 'Balanced (recommended)',
'settings[Image quality]': 'Web (150 DPI)',
'settings[Target size (MB)]': '1080',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('document.pdf')]), basename('document.pdf'));
form.append('settings[Compression level]', 'Balanced (recommended)');
form.append('settings[Image quality]', 'Web (150 DPI)');
form.append('settings[Target size (MB)]', '1080');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/compress-pdf/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
JPG'yi PDF'ye Dönüştür
jpg-to-pdf
Fotoğrafları ya da taramaları sayfa boyutu, yön ve kenar boşlukları üzerinde kontrol sahibi olarak tek bir PDF'de birleştirin. 25 MB altı dosyalar için ücretsiz, hesap gerekmez.
/api/v1/tools/jpg-to-pdf/convert
- Kabul ettiği
- JPG, PNG, HEIC
- İstek başına dosya
- Planınızın grup boyutuna kadar (Free'de 5, Business'ta 100'e kadar)
- Tipik süre
- 3–8 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file[] | Bir ya da daha fazla dosya (JPG, PNG, HEIC). Boyut sınırı planınıza bağlıdır. |
settings[Page size] isteğe bağlı |
string |
A4LetterFit to image |
settings[Orientation] isteğe bağlı |
string |
AutoPortraitLandscape |
settings[Margin] isteğe bağlı |
string |
NoneSmallMedium |
settings[Images per page] isteğe bağlı |
string |
124 |
switches[0] isteğe bağlı |
boolean | Compress images to reduce file size. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Add a page number to each page. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Sort files by name before combining. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/jpg-to-pdf/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@photo.jpg" \
-F "files[]=@photo-2.jpg" \
-F 'settings[Page size]=A4' \
-F 'settings[Orientation]=Auto' \
-F 'settings[Margin]=None' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/jpg-to-pdf/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('photo.jpg'),
'files[1]' => new CURLFile('photo-2.jpg'),
'settings[Page size]' => 'A4',
'settings[Orientation]' => 'Auto',
'settings[Margin]' => 'None',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/jpg-to-pdf/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('photo.jpg', 'rb')), ('files[]', open('photo-2.jpg', 'rb'))],
data={
'settings[Page size]': 'A4',
'settings[Orientation]': 'Auto',
'settings[Margin]': 'None',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('photo.jpg')]), basename('photo.jpg'));
form.append('files[]', new Blob([await readFile('photo-2.jpg')]), basename('photo-2.jpg'));
form.append('settings[Page size]', 'A4');
form.append('settings[Orientation]', 'Auto');
form.append('settings[Margin]', 'None');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/jpg-to-pdf/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
PDF Birleştir
merge-pdf
PDF'lerinizi yükleyin, sıralayın ve birleşik dosyayı indirin. Ücretsiz, hesap ve filigran olmadan.
/api/v1/tools/merge-pdf/convert
- Kabul ettiği
- İstek başına dosya
- Planınızın grup boyutuna kadar (Free'de 5, Business'ta 100'e kadar)
- Tipik süre
- 2–5 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file[] | Bir ya da daha fazla dosya (PDF). Boyut sınırı planınıza bağlıdır. |
settings[File order] isteğe bağlı |
string |
Manual (drag to reorder)Filename A–ZUpload order |
switches[0] isteğe bağlı |
boolean | Add a bookmark for each source file. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/merge-pdf/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@document.pdf" \
-F "files[]=@appendix.pdf" \
-F 'settings[File order]=Manual (drag to reorder)' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/merge-pdf/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('document.pdf'),
'files[1]' => new CURLFile('appendix.pdf'),
'settings[File order]' => 'Manual (drag to reorder)',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/merge-pdf/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('document.pdf', 'rb')), ('files[]', open('appendix.pdf', 'rb'))],
data={
'settings[File order]': 'Manual (drag to reorder)',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('document.pdf')]), basename('document.pdf'));
form.append('files[]', new Blob([await readFile('appendix.pdf')]), basename('appendix.pdf'));
form.append('settings[File order]', 'Manual (drag to reorder)');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/merge-pdf/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
PDF'yi Excel'e Dönüştür
pdf-to-excel
Convertavo'nun ücretsiz PDF'den Excel'e dönüştürücüsü PDF'nizdeki tabloları çıkarır ve gerçek bir tabloya yerleştirir. Satırlar ve sütunlar ait oldukları yerde kalır. Tabloda çizgi olmasa bile banka ekstrelerinde, faturalarda, fiyat listelerinde ve raporlarda çalışır.
/api/v1/tools/pdf-to-excel/convert
- Kabul ettiği
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 10–30 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (PDF). Boyut sınırı planınıza bağlıdır. |
settings[Page range] isteğe bağlı |
string |
Text. Örnek: 1-3
|
settings[Output format] isteğe bağlı |
string |
Excel (.xlsx)CSV (.csv)Google Sheets |
settings[Header row] isteğe bağlı |
string |
Detect automaticallyFirst row is headerNo header |
settings[Decimal separator] isteğe bağlı |
string |
Point (1.50)Comma (1,50) |
switches[0] isteğe bağlı |
boolean | Keep empty rows. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Treat numbers as text. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/pdf-to-excel/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@document.pdf" \
-F 'settings[Page range]=1-3' \
-F 'settings[Output format]=Excel (.xlsx)' \
-F 'settings[Header row]=Detect automatically' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/pdf-to-excel/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('document.pdf'),
'settings[Page range]' => '1-3',
'settings[Output format]' => 'Excel (.xlsx)',
'settings[Header row]' => 'Detect automatically',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/pdf-to-excel/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('document.pdf', 'rb'))],
data={
'settings[Page range]': '1-3',
'settings[Output format]': 'Excel (.xlsx)',
'settings[Header row]': 'Detect automatically',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('document.pdf')]), basename('document.pdf'));
form.append('settings[Page range]', '1-3');
form.append('settings[Output format]', 'Excel (.xlsx)');
form.append('settings[Header row]', 'Detect automatically');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/pdf-to-excel/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
PDF'yi JPG'ye Dönüştür
pdf-to-jpg
Her sayfayı paylaşabileceğiniz, sitenize ekleyebileceğiniz ya da herhangi bir resim düzenleyicide düzenleyebileceğiniz bir JPG, PNG veya WebP'ye çevirin. Ücretsiz, hesap ve filigran olmadan.
/api/v1/tools/pdf-to-jpg/convert
- Kabul ettiği
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 4–12 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (PDF). Boyut sınırı planınıza bağlıdır. |
settings[Page range] isteğe bağlı |
string |
Text. Örnek: 1-3
|
settings[Image format] isteğe bağlı |
string |
JPGPNGWebP |
settings[Resolution] isteğe bağlı |
string |
150 DPI (screen)300 DPI (print)600 DPI (archival) |
settings[Quality] isteğe bağlı |
integer |
Whole number, 1–100. Örnek: 80
|
switches[0] isteğe bağlı |
boolean | Deliver as a zip archive. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Use a white background instead of transparency. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Extract embedded images only. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/pdf-to-jpg/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@document.pdf" \
-F 'settings[Page range]=1-3' \
-F 'settings[Image format]=JPG' \
-F 'settings[Resolution]=150 DPI (screen)' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/pdf-to-jpg/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('document.pdf'),
'settings[Page range]' => '1-3',
'settings[Image format]' => 'JPG',
'settings[Resolution]' => '150 DPI (screen)',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/pdf-to-jpg/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('document.pdf', 'rb'))],
data={
'settings[Page range]': '1-3',
'settings[Image format]': 'JPG',
'settings[Resolution]': '150 DPI (screen)',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('document.pdf')]), basename('document.pdf'));
form.append('settings[Page range]', '1-3');
form.append('settings[Image format]', 'JPG');
form.append('settings[Resolution]', '150 DPI (screen)');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/pdf-to-jpg/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
PDF'yi Metne Dönüştür
pdf-to-text
Bir PDF yükleyin, saniyeler içinde temiz ve kopyalanabilir metin alın. Taranmış sayfalar otomatik olarak OCR'dan geçer. Ücretsiz, hesap ve filigran olmadan.
/api/v1/tools/pdf-to-text/convert
- Kabul ettiği
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 3–8 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (PDF). Boyut sınırı planınıza bağlıdır. |
settings[Page range] isteğe bağlı |
string |
Text. Örnek: 1-3
|
settings[Output format] isteğe bağlı |
string |
Plain text (.txt)Word (.docx)Markdown (.md)Web page (.html)JSON (pages, lines, tables) |
settings[Text layout] isteğe bağlı |
string |
Keep line breaksMerge into paragraphsPreserve layout (columns & spacing)Single block of text |
settings[Language] isteğe bağlı |
string |
Auto-detectEnglishUrduArabicHindiChinese (Simplified)Chinese (Traditional)SpanishFrenchGermanPortugueseRussianJapaneseKoreanItalianTurkishPersian (Farsi)BengaliPunjabiPashtoSindhiNepaliMarathiGujaratiTamilTeluguIndonesianMalayVietnameseThaiFilipinoDutchPolishUkrainianSwedishCzechRomanianHungarianGreekHebrew |
settings[Document password] isteğe bağlı |
string |
Text. Örnek: your-pdf-password
|
settings[Translate to (optional, machine translation)] isteğe bağlı |
string |
Don't translateEnglishUrduArabicSpanishFrenchGermanHindiChineseRussianPortugueseTurkishItalian |
switches[0] isteğe bağlı |
boolean | Run OCR when no text layer is found. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Keep tables as tab-separated columns. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Remove headers and page numbers. Açmak için 1 gönderin. |
switches[3] isteğe bağlı |
boolean | Mark where each page starts. Açmak için 1 gönderin. |
switches[4] isteğe bağlı |
boolean | Fix words split across lines. Açmak için 1 gönderin. |
switches[5] isteğe bağlı |
boolean | Re-read every page with OCR (fixes garbled text). Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/pdf-to-text/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@document.pdf" \
-F 'settings[Page range]=1-3' \
-F 'settings[Output format]=Plain text (.txt)' \
-F 'settings[Text layout]=Keep line breaks' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/pdf-to-text/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('document.pdf'),
'settings[Page range]' => '1-3',
'settings[Output format]' => 'Plain text (.txt)',
'settings[Text layout]' => 'Keep line breaks',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/pdf-to-text/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('document.pdf', 'rb'))],
data={
'settings[Page range]': '1-3',
'settings[Output format]': 'Plain text (.txt)',
'settings[Text layout]': 'Keep line breaks',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('document.pdf')]), basename('document.pdf'));
form.append('settings[Page range]', '1-3');
form.append('settings[Output format]', 'Plain text (.txt)');
form.append('settings[Text layout]', 'Keep line breaks');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/pdf-to-text/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
PDF'yi Word'e Dönüştür
pdf-to-word
Convertavo'nun ücretsiz PDF'den Word'e dönüştürücüsü PDF'nizi gerçek bir Word dosyasına çevirir. Her sayfanın tamamen aynı görünmesini sağlayın ya da kelimeleri düzenleyebileceğiniz paragraflar olarak alın. Taranmış PDF'ler de çalışır: sayfaları dönüştürmenin bir parçası olarak OCR ile okunur.
/api/v1/tools/pdf-to-word/convert
- Kabul ettiği
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 8–20 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (PDF). Boyut sınırı planınıza bağlıdır. |
settings[Page range] isteğe bağlı |
string |
Text. Örnek: 1-3
|
settings[Output] isteğe bağlı |
string |
Word (.docx)OpenDocument (.odt)Rich text (.rtf) |
settings[Layout mode] isteğe bağlı |
string |
Same layout, editableKeep exact layoutFlowing textText only |
settings[Picture quality] isteğe bağlı |
string |
High (200 DPI)Very high (300 DPI)Smaller file (150 DPI) |
settings[Language] isteğe bağlı |
string |
Auto-detectEnglishUrduArabicHindiChinese (Simplified)Chinese (Traditional)SpanishFrenchGermanPortugueseRussianJapaneseKoreanItalianTurkishPersian (Farsi)BengaliPunjabiPashtoSindhiNepaliMarathiGujaratiTamilTeluguIndonesianMalayVietnameseThaiFilipinoDutchPolishUkrainianSwedishCzechRomanianHungarianGreekHebrew |
settings[Document password] isteğe bağlı |
string |
Text. Örnek: your-pdf-password
|
settings[Translate to (optional, machine translation)] isteğe bağlı |
string |
Don't translateEnglishUrduArabicSpanishFrenchGermanHindiChineseRussianPortugueseTurkishItalian |
switches[0] isteğe bağlı |
boolean | Run OCR on scanned pages. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Keep images and graphics. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Convert tables to Word tables. Açmak için 1 gönderin. |
switches[3] isteğe bağlı |
boolean | Keep fonts, sizes and colours. Açmak için 1 gönderin. |
switches[4] isteğe bağlı |
boolean | Leave out repeated headers, footers and page numbers. Açmak için 1 gönderin. |
switches[5] isteğe bağlı |
boolean | Start each PDF page on a new Word page. Açmak için 1 gönderin. |
switches[6] isteğe bağlı |
boolean | Add a table of contents from the headings. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/pdf-to-word/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@document.pdf" \
-F 'settings[Page range]=1-3' \
-F 'settings[Output]=Word (.docx)' \
-F 'settings[Layout mode]=Same layout, editable' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/pdf-to-word/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('document.pdf'),
'settings[Page range]' => '1-3',
'settings[Output]' => 'Word (.docx)',
'settings[Layout mode]' => 'Same layout, editable',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/pdf-to-word/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('document.pdf', 'rb'))],
data={
'settings[Page range]': '1-3',
'settings[Output]': 'Word (.docx)',
'settings[Layout mode]': 'Same layout, editable',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('document.pdf')]), basename('document.pdf'));
form.append('settings[Page range]', '1-3');
form.append('settings[Output]', 'Word (.docx)');
form.append('settings[Layout mode]', 'Same layout, editable');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/pdf-to-word/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
PDF Döndür
rotate-pdf
Convertavo'nun ücretsiz aracı PDF sayfalarını online döndürmenize ve değişikliği kalıcı olarak kaydetmenize olanak tanır. Dosyanın tamamını, tek bir sayfayı ya da yalnızca yanlış çıkan sayfaları çevirin. Yan ve ters duran sayfaları kendi başına bile bulabilir.
/api/v1/tools/rotate-pdf/convert
- Kabul ettiği
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 2–4 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (PDF). Boyut sınırı planınıza bağlıdır. |
settings[Rotation] isteğe bağlı |
string |
90° clockwise90° counter-clockwise180° |
settings[Apply to] isteğe bağlı |
string |
All pagesOdd pages onlyEven pages onlySelected pages |
settings[Selected pages] isteğe bağlı |
string |
Text. Örnek: 3, 7
|
switches[0] isteğe bağlı |
boolean | Detect page orientation automatically. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Keep the original file as a copy. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/rotate-pdf/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@document.pdf" \
-F 'settings[Rotation]=90° clockwise' \
-F 'settings[Apply to]=All pages' \
-F 'settings[Selected pages]=3, 7' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/rotate-pdf/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('document.pdf'),
'settings[Rotation]' => '90° clockwise',
'settings[Apply to]' => 'All pages',
'settings[Selected pages]' => '3, 7',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/rotate-pdf/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('document.pdf', 'rb'))],
data={
'settings[Rotation]': '90° clockwise',
'settings[Apply to]': 'All pages',
'settings[Selected pages]': '3, 7',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('document.pdf')]), basename('document.pdf'));
form.append('settings[Rotation]', '90° clockwise');
form.append('settings[Apply to]', 'All pages');
form.append('settings[Selected pages]', '3, 7');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/rotate-pdf/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
PDF Böl
split-pdf
Convertavo'nun ücretsiz aracı bir PDF'yi online olarak ayrı dosyalara böler. Tek bir sayfayı alın, 3 ile 7. sayfaları çıkarın ya da istediğiniz sayfa aralıklarını yazarak uzun bir raporu parçalara ayırın. Bunu tarayıcınızda yaşayan bir PDF kesici olarak düşünün. Hiçbir şey kurmanız gerekmez.
/api/v1/tools/split-pdf/convert
- Kabul ettiği
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 2–6 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (PDF). Boyut sınırı planınıza bağlıdır. |
settings[Pages to extract] isteğe bağlı |
string |
Text. Örnek: 1-5, 12
|
settings[Filename prefix] isteğe bağlı |
string |
Text. Örnek: part
|
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/split-pdf/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@document.pdf" \
-F 'settings[Pages to extract]=1-5, 12' \
-F 'settings[Filename prefix]=part'
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/split-pdf/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('document.pdf'),
'settings[Pages to extract]' => '1-5, 12',
'settings[Filename prefix]' => 'part',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/split-pdf/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('document.pdf', 'rb'))],
data={
'settings[Pages to extract]': '1-5, 12',
'settings[Filename prefix]': 'part',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('document.pdf')]), basename('document.pdf'));
form.append('settings[Pages to extract]', '1-5, 12');
form.append('settings[Filename prefix]', 'part');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/split-pdf/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
PDF Şifresini Kaldır
unlock-pdf
Convertavo'nun ücretsiz aracı bir PDF'nin şifresini kaldırır; böylece dosya her seferinde sormadan açılır. Birçok banka ekstreleri doğum tarihinizle kilitler ve bunu her ay yazmak çabuk bıktırır. Burada bir kez girin. İndirdiğiniz şey, diğer dosyalar gibi açabileceğiniz, basabileceğiniz, birleştirebileceğiniz ya da dönüştürebileceğiniz sade bir PDF'dir.
/api/v1/tools/unlock-pdf/convert
- Kabul ettiği
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 2–5 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (PDF). Boyut sınırı planınıza bağlıdır. |
settings[Document password] isteğe bağlı |
string |
Text. Örnek: your-pdf-password
|
settings[Remove] isteğe bağlı |
string |
BothOpen passwordPermissions only |
switches[0] isteğe bağlı |
boolean | Allow printing after unlocking. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Allow copying text after unlocking. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Allow editing after unlocking. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/unlock-pdf/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@document.pdf" \
-F 'settings[Document password]=your-pdf-password' \
-F 'settings[Remove]=Both' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/unlock-pdf/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('document.pdf'),
'settings[Document password]' => 'your-pdf-password',
'settings[Remove]' => 'Both',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/unlock-pdf/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('document.pdf', 'rb'))],
data={
'settings[Document password]': 'your-pdf-password',
'settings[Remove]': 'Both',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('document.pdf')]), basename('document.pdf'));
form.append('settings[Document password]', 'your-pdf-password');
form.append('settings[Remove]', 'Both');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/unlock-pdf/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
Resim 7 araç
Görsel Sıkıştır
compress-image
Convertavo'nun ücretsiz resim sıkıştırıcısı fotoğrafları bulanıklaştırmadan küçültür. Çoğu resim %60 ile %80 daha hafif çıkar ve bir fark görmezsiniz. 25 MB'a kadar JPG, PNG ya da WebP dosyaları ekleyin, bir kalite seçin ve indirin.
/api/v1/tools/compress-image/convert
- Kabul ettiği
- JPG, PNG, WebP, HEIC, AVIF, GIF, BMP, TIFF
- İstek başına dosya
- Planınızın grup boyutuna kadar (Free'de 5, Business'ta 100'e kadar)
- Tipik süre
- 4–10 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file[] | Bir ya da daha fazla dosya (JPG, PNG, WebP, HEIC, AVIF, GIF, BMP, TIFF). Boyut sınırı planınıza bağlıdır. |
settings[Compression] isteğe bağlı |
string |
Smart — no visible differenceMaximum — smallest fileLossless — pixel-perfectCustom qualityTarget file size |
settings[Quality] isteğe bağlı |
integer |
Whole number, 1–100. Örnek: 80
|
settings[Target size (KB)] isteğe bağlı |
number |
Number. Örnek: 200
|
settings[Output format] isteğe bağlı |
string |
Keep originalSmallest (auto)JPGPNGWebPAVIF |
settings[Resize] isteğe bağlı |
string |
Keep original sizeMax 3840 px (4K)Max 2560 pxMax 1920 px (Full HD)Max 1280 pxMax 1080 pxMax 800 pxScale to 75%Scale to 50%Scale to 25%Custom width and height |
settings[Max width (px)] isteğe bağlı |
number |
Number. Örnek: 1920
|
settings[Max height (px)] isteğe bağlı |
number |
Number. Örnek: 1080
|
settings[Background for transparency] isteğe bağlı |
string |
WhiteBlack |
settings[File names] isteğe bağlı |
string |
Keep original namesAdd "-compressed"Add "-min" |
switches[0] isteğe bağlı |
boolean | Strip EXIF and location data. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Convert PNG photos to JPG when smaller. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Keep the colour profile. Açmak için 1 gönderin. |
switches[3] isteğe bağlı |
boolean | Keep animation (GIF and WebP). Açmak için 1 gönderin. |
switches[4] isteğe bağlı |
boolean | Never make a file bigger. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/compress-image/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@photo.jpg" \
-F "files[]=@photo-2.jpg" \
-F 'settings[Compression]=Smart — no visible difference' \
-F 'settings[Quality]=80' \
-F 'settings[Target size (KB)]=200' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/compress-image/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('photo.jpg'),
'files[1]' => new CURLFile('photo-2.jpg'),
'settings[Compression]' => 'Smart — no visible difference',
'settings[Quality]' => '80',
'settings[Target size (KB)]' => '200',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/compress-image/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('photo.jpg', 'rb')), ('files[]', open('photo-2.jpg', 'rb'))],
data={
'settings[Compression]': 'Smart — no visible difference',
'settings[Quality]': '80',
'settings[Target size (KB)]': '200',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('photo.jpg')]), basename('photo.jpg'));
form.append('files[]', new Blob([await readFile('photo-2.jpg')]), basename('photo-2.jpg'));
form.append('settings[Compression]', 'Smart — no visible difference');
form.append('settings[Quality]', '80');
form.append('settings[Target size (KB)]', '200');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/compress-image/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
Görseli Kırp
crop-image
Instagram için kare ya da hikâye için dikey bir fotoğraf mı lazım? Convertavo'nun ücretsiz kırpma aracı, tutmak istediğiniz kısmın üzerine doğrudan tarayıcınızda bir kutu çizmenize olanak tanır. Çoğu kırpma 2 ile 5 saniyede biter.
/api/v1/tools/crop-image/convert
- Kabul ettiği
- JPG, PNG, WebP
- İstek başına dosya
- Planınızın grup boyutuna kadar (Free'de 5, Business'ta 100'e kadar)
- Tipik süre
- 2–5 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file[] | Bir ya da daha fazla dosya (JPG, PNG, WebP). Boyut sınırı planınıza bağlıdır. |
settings[Aspect ratio] isteğe bağlı |
string |
Free1:1 square16:94:33:29:16 story |
settings[Width (px)] isteğe bağlı |
number |
Number. Örnek: 1080
|
settings[Height (px)] isteğe bağlı |
number |
Number. Örnek: 1080
|
settings[Anchor] isteğe bağlı |
string |
CentreTopBottomLeftRight |
switches[0] isteğe bağlı |
boolean | Apply the same crop to every image. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/crop-image/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@photo.jpg" \
-F "files[]=@photo-2.jpg" \
-F 'settings[Aspect ratio]=Free' \
-F 'settings[Width (px)]=1080' \
-F 'settings[Height (px)]=1080' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/crop-image/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('photo.jpg'),
'files[1]' => new CURLFile('photo-2.jpg'),
'settings[Aspect ratio]' => 'Free',
'settings[Width (px)]' => '1080',
'settings[Height (px)]' => '1080',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/crop-image/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('photo.jpg', 'rb')), ('files[]', open('photo-2.jpg', 'rb'))],
data={
'settings[Aspect ratio]': 'Free',
'settings[Width (px)]': '1080',
'settings[Height (px)]': '1080',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('photo.jpg')]), basename('photo.jpg'));
form.append('files[]', new Blob([await readFile('photo-2.jpg')]), basename('photo-2.jpg'));
form.append('settings[Aspect ratio]', 'Free');
form.append('settings[Width (px)]', '1080');
form.append('settings[Height (px)]', '1080');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/crop-image/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
HEIC'ten JPG'ye
heic-to-jpg
Biri size iPhone'undan bir fotoğraf gönderdi ve Windows bilgisayarınız açmıyor mu? Convertavo'nun ücretsiz HEIC'ten JPG'ye dönüştürücüsü onu her telefonun, bilgisayarın ve web sitesinin açabildiği normal bir JPG'ye çevirir. Tek bir fotoğraf ya da bütün bir klasör bırakın. Genellikle 3 ile 7 saniye sürer.
/api/v1/tools/heic-to-jpg/convert
- Kabul ettiği
- HEIC, HEIF
- İstek başına dosya
- Planınızın grup boyutuna kadar (Free'de 5, Business'ta 100'e kadar)
- Tipik süre
- 3–7 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file[] | Bir ya da daha fazla dosya (HEIC, HEIF). Boyut sınırı planınıza bağlıdır. |
settings[JPG quality] isteğe bağlı |
integer |
Whole number, 1–100. Örnek: 80
|
settings[Output format] isteğe bağlı |
string |
JPGPNGWebP |
settings[Max dimension] isteğe bağlı |
number |
Number. Örnek: 2048
|
switches[0] isteğe bağlı |
boolean | Keep EXIF data such as date and camera. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Keep GPS location data. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/heic-to-jpg/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@IMG_0412.heic" \
-F "files[]=@IMG_0413.heic" \
-F 'settings[JPG quality]=80' \
-F 'settings[Output format]=JPG' \
-F 'settings[Max dimension]=2048' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/heic-to-jpg/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('IMG_0412.heic'),
'files[1]' => new CURLFile('IMG_0413.heic'),
'settings[JPG quality]' => '80',
'settings[Output format]' => 'JPG',
'settings[Max dimension]' => '2048',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/heic-to-jpg/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('IMG_0412.heic', 'rb')), ('files[]', open('IMG_0413.heic', 'rb'))],
data={
'settings[JPG quality]': '80',
'settings[Output format]': 'JPG',
'settings[Max dimension]': '2048',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('IMG_0412.heic')]), basename('IMG_0412.heic'));
form.append('files[]', new Blob([await readFile('IMG_0413.heic')]), basename('IMG_0413.heic'));
form.append('settings[JPG quality]', '80');
form.append('settings[Output format]', 'JPG');
form.append('settings[Max dimension]', '2048');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/heic-to-jpg/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
PNG'yi JPG'ye Dönüştür
png-to-jpg
Telefonunuz her ekran görüntüsünü PNG olarak kaydeder ve bu dosyalar hızla birikir. Convertavo'nun ücretsiz PNG'den JPG'ye dönüştürücüsü onları aynı görünen çok daha küçük JPG'lere çevirir. Örneğimizde 596 KB'lık bir ekran görüntüsü 162 KB çıktı. Tek bir dosya ya da bütün bir klasör ekleyin; genellikle 2 ile 6 saniye sürer.
/api/v1/tools/png-to-jpg/convert
- Kabul ettiği
- PNG
- İstek başına dosya
- Planınızın grup boyutuna kadar (Free'de 5, Business'ta 100'e kadar)
- Tipik süre
- 2–6 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file[] | Bir ya da daha fazla dosya (PNG). Boyut sınırı planınıza bağlıdır. |
settings[JPG quality] isteğe bağlı |
integer |
Whole number, 1–100. Örnek: 80
|
settings[Background for transparency] isteğe bağlı |
string |
WhiteBlackCustom colour |
settings[Custom colour] isteğe bağlı |
string |
Text. Örnek: #F5E6CC
|
settings[Max width] isteğe bağlı |
number |
Number. Örnek: 1920
|
switches[0] isteğe bağlı |
boolean | Strip metadata. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Optimise for the web. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Keep the colour profile. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/png-to-jpg/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@image.png" \
-F "files[]=@image-2.png" \
-F 'settings[JPG quality]=80' \
-F 'settings[Background for transparency]=White' \
-F 'settings[Custom colour]=#F5E6CC' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/png-to-jpg/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('image.png'),
'files[1]' => new CURLFile('image-2.png'),
'settings[JPG quality]' => '80',
'settings[Background for transparency]' => 'White',
'settings[Custom colour]' => '#F5E6CC',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/png-to-jpg/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('image.png', 'rb')), ('files[]', open('image-2.png', 'rb'))],
data={
'settings[JPG quality]': '80',
'settings[Background for transparency]': 'White',
'settings[Custom colour]': '#F5E6CC',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('image.png')]), basename('image.png'));
form.append('files[]', new Blob([await readFile('image-2.png')]), basename('image-2.png'));
form.append('settings[JPG quality]', '80');
form.append('settings[Background for transparency]', 'White');
form.append('settings[Custom colour]', '#F5E6CC');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/png-to-jpg/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
Arka Planı Kaldır
remove-background
Arkasındaki dağınık oda olmadan yalnızca kişiyi ya da ürünü mü istiyorsunuz? Convertavo'nun ücretsiz arka plan kaldırıcısı konuyu keser ve size temiz, saydam bir PNG verir. Fırça yok, elle çizim yok. Genellikle 8 ile 20 saniye sürer.
/api/v1/tools/remove-background/convert
- Kabul ettiği
- JPG, PNG, WebP
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 8–20 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (JPG, PNG, WebP). Boyut sınırı planınıza bağlıdır. |
settings[Output] isteğe bağlı |
string |
Transparent PNGWhite backgroundCustom colour |
settings[Custom colour] isteğe bağlı |
string |
Text. Örnek: #F5E6CC
|
settings[Edge refinement] isteğe bağlı |
string |
StandardSoft (hair and fur)Sharp (products) |
switches[0] isteğe bağlı |
boolean | Keep the original resolution. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Add a soft shadow under the subject. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Crop tightly to the subject. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/remove-background/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@photo.jpg" \
-F 'settings[Output]=Transparent PNG' \
-F 'settings[Custom colour]=#F5E6CC' \
-F 'settings[Edge refinement]=Standard' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/remove-background/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('photo.jpg'),
'settings[Output]' => 'Transparent PNG',
'settings[Custom colour]' => '#F5E6CC',
'settings[Edge refinement]' => 'Standard',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/remove-background/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('photo.jpg', 'rb'))],
data={
'settings[Output]': 'Transparent PNG',
'settings[Custom colour]': '#F5E6CC',
'settings[Edge refinement]': 'Standard',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('photo.jpg')]), basename('photo.jpg'));
form.append('settings[Output]', 'Transparent PNG');
form.append('settings[Custom colour]', '#F5E6CC');
form.append('settings[Edge refinement]', 'Standard');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/remove-background/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
Görseli Yeniden Boyutlandır
resize-image
Tam bir genişlik ve yükseklik belirleyin ya da yüzdeyle ölçekleyin. Bir baskı boyutunu ya da KB sınırını da hedefleyebilirsiniz. En-boy oranı varsayılan olarak kilitlidir.
/api/v1/tools/resize-image/convert
- Kabul ettiği
- JPG, PNG, WebP, HEIC, AVIF, GIF, BMP, TIFF
- İstek başına dosya
- Planınızın grup boyutuna kadar (Free'de 5, Business'ta 100'e kadar)
- Tipik süre
- 3–8 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file[] | Bir ya da daha fazla dosya (JPG, PNG, WebP, HEIC, AVIF, GIF, BMP, TIFF). Boyut sınırı planınıza bağlıdır. |
settings[Resize by] isteğe bağlı |
string |
Exact size (width × height)Popular size (preset)PercentageLongest sidePrint size (cm, mm or inches)File size (KB) |
settings[Preset size] isteğe bağlı |
string |
Instagram · Square post — 1080 × 1080Instagram · Portrait post — 1080 × 1350Instagram · Landscape post — 1080 × 566Instagram · Story or Reel — 1080 × 1920Facebook · Post — 1200 × 630Facebook · Cover photo — 851 × 315Facebook · Profile picture — 320 × 320X (Twitter) · Post — 1600 × 900X (Twitter) · Header — 1500 × 500LinkedIn · Post — 1200 × 627LinkedIn · Banner — 1584 × 396YouTube · Thumbnail — 1280 × 720YouTube · Channel banner — 2560 × 1440TikTok · Video cover — 1080 × 1920Pinterest · Pin — 1000 × 1500WhatsApp · Profile photo — 500 × 500WhatsApp · Status — 1080 × 1920Passport photo · 2 × 2 in (US) — 600 × 600Passport photo · 35 × 45 mm — 413 × 531Website · Blog image — 1200 × 800Email header — 600 × 200App icon or favicon — 512 × 512HD — 1280 × 720Full HD — 1920 × 10804K UHD — 3840 × 2160A4 page at 300 DPI — 2480 × 3508 |
settings[Width (px)] isteğe bağlı |
number |
Number. Örnek: 1920
|
settings[Height (px)] isteğe bağlı |
number |
Number. Örnek: 1080
|
settings[Percentage (%)] isteğe bağlı |
number |
Number. Örnek: 50
|
settings[Longest side (px)] isteğe bağlı |
number |
Number. Örnek: 1920
|
settings[Print width] isteğe bağlı |
number |
Number. Örnek: 10
|
settings[Print height] isteğe bağlı |
number |
Number. Örnek: 15
|
settings[Unit] isteğe bağlı |
string |
cmmminches |
settings[Target file size (KB)] isteğe bağlı |
number |
Number. Örnek: 200
|
settings[Resize mode] isteğe bağlı |
string |
Fit insideFill and cropPad to exact sizeStretch |
settings[Crop focus] isteğe bağlı |
string |
Smart — find the subjectCentreTopBottomLeftRight |
settings[Padding] isteğe bağlı |
string |
WhiteBlackTransparentBlurred pictureAverage colour |
settings[Output format] isteğe bağlı |
string |
Keep originalJPGPNGWebPAVIF |
settings[Quality] isteğe bağlı |
integer |
Whole number, 1–100. Örnek: 80
|
settings[Resampling] isteğe bağlı |
string |
Lanczos — sharpest, for photosBicubic — smoothBilinear — softestNearest — pixel art and icons |
settings[Print resolution (DPI)] isteğe bağlı |
string |
Keep original7296150300600 |
settings[File names] isteğe bağlı |
string |
Keep original namesAdd "-resized"Add the new size (e.g. -1080x1080) |
switches[0] isteğe bağlı |
boolean | Lock aspect ratio. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Do not enlarge images that are already smaller. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Sharpen after resizing. Açmak için 1 gönderin. |
switches[3] isteğe bağlı |
boolean | Strip EXIF and location data. Açmak için 1 gönderin. |
switches[4] isteğe bağlı |
boolean | Keep animation (GIF and WebP). Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/resize-image/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@photo.jpg" \
-F "files[]=@photo-2.jpg" \
-F 'settings[Resize by]=Exact size (width × height)' \
-F 'settings[Preset size]=Instagram · Square post — 1080 × 1080' \
-F 'settings[Width (px)]=1920' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/resize-image/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('photo.jpg'),
'files[1]' => new CURLFile('photo-2.jpg'),
'settings[Resize by]' => 'Exact size (width × height)',
'settings[Preset size]' => 'Instagram · Square post — 1080 × 1080',
'settings[Width (px)]' => '1920',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/resize-image/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('photo.jpg', 'rb')), ('files[]', open('photo-2.jpg', 'rb'))],
data={
'settings[Resize by]': 'Exact size (width × height)',
'settings[Preset size]': 'Instagram · Square post — 1080 × 1080',
'settings[Width (px)]': '1920',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('photo.jpg')]), basename('photo.jpg'));
form.append('files[]', new Blob([await readFile('photo-2.jpg')]), basename('photo-2.jpg'));
form.append('settings[Resize by]', 'Exact size (width × height)');
form.append('settings[Preset size]', 'Instagram · Square post — 1080 × 1080');
form.append('settings[Width (px)]', '1920');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/resize-image/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
WebP Dönüştürücü
webp-converter
Bir web sitesinden bir resim kaydettiniz ve .webp dosyası olarak mı çıktı? Convertavo'nun ücretsiz WebP dönüştürücüsü onu her yerde açılan bir JPG ya da PNG'ye çevirir. Diğer yönde de çalışır; JPG ve PNG dosyalarını 2 ile 5 saniyede web siteniz için küçük WebP resimlerine dönüştürür.
/api/v1/tools/webp-converter/convert
- Kabul ettiği
- JPG, PNG, WebP, HEIC, AVIF, GIF, BMP, TIFF
- İstek başına dosya
- Planınızın grup boyutuna kadar (Free'de 5, Business'ta 100'e kadar)
- Tipik süre
- 2–5 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file[] | Bir ya da daha fazla dosya (JPG, PNG, WebP, HEIC, AVIF, GIF, BMP, TIFF). Boyut sınırı planınıza bağlıdır. |
settings[Convert to] isteğe bağlı |
string |
WebPJPGPNGAVIFGIF (keeps animation)ICO (favicon)TIFFBMP |
settings[Compression] isteğe bağlı |
string |
Smart — no visible differenceMaximum — smallest fileLossless — pixel-perfectCustom qualityTarget file size |
settings[Quality] isteğe bağlı |
integer |
Whole number, 1–100. Örnek: 80
|
settings[Target size (KB)] isteğe bağlı |
number |
Number. Örnek: 200
|
settings[Resize] isteğe bağlı |
string |
Keep original sizeMax 3840 px (4K)Max 2560 pxMax 1920 px (Full HD)Max 1280 pxMax 1080 pxMax 800 pxScale to 75%Scale to 50%Scale to 25%Custom width and height |
settings[Max width (px)] isteğe bağlı |
number |
Number. Örnek: 1920
|
settings[Max height (px)] isteğe bağlı |
number |
Number. Örnek: 1080
|
settings[Background for transparency] isteğe bağlı |
string |
WhiteBlack |
settings[WebP effort] isteğe bağlı |
string |
BalancedFastSmallest file (slower) |
settings[File names] isteğe bağlı |
string |
Keep original namesAdd "-compressed"Add "-min" |
switches[0] isteğe bağlı |
boolean | Keep EXIF data such as date and camera. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Lossless — no quality loss, larger file. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Keep the colour profile. Açmak için 1 gönderin. |
switches[3] isteğe bağlı |
boolean | Keep animation (GIF and WebP). Açmak için 1 gönderin. |
switches[4] isteğe bağlı |
boolean | Keep exact colours under transparency. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/webp-converter/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@photo.jpg" \
-F "files[]=@photo-2.jpg" \
-F 'settings[Convert to]=WebP' \
-F 'settings[Compression]=Smart — no visible difference' \
-F 'settings[Quality]=80' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/webp-converter/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('photo.jpg'),
'files[1]' => new CURLFile('photo-2.jpg'),
'settings[Convert to]' => 'WebP',
'settings[Compression]' => 'Smart — no visible difference',
'settings[Quality]' => '80',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/webp-converter/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('photo.jpg', 'rb')), ('files[]', open('photo-2.jpg', 'rb'))],
data={
'settings[Convert to]': 'WebP',
'settings[Compression]': 'Smart — no visible difference',
'settings[Quality]': '80',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('photo.jpg')]), basename('photo.jpg'));
form.append('files[]', new Blob([await readFile('photo-2.jpg')]), basename('photo-2.jpg'));
form.append('settings[Convert to]', 'WebP');
form.append('settings[Compression]', 'Smart — no visible difference');
form.append('settings[Quality]', '80');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/webp-converter/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
OCR 3 araç
Resmi Excel'e Dönüştür
image-to-excel
Üzerinde tablo olan bir fotoğraf, ekran görüntüsü ya da taranmış sayfa yükleyin; her değerin kendi hücresinde olduğu gerçek bir tablo alın. Ücretsiz, 25 MB'a kadar dosyalar için hesap gerekmez.
/api/v1/tools/image-to-excel/convert
- Kabul ettiği
- JPG, PNG, WebP, HEIC, AVIF, GIF, BMP, TIFF
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 3–10 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (JPG, PNG, WebP, HEIC, AVIF, GIF, BMP, TIFF). Boyut sınırı planınıza bağlıdır. |
settings[Language] isteğe bağlı |
string |
Auto-detectEnglishUrduArabicChinese |
settings[Output format] isteğe bağlı |
string |
Excel (.xlsx)CSV (.csv) |
settings[Header row] isteğe bağlı |
string |
Detect automaticallyFirst row is headerNo header |
settings[Decimal separator] isteğe bağlı |
string |
Point (1.50)Comma (1,50) |
switches[0] isteğe bağlı |
boolean | Merge cells that span multiple columns. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Keep empty rows. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Treat numbers as text. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/image-to-excel/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@photo.jpg" \
-F 'settings[Language]=Auto-detect' \
-F 'settings[Output format]=Excel (.xlsx)' \
-F 'settings[Header row]=Detect automatically' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/image-to-excel/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('photo.jpg'),
'settings[Language]' => 'Auto-detect',
'settings[Output format]' => 'Excel (.xlsx)',
'settings[Header row]' => 'Detect automatically',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/image-to-excel/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('photo.jpg', 'rb'))],
data={
'settings[Language]': 'Auto-detect',
'settings[Output format]': 'Excel (.xlsx)',
'settings[Header row]': 'Detect automatically',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('photo.jpg')]), basename('photo.jpg'));
form.append('settings[Language]', 'Auto-detect');
form.append('settings[Output format]', 'Excel (.xlsx)');
form.append('settings[Header row]', 'Detect automatically');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/image-to-excel/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
Görselden Metne
image-to-text
Bir fotoğraf, ekran görüntüsü ya da tarama yükleyin; kopyalayabileceğiniz, düzenleyebileceğiniz ve arayabileceğiniz seçilebilir metin alın. Ücretsiz, 25 MB'a kadar dosyalar için hesap gerekmez.
/api/v1/tools/image-to-text/convert
- Kabul ettiği
- JPG, PNG, HEIC, WebP, TIFF, BMP, GIF
- İstek başına dosya
- Planınızın grup boyutuna kadar (Free'de 5, Business'ta 100'e kadar)
- Tipik süre
- 5–15 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file[] | Bir ya da daha fazla dosya (JPG, PNG, HEIC, WebP, TIFF, BMP, GIF). Boyut sınırı planınıza bağlıdır. |
settings[Language] isteğe bağlı |
string |
Auto-detectEnglishUrduArabicHindiChinese (Simplified)Chinese (Traditional)SpanishFrenchGermanPortugueseRussianJapaneseKoreanItalianTurkishPersian (Farsi)BengaliPunjabiPashtoSindhiNepaliMarathiGujaratiTamilTeluguIndonesianMalayVietnameseThaiFilipinoDutchPolishUkrainianSwedishCzechRomanianHungarianGreekHebrew |
settings[Second language (mixed text)] isteğe bağlı |
string |
NoneEnglishUrduArabicHindiChinese (Simplified)Chinese (Traditional)SpanishFrenchGermanPortugueseRussianJapaneseKoreanItalianTurkishPersian (Farsi)BengaliPunjabiPashtoSindhiNepaliMarathiGujaratiTamilTeluguIndonesianMalayVietnameseThaiFilipinoDutchPolishUkrainianSwedishCzechRomanianHungarianGreekHebrew |
settings[Image mode] isteğe bağlı |
string |
AutoPrinted documentScreenshotPhoto of a pageHandwritingSign or sparse textSingle lineMath formula (LaTeX) |
settings[Layout] isteğe bağlı |
string |
Keep line breaksMerge into paragraphsPreserve layout (columns & spacing)Single block of text |
settings[Output format] isteğe bağlı |
string |
Plain text (.txt)Word (.docx)Searchable PDFMarkdown (.md)JSON (words, positions, confidence) |
settings[Translate to (optional, machine translation)] isteğe bağlı |
string |
Don't translateEnglishUrduArabicSpanishFrenchGermanHindiChineseRussianPortugueseTurkishItalian |
switches[0] isteğe bağlı |
boolean | Enhance contrast before reading. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Correct page skew automatically. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Flag low-confidence words. Açmak için 1 gönderin. |
switches[3] isteğe bağlı |
boolean | Clean up stray symbols and noise. Açmak için 1 gönderin. |
switches[4] isteğe bağlı |
boolean | Combine a batch into one file. Açmak için 1 gönderin. |
switches[5] isteğe bağlı |
boolean | Detect QR codes and barcodes. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/image-to-text/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@photo.jpg" \
-F "files[]=@photo-2.jpg" \
-F 'settings[Language]=Auto-detect' \
-F 'settings[Second language (mixed text)]=None' \
-F 'settings[Image mode]=Auto' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/image-to-text/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('photo.jpg'),
'files[1]' => new CURLFile('photo-2.jpg'),
'settings[Language]' => 'Auto-detect',
'settings[Second language (mixed text)]' => 'None',
'settings[Image mode]' => 'Auto',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/image-to-text/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('photo.jpg', 'rb')), ('files[]', open('photo-2.jpg', 'rb'))],
data={
'settings[Language]': 'Auto-detect',
'settings[Second language (mixed text)]': 'None',
'settings[Image mode]': 'Auto',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('photo.jpg')]), basename('photo.jpg'));
form.append('files[]', new Blob([await readFile('photo-2.jpg')]), basename('photo-2.jpg'));
form.append('settings[Language]', 'Auto-detect');
form.append('settings[Second language (mixed text)]', 'None');
form.append('settings[Image mode]', 'Auto');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/image-to-text/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
PDF OCR
pdf-ocr
Convertavo'nun PDF OCR aracı taranmış bir PDF'yi aranabilir bir PDF'ye dönüştürür. Dosyanızı yükleyin, dili seçin ve içinde arama yapabileceğiniz, metin seçip kopyalayabileceğiniz bir kopya indirin.
/api/v1/tools/pdf-ocr/convert
- Kabul ettiği
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 10–40 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (PDF). Boyut sınırı planınıza bağlıdır. |
settings[Language] isteğe bağlı |
string |
Auto-detectEnglishSpanishUrduArabicChinese |
settings[Page range] isteğe bağlı |
string |
Text. Örnek: 1-3
|
settings[Output] isteğe bağlı |
string |
Searchable PDF (same look)Searchable PDF + text file |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/pdf-ocr/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@document.pdf" \
-F 'settings[Language]=Auto-detect' \
-F 'settings[Page range]=1-3' \
-F 'settings[Output]=Searchable PDF (same look)'
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/pdf-ocr/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('document.pdf'),
'settings[Language]' => 'Auto-detect',
'settings[Page range]' => '1-3',
'settings[Output]' => 'Searchable PDF (same look)',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/pdf-ocr/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('document.pdf', 'rb'))],
data={
'settings[Language]': 'Auto-detect',
'settings[Page range]': '1-3',
'settings[Output]': 'Searchable PDF (same look)',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('document.pdf')]), basename('document.pdf'));
form.append('settings[Language]', 'Auto-detect');
form.append('settings[Page range]', '1-3');
form.append('settings[Output]', 'Searchable PDF (same look)');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/pdf-ocr/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
Medya 3 araç
Video Sıkıştır
compress-video
Video e-postayla gönderilemeyecek kadar büyük mü, ya da WhatsApp göndermiyor mu? Convertavo'nun ücretsiz video sıkıştırıcısı onu lapaya çevirmeden ihtiyacınız olan boyuta küçültür. Bir MP4, MOV, MKV ya da AVI yükleyin, istediğiniz boyutu yazın; çoğu video 1 ile 4 dakikada biter.
/api/v1/tools/compress-video/convert
- Kabul ettiği
- MP4, MOV, MKV, AVI
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 60–240 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (MP4, MOV, MKV, AVI). Boyut sınırı planınıza bağlıdır. |
settings[Compression level] isteğe bağlı |
string |
Balanced (recommended)MaximumLight — best quality |
settings[Target size (MB)] isteğe bağlı |
number |
Number. Örnek: 25
|
settings[Resolution] isteğe bağlı |
string |
Keep original1080p720p480p |
settings[Codec] isteğe bağlı |
string |
H.264H.265 |
switches[0] isteğe bağlı |
boolean | Reduce the frame rate to 30 fps. Açmak için 1 gönderin. |
switches[1] isteğe bağlı |
boolean | Lower the audio bitrate to 128 kbps. Açmak için 1 gönderin. |
switches[2] isteğe bağlı |
boolean | Remove audio entirely. Açmak için 1 gönderin. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/compress-video/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@video.mp4" \
-F 'settings[Compression level]=Balanced (recommended)' \
-F 'settings[Target size (MB)]=25' \
-F 'settings[Resolution]=Keep original' \
-F "switches[0]=1"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/compress-video/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('video.mp4'),
'settings[Compression level]' => 'Balanced (recommended)',
'settings[Target size (MB)]' => '25',
'settings[Resolution]' => 'Keep original',
'switches[0]' => '1',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/compress-video/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('video.mp4', 'rb'))],
data={
'settings[Compression level]': 'Balanced (recommended)',
'settings[Target size (MB)]': '25',
'settings[Resolution]': 'Keep original',
'switches[0]': '1',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('video.mp4')]), basename('video.mp4'));
form.append('settings[Compression level]', 'Balanced (recommended)');
form.append('settings[Target size (MB)]', '25');
form.append('settings[Resolution]', 'Keep original');
form.append('switches[0]', '1');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/compress-video/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
MOV'u MP4'e Dönüştür
mov-to-mp4
iPhone videonuz telefonda sorunsuz oynuyor, sonra bir Windows bilgisayarda açılmıyor. Convertavo'nun ücretsiz MOV'dan MP4'e dönüştürücüsü bunu tek adımda, kurulacak bir şey olmadan çözer. MOV'u yükleyin, varsayılan ayarları koruyun; çoğu video 30 ile 120 saniyede hazır olur.
/api/v1/tools/mov-to-mp4/convert
- Kabul ettiği
- MOV, AVI, MKV, WebM
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 30–120 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (MOV, AVI, MKV, WebM). Boyut sınırı planınıza bağlıdır. |
settings[Quality] isteğe bağlı |
string |
Same as source1080p720p480p |
settings[Video codec] isteğe bağlı |
string |
H.264 (most compatible)H.265 (smaller files) |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/mov-to-mp4/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@video.mp4" \
-F 'settings[Quality]=Same as source' \
-F 'settings[Video codec]=H.264 (most compatible)'
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/mov-to-mp4/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('video.mp4'),
'settings[Quality]' => 'Same as source',
'settings[Video codec]' => 'H.264 (most compatible)',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/mov-to-mp4/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('video.mp4', 'rb'))],
data={
'settings[Quality]': 'Same as source',
'settings[Video codec]': 'H.264 (most compatible)',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('video.mp4')]), basename('video.mp4'));
form.append('settings[Quality]', 'Same as source');
form.append('settings[Video codec]', 'H.264 (most compatible)');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/mov-to-mp4/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
MP4'ü MP3'e Dönüştür
mp4-to-mp3
Bir videodan yalnızca sesi mi istiyorsunuz; otobüs için bir ders ya da bir konser klibinden bir şarkı gibi? Convertavo'nun ücretsiz MP4'ten MP3'e dönüştürücüsü sesi tutar ve görüntüyü atar. Videoyu yükleyin, kaliteyi seçin ve MP3'ünüzü genellikle bir dakikadan kısa sürede indirin.
/api/v1/tools/mp4-to-mp3/convert
- Kabul ettiği
- MP4, MOV, MKV, AVI
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 20–60 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (MP4, MOV, MKV, AVI). Boyut sınırı planınıza bağlıdır. |
settings[Bitrate] isteğe bağlı |
string |
192 kbps (recommended)320 kbps128 kbps |
settings[Channels] isteğe bağlı |
string |
StereoMono |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/mp4-to-mp3/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@video.mp4" \
-F 'settings[Bitrate]=192 kbps (recommended)' \
-F 'settings[Channels]=Stereo'
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/mp4-to-mp3/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('video.mp4'),
'settings[Bitrate]' => '192 kbps (recommended)',
'settings[Channels]' => 'Stereo',
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/mp4-to-mp3/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('video.mp4', 'rb'))],
data={
'settings[Bitrate]': '192 kbps (recommended)',
'settings[Channels]': 'Stereo',
},
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('video.mp4')]), basename('video.mp4'));
form.append('settings[Bitrate]', '192 kbps (recommended)');
form.append('settings[Channels]', 'Stereo');
const response = await fetch('https://convertavo.com/tr/api/v1/tools/mp4-to-mp3/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
Yapay zekâ 2 araç
Yapay Zeka Sanat Dedektörü
ai-art-detector
İnternette bir çizim buldunuz ve bir şey size tuhaf mı geliyor? Convertavo'nun ücretsiz yapay zekâ sanat dedektörü bir çizimin, tablonun ya da illüstrasyonun bir yapay zekâ resim üreticisinden çıkıp çıkmadığını kontrol eder. Yalnızca bir puan almazsınız, kanıtları görürsünüz. Bir JPG, PNG ya da WebP yükleyin; yanıt genellikle 2 ile 4 saniye sürer.
/api/v1/tools/ai-art-detector/convert
- Kabul ettiği
- JPG, PNG, WebP
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 2–4 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (JPG, PNG, WebP). Boyut sınırı planınıza bağlıdır. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/ai-art-detector/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@photo.jpg"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/ai-art-detector/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('photo.jpg'),
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/ai-art-detector/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('photo.jpg', 'rb'))],
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('photo.jpg')]), basename('photo.jpg'));
const response = await fetch('https://convertavo.com/tr/api/v1/tools/ai-art-detector/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
Yapay Zeka Görsel Dedektörü
ai-image-detector
Bir görsel yükleyin; Convertavo'nun yapay zeka görsel dedektörü onun üretilip üretilmediğini tahmin eder. Bu bir tahmindir, kanıt değil. Bir karar, modelin ne kadar emin olduğu ve arkasındaki kanıtları alırsınız. Dürüst yanıt «söylenemez» olduğunda rapor bunu açıkça belirtir.
/api/v1/tools/ai-image-detector/convert
- Kabul ettiği
- JPG, PNG, WebP
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- 2–4 saniye
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (JPG, PNG, WebP). Boyut sınırı planınıza bağlıdır. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/ai-image-detector/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@photo.jpg"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/ai-image-detector/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('photo.jpg'),
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/ai-image-detector/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('photo.jpg', 'rb'))],
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('photo.jpg')]), basename('photo.jpg'));
const response = await fetch('https://convertavo.com/tr/api/v1/tools/ai-image-detector/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
Linkler 5 araç
Toplu Link Kısaltıcı
bulk-url-shortener
Bütün bir link listesini mi kısaltmanız gerekiyor? Onları her satıra bir tane olacak şekilde Convertavo'nun toplu link kısaltıcısına yapıştırın ya da bir CSV dosyası yükleyin. Her kısa link, her biri kendi QR koduyla tek bir tabloda geri gelir. Ücretsizdir ve tek seferde 50 linke kadar hesaba bile ihtiyacınız yoktur.
/api/v1/tools/bulk-url-shortener/convert
- Kabul ettiği
- Her dosya
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- bir iki dakika
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (her tür). Boyut sınırı planınıza bağlıdır. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/bulk-url-shortener/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@file.bin"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/bulk-url-shortener/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('file.bin'),
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/bulk-url-shortener/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('file.bin', 'rb'))],
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('file.bin')]), basename('file.bin'));
const response = await fetch('https://convertavo.com/tr/api/v1/tools/bulk-url-shortener/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
Kısa Link Açıcı
expand-url
Birinin size gönderdiği bir kısa linkten emin değil misiniz? Convertavo'nun kısa link denetleyicisine bırakın; ona dokunmadan önce gerçek adresi görün. Linki sizin için izler ve tam adresi, yoldaki her durağı ve bir güvenlik kontrolünü gösteririz. Hesap yok, uygulama yok.
/api/v1/tools/expand-url/convert
- Kabul ettiği
- Her dosya
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- anında
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (her tür). Boyut sınırı planınıza bağlıdır. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/expand-url/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@file.bin"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/expand-url/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('file.bin'),
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/expand-url/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('file.bin', 'rb'))],
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('file.bin')]), basename('file.bin'));
const response = await fetch('https://convertavo.com/tr/api/v1/tools/expand-url/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
Bio Link Sayfası
link-in-bio
Your profile has room for one link, but you have five things to share. Make a free link in bio page on Convertavo, and that one link opens all of them, with the designs, videos, sign-up forms and insights other services charge for. No ads.
/api/v1/tools/link-in-bio/convert
- Kabul ettiği
- Her dosya
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- anında
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (her tür). Boyut sınırı planınıza bağlıdır. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/link-in-bio/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@file.bin"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/link-in-bio/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('file.bin'),
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/link-in-bio/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('file.bin', 'rb'))],
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('file.bin')]), basename('file.bin'));
const response = await fetch('https://convertavo.com/tr/api/v1/tools/link-in-bio/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
Link Kısaltıcı
url-shortener
Linkiniz SMS'te bölünecek kadar uzun mu? Convertavo'nun ücretsiz link kısaltıcısına yapıştırın, yaklaşık bir saniyede kısa bir link alın. Her link bir QR kod ve tıklama sayacıyla gelir. Hesap gerekmez. Hiçbir özellik ücretli planın arkasında da değildir.
/api/v1/tools/url-shortener/convert
- Kabul ettiği
- Her dosya
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- anında
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (her tür). Boyut sınırı planınıza bağlıdır. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/url-shortener/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@file.bin"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/url-shortener/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('file.bin'),
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/url-shortener/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('file.bin', 'rb'))],
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('file.bin')]), basename('file.bin'));
const response = await fetch('https://convertavo.com/tr/api/v1/tools/url-shortener/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
UTM Link Oluşturucu
utm-builder
Did that newsletter actually bring anyone to your site, or was it the Instagram post? Run the link through Convertavo’s UTM builder before you share it, and your analytics will finally tell you. The tagged link comes out long and ugly (that’s normal), so shorten it right here. No account needed, and it costs nothing.
/api/v1/tools/utm-builder/convert
- Kabul ettiği
- Her dosya
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- anında
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (her tür). Boyut sınırı planınıza bağlıdır. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/utm-builder/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@file.bin"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/utm-builder/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('file.bin'),
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/utm-builder/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('file.bin', 'rb'))],
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('file.bin')]), basename('file.bin'));
const response = await fetch('https://convertavo.com/tr/api/v1/tools/utm-builder/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
İşletme 1 araç
Fatura Oluşturucu
invoice-generator
Müşterinizin dilinde ve para biriminde profesyonel bir fatura hazırlayın. Vergiler, indirimler ve stopaj tam olarak hesaplanır; filigransız bir PDF alırsınız — hesap gerekmez.
/api/v1/tools/invoice-generator/convert
- Kabul ettiği
- Her dosya
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- anında
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (her tür). Boyut sınırı planınıza bağlıdır. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/invoice-generator/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@file.bin"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/invoice-generator/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('file.bin'),
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/invoice-generator/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('file.bin', 'rb'))],
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('file.bin')]), basename('file.bin'));
const response = await fetch('https://convertavo.com/tr/api/v1/tools/invoice-generator/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
QR Kod 2 araç
QR Kod Oluşturucu
qr-code-generator
Link, Wi-Fi ağı, kartvizit ya da WhatsApp sohbeti için QR kod oluşturun. Renkleri, nokta şeklini, çerçeveyi ve logoyu seçin, sonra indirin.
/api/v1/tools/qr-code-generator/convert
- Kabul ettiği
- Her dosya
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- anında
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (her tür). Boyut sınırı planınıza bağlıdır. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/qr-code-generator/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@file.bin"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/qr-code-generator/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('file.bin'),
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/qr-code-generator/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('file.bin', 'rb'))],
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('file.bin')]), basename('file.bin'));
const response = await fetch('https://convertavo.com/tr/api/v1/tools/qr-code-generator/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);
QR Kod Okuyucu
qr-code-scanner
Ücretsiz QR kod ve barkod okuyucu. Kameranızdan, bir fotoğraftan, ekran görüntüsünden ya da PDF'den okutun; her link siz açmadan önce kontrol edilir.
/api/v1/tools/qr-code-scanner/convert
- Kabul ettiği
- PNG, JPG, WebP, GIF, PDF
- İstek başına dosya
- Bir (istek başına tek dosya gönderin)
- Tipik süre
- anında
- Deneyin
- Araç sayfasını açın →
İstek gövdesi multipart/form-data
| Alan | Tür | Açıklama |
|---|---|---|
files[] zorunlu |
file | Dönüştürülecek dosya (PNG, JPG, WebP, GIF, PDF). Boyut sınırı planınıza bağlıdır. |
Örnek istek
curl -X POST https://convertavo.com/tr/api/v1/tools/qr-code-scanner/convert \
-H "Authorization: Bearer $CONVERTAVO_KEY" \
-F "files[]=@image.png"
<?php
$ch = curl_init('https://convertavo.com/tr/api/v1/tools/qr-code-scanner/convert');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CONVERTAVO_KEY')],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('image.png'),
],
]);
$job = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 202) {
throw new RuntimeException($job['message'] ?? "Request failed ({$status})");
}
echo $job['status_url'];
import os
import requests
response = requests.post(
'https://convertavo.com/tr/api/v1/tools/qr-code-scanner/convert',
headers={'Authorization': f"Bearer {os.environ['CONVERTAVO_KEY']}"},
files=[('files[]', open('image.png', 'rb'))],
timeout=120,
)
response.raise_for_status()
job = response.json()
print(job['status_url'])
import { readFile } from 'node:fs/promises';
import { basename } from 'node:path';
const form = new FormData();
form.append('files[]', new Blob([await readFile('image.png')]), basename('image.png'));
const response = await fetch('https://convertavo.com/tr/api/v1/tools/qr-code-scanner/convert', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.CONVERTAVO_KEY}` },
body: form,
});
const job = await response.json();
if (response.status !== 202) throw new Error(job.message);
console.log(job.status_url);