Vectorizer.AI menawarkan API pelacakan bitmap lengkap. API melacak piksel ke vektor sepenuhnya secara otomatis dan dengan fidelitas terbaik di kelasnya.
POST gambar bitmap dan dapatkan hasil vektorisasi kembali:
$ curl https://id.vectorizer.ai/api/v1/vectorize \ -u xyz123:[secret] \ -F image=@example.jpeg \ -o result.svg
// Requires: org.apache.httpcomponents.client5:httpclient5-fluent Request request = Request.post("https://id.vectorizer.ai/api/v1/vectorize") .addHeader("Authorization", "Basic dmt5YzY3a3FhMjd5aWRkOltzZWNyZXRd") .body( MultipartEntityBuilder.create() .addBinaryBody("image", new File("example.jpeg")) // TODO: Replace with your image // TODO: Add more upload parameters here .build() ); ClassicHttpResponse response = (ClassicHttpResponse) request.execute().returnResponse(); if (response.getCode() == 200) { // Write result to disk, TODO: or wherever you'd like try (FileOutputStream out = new FileOutputStream("result.svg")) { response.getEntity().writeTo(out); } } else { System.out.println("Request Failed: Status: " + response.getCode() + ", Reason: " + response.getReasonPhrase()); }
using (var client = new HttpClient()) using (var form = new MultipartFormDataContent()) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "INSERT_API_KEY_HERE"); form.Add(new ByteArrayContent(File.ReadAllBytes("example.jpeg")), "image", "example.jpeg"); // TODO: Replace with your image // TODO: Add more upload parameters here var response = client.PostAsync("https://id.vectorizer.ai/api/v1/vectorize", form).Result; if (response.IsSuccessStatusCode) { // Write result to disk, TODO: or wherever you'd like FileStream outStream = new FileStream("result.svg", FileMode.Create, FileAccess.Write, FileShare.None); response.Content.CopyToAsync(outStream).ContinueWith((copyTask) => { outStream.Close(); }); } else { Console.WriteLine("Request Failed: Status: " + response.StatusCode + ", Reason: " + response.ReasonPhrase); } }
// Requires "request" to be installed (see https://www.npmjs.com/package/request) var request = require('request'); var fs = require('fs'); request.post({ url: 'https://id.vectorizer.ai/api/v1/vectorize', formData: { image: fs.createReadStream('example.jpeg'), // TODO: Replace with your image // TODO: Add more upload options here }, auth: {user: 'xyz123', pass: '[secret]'}, followAllRedirects: true, encoding: null }, function(error, response, body) { if (error) { console.error('Request failed:', error); } else if (!response || response.statusCode != 200) { console.error('Error:', response && response.statusCode, body.toString('utf8')); } else { // Save result fs.writeFileSync("result.svg", body); } });
$ch = curl_init('https://id.vectorizer.ai/api/v1/vectorize'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic dmt5YzY3a3FhMjd5aWRkOltzZWNyZXRd')); curl_setopt($ch, CURLOPT_POSTFIELDS, array( 'image' => curl_file_create('example.jpeg'), // TODO: Add more upload options here )); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $data = curl_exec($ch); if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200) { // Save result file_put_contents("result.svg", $data); } else { echo "Error: " . $data; } curl_close($ch);
# Either use the sample code below, or this SDK: https://pypi.org/project/vectorizer-ai/ # Requires "requests" to be installed (see https://pypi.org/project/requests/) import requests response = requests.post( 'https://id.vectorizer.ai/api/v1/vectorize', files={'image': open('example.jpeg', 'rb')}, data={ # TODO: Add more upload options here }, auth=('xyz123', '[secret]') ) if response.status_code == requests.codes.ok: # Save result with open('result.svg', 'wb') as out: out.write(response.content) else: print("Error:", response.status_code, response.text)
# Requires: gem install httpclient require 'httpclient' client = HTTPClient.new default_header: { "Authorization" => "Basic dmt5YzY3a3FhMjd5aWRkOltzZWNyZXRd" } response = client.post("https://id.vectorizer.ai/api/v1/vectorize", { "image" => File.open("example.jpeg", "rb"), # TODO: Replace with your image # TODO: Add more upload parameters here }) if response.status == 200 then # Write result to disk, TODO: or wherever you'd like File.open("result.svg", 'w') { |file| file.write(response.body) } else puts "Error: Code: " + response.status.to_s + ", Reason: " + response.reason end
$ curl https://id.vectorizer.ai/api/v1/vectorize \ -u xyz123:[secret] \ -F 'image.url=https://example.com/example.jpeg' \ -o result.svg
// Requires: org.apache.httpcomponents.client5:httpclient5-fluent Request request = Request.post("https://id.vectorizer.ai/api/v1/vectorize") .addHeader("Authorization", "Basic dmt5YzY3a3FhMjd5aWRkOltzZWNyZXRd") .body( MultipartEntityBuilder.create() .addTextBody("image.url", "https://example.com/example.jpeg") // TODO: Replace with your image URL // TODO: Add more upload parameters here .build() ); ClassicHttpResponse response = (ClassicHttpResponse) request.execute().returnResponse(); if (response.getCode() == 200) { // Write result to disk, TODO: or wherever you'd like try (FileOutputStream out = new FileOutputStream("result.svg")) { response.getEntity().writeTo(out); } } else { System.out.println("Request Failed: Status: " + response.getCode() + ", Reason: " + response.getReasonPhrase()); }
using (var client = new HttpClient()) using (var form = new MultipartFormDataContent()) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "INSERT_API_KEY_HERE"); form.Add(new StringContent("https://example.com/example.jpeg"), "image.url"); // TODO: Replace with your image URL // TODO: Add more upload parameters here var response = client.PostAsync("https://id.vectorizer.ai/api/v1/vectorize", form).Result; if (response.IsSuccessStatusCode) { // Write result to disk, TODO: or wherever you'd like FileStream outStream = new FileStream("result.svg", FileMode.Create, FileAccess.Write, FileShare.None); response.Content.CopyToAsync(outStream).ContinueWith((copyTask) => { outStream.Close(); }); } else { Console.WriteLine("Request Failed: Status: " + response.StatusCode + ", Reason: " + response.ReasonPhrase); } }
// Requires "request" to be installed (see https://www.npmjs.com/package/request) var request = require('request'); var fs = require('fs'); request.post({ url: 'https://id.vectorizer.ai/api/v1/vectorize', formData: { 'image.url': 'https://example.com/example.jpeg', // TODO: Replace with your image // TODO: Add more upload options here }, auth: {user: 'xyz123', pass: '[secret]'}, followAllRedirects: true, encoding: null }, function(error, response, body) { if (error) { console.error('Request failed:', error); } else if (!response || response.statusCode != 200) { console.error('Error:', response && response.statusCode, body.toString('utf8')); } else { // Save result fs.writeFileSync("result.svg", body); } });
$ch = curl_init('https://id.vectorizer.ai/api/v1/vectorize'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic dmt5YzY3a3FhMjd5aWRkOltzZWNyZXRd')); curl_setopt($ch, CURLOPT_POSTFIELDS, array( 'image.url' => 'https://example.com/example.jpeg', // TODO: Add more upload options here )); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $data = curl_exec($ch); if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200) { // Save result file_put_contents("result.svg", $data); } else { echo "Error: " . $data; } curl_close($ch);
# Either use the sample code below, or this SDK: https://pypi.org/project/vectorizer-ai/ # Requires "requests" to be installed (see https://pypi.org/project/requests/) import requests response = requests.post( 'https://id.vectorizer.ai/api/v1/vectorize', data={ 'image.url': 'https://example.com/example.jpeg', # TODO: Add more upload options here }, auth=('xyz123', '[secret]') ) if response.status_code == requests.codes.ok: # Save result with open('result.svg', 'wb') as out: out.write(response.content) else: print("Error:", response.status_code, response.text)
# Requires: gem install httpclient require 'httpclient' client = HTTPClient.new default_header: { "Authorization" => "Basic dmt5YzY3a3FhMjd5aWRkOltzZWNyZXRd" } response = client.post("https://id.vectorizer.ai/api/v1/vectorize", { "image.url" => "https://example.com/example.jpeg", # TODO: Replace with your image URL # TODO: Add more upload parameters here }) if response.status == 200 then # Write result to disk, TODO: or wherever you'd like File.open("result.svg", 'w') { |file| file.write(response.body) } else puts "Error: Code: " + response.status.to_s + ", Reason: " + response.reason end
Kami telah membuat ChatGPT khusus yang dapat membantu Anda dengan integrasi API Anda. Dapat menjawab pertanyaan tentang dokumentasi API, dan menyediakan contoh kode dalam bahasa pilihan Anda yang disesuaikan dengan kasus penggunaan Anda.
Ngobrol dengan Chatbot API Vectorizer.AI
Chatbot masih dalam tahap beta dan masih bisa melakukan kesalahan. Periksa kembali jawabannya, dan minta untuk merevisi kode guna memperbaiki kesalahan dan kelalaian.
API dirancang untuk mendukung banyak kasus penggunaan yang berbeda. Berikut ini beberapa yang umum:
Gunakan titik akhir Vektorisasi dan contoh kode di atas.
Jika Anda perlu membuat banyak panggilan API untuk melakukan penjualan, Anda dapat menggunakan pratinjau biaya yang lebih rendah hingga Anda benar-benar mengonversi pelanggan.
Gunakan titik akhir Vektorisasi dengan mode=preview
dan policy.retention_days > 0
untuk mendapatkan pratinjau, pastikan untuk mempertahankan Token Gambar yang dikembalikan dalam header respons X-Image-Token
.
Setelah mengonversi, gunakan titik akhir Unduh dengan Token Gambar untuk mengunduh hasil lengkap.
Opsional: jika Anda memerlukan format hasil tambahan (misalnya PNG, PDF, dll), pastikan untuk menyimpan Tanda Terima yang dikembalikan di header respons unduhan X-Receipt
. Kemudian gunakan titik akhir Unduh dengan Token Gambar dan Tanda Terima untuk mengunduh format yang tersisa.
Gunakan titik akhir Vektorisasi dengan policy.retention_days > 0
untuk mendapatkan hasil pertama, pastikan untuk mempertahankan Token Gambar yang dikembalikan dalam header respons X-Image-Token
.
Gunakan titik akhir Unduh dengan Token Gambar untuk mengunduh format lainnya.
Gunakan titik akhir Vektorisasi dengan policy.retention_days > 0
untuk mendapatkan hasil pertama, pastikan untuk mempertahankan Token Gambar yang dikembalikan dalam header respons X-Image-Token
.
Gunakan titik akhir Vektorisasi dengan Token Gambar untuk mengulangi opsi pemrosesan yang tersisa yang Anda perlukan.
Alternatifnya Anda dapat memproses setiap gambar satu per satu dan tidak perlu khawatir mengenai Token Gambar. Token Gambar menghemat sedikit bandwidth dan latensi.
Tindakan | Kredit | Keterangan |
---|---|---|
Pengujian | 0.00 |
Integrasi dan pengujian API gratis, tidak perlu berlangganan.
Gunakan Anda dapat menilai kualitas hasil menggunakan Aplikasi Web interaktif di halaman depan. |
Pratinjau | 0.20 |
Kami menawarkan hasil pratinjau yang dapat Anda tunjukkan kepada pengguna akhir sebelum mereka melakukan pembelian. Pratinjau adalah gambar PNG empat kali lebih besar dari masukan Anda, dan dilengkapi dengan tanda air yang tersembunyi.
Gunakan |
Vektorisasi | 1.00 | Ubah gambar bitmap menjadi gambar vektor. |
Pratinjau Peningkatan | 0.90 | Unduh hasil produksi setelah panggilan API pratinjau. Didiskon dibandingkan dengan memvektorisasinya dari awal. |
Format Unduhan | 0.10 | Unduh format lain (misalnya SVG, PNG, PDF, dll) dari hasil tersebut. Didiskon dibandingkan dengan memvektorisasinya dari awal. |
Hari Penyimpanan | 0.01 | Harga per hari untuk menyimpan hasil setelah hari pertama, gratis. |
Silakan lihat halaman harga untuk paket berlangganan.
API menggunakan otentikasi akses dasar HTTP standar. Semua permintaan ke API harus dilakukan melalui HTTPS dan menyertakan Kredensial API Anda, dengan ID API sebagai pengguna dan Rahasia API sebagai kata sandi.
Pustaka klien http Anda harus mendukung Server Name Indication (SNI) untuk membuat permintaan berhasil. Jika Anda mendapatkan kesalahan jabat tangan yang aneh, kemungkinan besar inilah masalahnya.
Penggunaan API dibatasi tarif dengan tunjangan yang murah hati dan tidak ada batas atas yang keras.
Selama operasi normal yang digerakkan oleh pengguna akhir, Anda tidak akan mengalami pembatasan kecepatan karena penggunaan cenderung surut dan mengalir dengan cara yang ditangani layanan dengan baik.
Namun, untuk pekerjaan batch kami sarankan untuk memulai dengan paling banyak 5 utas, menambahkan 1 utas baru setiap 5 menit hingga Anda mencapai tingkat paralelisme yang diinginkan. Harap hubungi sebelum memulai jika Anda membutuhkan lebih dari 100 rangkaian pesan bersamaan.
Jika Anda mengirimkan terlalu banyak permintaan, Anda akan mulai mendapatkan jawaban 429 Too Many Requests
. Jika ini terjadi, Anda harus menerapkan linear back off: pada respons pertama seperti itu, tunggu 5 detik hingga mengirimkan permintaan berikutnya. Pada jawaban 429 kedua berturut-turut, tunggu 2*5=10 detik hingga mengirimkan permintaan berikutnya. Yang ketiga tunggu 3*5=15 detik, dan seterusnya.
Anda dapat mengatur ulang penghitung mundur setelah permintaan berhasil, dan Anda harus menerapkan mundur pada basis per utas (yaitu utas harus beroperasi secara independen satu sama lain).
Meskipun permintaan API biasanya diselesaikan dalam hitungan detik, waktu pemrosesan yang lebih lama mungkin terjadi selama lonjakan beban sementara.
Untuk memastikan pustaka klien Anda tidak menghentikan permintaan API sebelum waktunya, pustaka tersebut harus dikonfigurasi dengan waktu tunggu tidak aktif setidaknya 180 detik.
Kami menggunakan status HTTP konvensional untuk menunjukkan keberhasilan atau kegagalan permintaan API, dan menyertakan informasi kesalahan penting dalam Objek JSON Kesalahan yang dikembalikan.
Kami berusaha untuk selalu mengembalikan Objek JSON Kesalahan dengan permintaan apa pun yang bermasalah. Namun, secara teoritis selalu mungkin terjadi kegagalan server internal yang menyebabkan respons kesalahan non-JSON.
Atribut |
|
---|---|
status | Status HTTP dari respons, diulang di sini untuk membantu proses debug. |
code | Vectorizer.AI kode kesalahan internal. |
message | Pesan kesalahan yang dapat dibaca manusia, dimaksudkan untuk membantu dalam proses debug. |
Jika status HTTP untuk permintaan Anda adalah 200, maka Objek JSON Kesalahan tidak akan dikembalikan, dan Anda dapat berasumsi bahwa permintaan secara umum berhasil.
Beberapa pustaka Klien HTTP meningkatkan pengecualian untuk status HTTP di rentang 400
-599
. Anda perlu menangkap pengecualian tersebut dan menanganinya dengan tepat.
HTTP Status | Makna |
---|---|
200 -299
|
Sukses |
400 -499
|
Ada masalah dengan informasi yang diberikan dalam permintaan (mis., Ada parameter yang hilang). Harap tinjau pesan kesalahan untuk mencari tahu cara memperbaikinya. |
500 -599
|
Terjadi Vectorizer.AI kesalahan internal. Tunggu beberapa saat kemudian coba lagi, dan jika masalah tetap ada, silakan email kami. |
Contoh Kesalahan Jawaban
{ "error" : { "status" : 400, "code" : 1006, "message" : "Failed to read the supplied image. " } }
Kesalahan API terbaru tercantum di laman akun Anda untuk kenyamanan proses debug Anda.
Ada juga daftar semua respons kesalahan yang dihasilkan oleh API.
Berikut ini adalah header respons khusus yang kami gunakan:
Header | Keterangan |
---|---|
X-Image-Token
|
Dikembalikan ketika permintaan vektorisasi Anda memiliki
|
X-Receipt
|
Dikembalikan saat Anda mengunduh hasil produksi menggunakan Token Gambar pratinjau. Dapat digunakan untuk mengunduh format tambahan (misalnya SVG, PNG, PDF, dll) dari hasil pada kecepatan format unduhan, bukan kecepatan pratinjau pemutakhiran. |
X-Credits-Calculated
|
Dikembalikan dengan permintaan pengujian untuk menunjukkan biaya yang akan dikeluarkan jika itu adalah permintaan biasa. |
X-Credits-Charged
|
Dikembalikan dengan semua permintaan untuk menunjukkan biaya yang dikeluarkan. Selalu 0 untuk permintaan pengujian. |
POST
https://api.vectorizer.ai/api/v1/vectorize
Untuk membuat vektor gambar, Anda melakukan unggahan file HTTP POST standar. Harap diingat Jenis Isi harus multipart/form-data
saat mengunggah file biner.
Tabel di bawah menjabarkan semua parameter API dalam bentuk coba-sekarang yang berfungsi. Setiap parameter memiliki deskripsi singkat, tetapi pastikan untuk memeriksa Dokumentasi Opsi Keluaran mendetail.
POST
https://api.vectorizer.ai/api/v1/download
Titik akhir ini memungkinkan Anda untuk:
Unduh hasil produksi penuh setelah panggilan API pratinjau.
Kami menyertakan tajuk X-Receipt
dalam respons sehingga Anda dapat mengunduh format keluaran tambahan dengan kecepatan format unduhan yang dikurangi setelahnya.
Unduh berbagai format keluaran untuk gambar dan opsi pemrosesan yang sama dengan kecepatan format unduhan yang dikurangi dan tanpa harus membuat vektorisasi semuanya dari awal.
POST
https://api.vectorizer.ai/api/v1/delete
Gambar yang divektorkan dengan policy.retention_days > 0
disimpan selama jangka waktu yang diminta dan dihapus secara otomatis segera setelahnya.
Biasanya tidak perlu memanggil titik akhir ini. Ini disediakan agar Anda dapat menghapus gambar sebelum periode penyimpanan berakhir. Menghapus gambar lebih awal tidak memberi Anda pengembalian uang untuk sisa hari penyimpanan.
Atribut Jawaban |
|
---|---|
success |
|
Conotoh Jawaban
{ "success" : true }
GET
https://api.vectorizer.ai/api/v1/account
Dapatkan informasi dasar tentang akun Anda, seperti status langganan Anda dan jumlah kredit yang tersisa.
Parameter |
|
---|---|
Tiada |
Atribut Jawaban |
|
---|---|
subscriptionPlan |
Paket langganan Anda saat ini berlangganan, atau 'tidak ada'. |
subscriptionState |
Status langganan Anda saat ini ('aktif' atau 'terlambatBayar') atau 'berakhir' jika tidak berlangganan. |
credits |
Jumlah kredit API yang tersisa di akun Anda. 0 jika saat ini tidak berlangganan, atau berlangganan paket non-API. Dapat berupa pecahan, jadi pastikan untuk menguraikannya sebagai Ganda. |
Silakan mencoba
Nama Pengguna = Id API, Kata Sandi = Rahasia API
cURL
$ curl "https://api.vectorizer.ai/api/v1/account" \ -u vkyc67kqa27yidd:[secret]
Conotoh Jawaban
{ "subscriptionPlan" : "none", "subscriptionState" : "ended", "credits" : 0 }
Tanggal | Ganti |
---|---|
1 Okt 2024 | Menambahkan chatbot AI untuk membantu integrasi dengan API. |
23 Sep 2024 | API diperluas secara signifikan untuk memungkinkan lebih banyak mode operasi. Menambahkan Token Gambar, Tanda Terima, header biaya per panggilan, serta titik akhir Unduh dan Hapus. |
11 Jun 2024 |
Ditambahkan processing.palette
|
4 Mar 2024 | Bagian tambahan tentang batas waktu. |
24 Jan 2024 | Menambahkan titik akhir Status Akun. Menambahkan kesalahan API terbaru ke halaman Akun. Menambahkan daftar semua respons kesalahan API. |
16 Jan 2024 | Mendokumentasikan Objek Kesalahan JSON. |
3 Okt 2023 |
Mengklarifikasi bahwa output.gap_filler.enabled=true menghasilkan lebih banyak warna pada hasil daripada yang diminta dalam processing.max_colors .
|
20 Sep 2023 |
Ditambahkan mode
|
1 Agu 2023 |
Menambahkan grup opsi ukuran keluaran berfitur lengkap dengan opsi berikut: output.size.scale , output.size.width , output.size.height , output.size.unit , output.size.aspect_ratio , output.size.align_x , output.size.align_y , output.size.input_dpi , dan output.size.output_dpi . Menambahkan grup opsi keluaran bitmap dengan satu opsi: output.bitmap.anti_aliasing_mode .
|
7 Jun 2023 |
Ditambahkan processing.max_colors
|
31 Mei 2023 | Sangat memperluas parameter API. Memperbarui titik akhir API. |
10 Mar 2023 | Peluncuran pertama. |