API การลบพื้นหลังภาพด้วย Pixian

Pixian.AI นำเสนอ API การลบพื้นหลังรูปภาพที่สมบูรณ์แบบ API จะลบพื้นหลังรูปภาพได้อย่างสมบูรณ์แบบโดยอัตโนมัติ และมีความเที่ยงตรงเหนือชั้นกว่าเครื่องมืออื่นในระดับเดียวกัน

รับคีย์ API

เริ่มใช้งานได้ทันที

โพสต์ภาพบิตแมปและรอรับผลลัพธ์ที่ลบพื้นหลังออกแล้ว:

$ curl https://api.pixian.ai/api/v2/remove-background \
 -u xyz123:[secret] \
 -F image=@example.jpeg \
 -o pixian_result.png
// Requires: org.apache.httpcomponents.client5:httpclient5-fluent

Request request = Request.post("https://api.pixian.ai/api/v2/remove-background")
   .addHeader("Authorization", "Basic cHh4YmJ6Yjk2bjJ3OGFtOltzZWNyZXRd")
   .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("pixian_result.png")) {
      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://api.pixian.ai/api/v2/remove-background", form).Result;

   if (response.IsSuccessStatusCode)
   {
      // Write result to disk, TODO: or wherever you'd like
      FileStream outStream = new FileStream("pixian_result.png", 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://api.pixian.ai/api/v2/remove-background',
  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("pixian_result.png", body);
  }
});
$ch = curl_init('https://api.pixian.ai/api/v2/remove-background');

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,
    array('Authorization: Basic cHh4YmJ6Yjk2bjJ3OGFtOltzZWNyZXRd'));
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("pixian_result.png", $data);
} else {
  echo "Error: " . $data;
}
curl_close($ch);
# Requires "requests" to be installed (see https://pypi.org/project/requests/)
import requests

response = requests.post(
    'https://api.pixian.ai/api/v2/remove-background',
    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('pixian_result.png', '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 cHh4YmJ6Yjk2bjJ3OGFtOltzZWNyZXRd"
}

response = client.post("https://api.pixian.ai/api/v2/remove-background", {
  "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("pixian_result.png", 'w') { |file| file.write(response.body) }
else
  puts "Error: Code: " + response.status.to_s + ", Reason: " + response.reason
end
$ curl https://api.pixian.ai/api/v2/remove-background \
 -u xyz123:[secret] \
 -F 'image.url=https://example.com/example.jpeg' \
 -o pixian_result.png
// Requires: org.apache.httpcomponents.client5:httpclient5-fluent

Request request = Request.post("https://api.pixian.ai/api/v2/remove-background")
   .addHeader("Authorization", "Basic cHh4YmJ6Yjk2bjJ3OGFtOltzZWNyZXRd")
   .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("pixian_result.png")) {
      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://api.pixian.ai/api/v2/remove-background", form).Result;

   if (response.IsSuccessStatusCode)
   {
      // Write result to disk, TODO: or wherever you'd like
      FileStream outStream = new FileStream("pixian_result.png", 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://api.pixian.ai/api/v2/remove-background',
  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("pixian_result.png", body);
  }
});
$ch = curl_init('https://api.pixian.ai/api/v2/remove-background');

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,
    array('Authorization: Basic cHh4YmJ6Yjk2bjJ3OGFtOltzZWNyZXRd'));
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("pixian_result.png", $data);
} else {
  echo "Error: " . $data;
}
curl_close($ch);
# Requires "requests" to be installed (see https://pypi.org/project/requests/)
import requests

response = requests.post(
    'https://api.pixian.ai/api/v2/remove-background',
    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('pixian_result.png', '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 cHh4YmJ6Yjk2bjJ3OGFtOltzZWNyZXRd"
}

response = client.post("https://api.pixian.ai/api/v2/remove-background", {
  "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("pixian_result.png", 'w') { |file| file.write(response.body) }
else
  puts "Error: Code: " + response.status.to_s + ", Reason: " + response.reason
end

คุณย้ายมาจากผู้ให้บริการอีกรายหนึ่งใช่หรือไม่ Check out our migration guide

การกำหนดราคา

ทั้งนี้สามารถผสานรวมกับ API และทดสอบได้ฟรี โดยไม่จำเป็นต้องซื้อสินค้าใด ๆ

เพียงแค่ใช้ test=true เพื่อการพัฒนา คุณสามารถประเมินคุณภาพผลลัพธ์ได้โดยใช้เว็บแอปแบบโต้ตอบที่หน้าหลัก

ผลลัพธ์ที่พร้อมออกสื่อต้องอาศัยการซื้อชุดเครดิต โปรดดูที่หน้าการกำหนดราคา

การรับรองความถูกต้องและการรักษาความปลอดภัย

API ใช้ การรับรองความถูกต้องเบื้องต้นของการเข้าถึง HTTP แบบมาตรฐาน คำร้องขอทั้งหมดถึง API ต้องดำเนินการผ่าน HTTPS และมีข้อมูลประจำตัว API ของคุณ โดยมี API Id เป็นผู้ใช้ และรหัสลับ API เป็นรหัสผ่าน

ไลบรารีไคลเอ็นต์ http ของคุณต้องรองรับ การบ่งชี้ชื่อเซิร์ฟเวอร์ (SNI) จึงจะส่งคำขอได้สำเร็จ หากคุณได้รับข้อผิดพลาดการสื่อสารที่ผิดปกติ ก็น่าจะเป็นเพราะเหตุนี้มากที่สุด

การจำกัดอัตรา

การใช้งาน API มีอัตราที่จำกัด โดยเผื่อค่าไว้กว้างและไม่มีขอบเขตบนที่เคร่งครัด

ในระหว่างการดำเนินการที่ผู้ใช้ปลายทางกระทำตามปกตินั้น มีโอกาสน้อยที่คุณจะประสบกับอัตราที่จำกัด เพราะการใช้งานมีแนวโน้มที่จะขึ้น ๆ ลง ๆ ในลักษณะที่บริการจัดการได้อย่างเรียบร้อย

อย่างไรก็ตาม ในกรณีของชุดงาน เราขอแนะนำให้เริ่มต้นด้วยชุดกิจกรรมสูงสุด 5 ชุด โดยเพิ่มใหม่ 1 ชุดทุก ๆ 5 นาที จนกว่าคุณจะไปถึงระดับการทำงานแบบขนานตามที่ต้องการ กรุณาแจ้งให้เราทราบก่อนที่คุณจะเริ่มงาน หากต้องการชุดกิจกรรมมากกว่า 100 ชุดพร้อมกัน

หากคุณส่งคำขอมากเกินไป คุณจะเริ่มได้รับผลตอบกลับ 429 Too Many Requests เมื่อเกิดกรณีเช่นนี้ขึ้น คุณควรปรับใช้กลยุทธ์สุ่มรอเวลาแบบเส้นตรง : ในผลตอบกลับดังกล่าวครั้งแรก รอ 5 วินาที ก่อนส่งคำขอถัดไป ในผลตอบกลับ 429 ที่ต่อเนื่องกันครั้งที่สอง รอ 2*5=10 วินาที ก่อนส่งคำขอถัดไป ส่วนครั้งที่สาม จะรอ 3*5=15 วินาที ฯลฯ

คุณสามารถรีเซ็ตตัวนับการสุ่มรอเวลาหลังจากคำขอประสบผลสำเร็จ และคุณควรนำการสุ่มรอเวลาไปใช้กับแต่ละชุดกิจกรรม (กล่าวคือ ชุดกิจกรรมควรทำหน้าที่โดยอิสระไม่ขึ้นต่อกันและกัน)

การหมดเวลา

แม้ว่าโดยปกติแล้วคำขอ API จะเสร็จสมบูรณ์ภายในเวลาไม่กี่วินาที แต่ก็เป็นไปได้ที่อาจต้องประสบกับเวลาดำเนินการที่นานขึ้นในช่วงที่มีการโหลดข้อมูลเพิ่มขึ้นอย่างรวดเร็วชั่วครู่

เพื่อให้แน่ใจว่าไลบรารีไคลเอนต์ของคุณจะไม่ยุติคำขอ API ก่อนกำหนด ควรกำหนดค่าให้มีการหมดเวลาขณะไม่ได้ใช้งานไว้อย่างน้อย 180 วินาที

ออบเจ็กต์ JSON ของข้อผิดพลาด

เราใช้สถานะ HTTP แบบปกติ เพื่อบ่งชี้ความสำเร็จหรือความล้มเหลวของคำขอ API และรวมถึงรายละเอียดข้อผิดพลาดที่สำคัญในออบเจ็กต์ JSON ที่ผิดพลาดและถูกส่งคืน

เราพยายามอยู่เสมอที่จะส่งคืนออบเจ็กต์ JSON ที่ผิดพลาดพร้อมด้วยคำขอใด ๆ ที่เป็นปัญหา อย่างไรก็ตาม ในทางทฤษฎี มีความเป็นไปได้เสมอที่เซิร์ฟเวอร์จะเกิดความล้มเหลวภายใน ซึ่งนำไปสู่ผลตอบกลับข้อผิดพลาดที่ไม่ใช่ JSON

ลักษณะเฉพาะ

statusในที่นี้ แสดงสถานะ HTTP ของผลตอบกลับซ้ำอีก เพื่อช่วยในการแก้จุดบกพร่อง
codeรหัสข้อผิดพลาดภายในของ Pixian.AI
messageข้อความแสดงข้อผิดพลาดที่มนุษย์สามารถอ่านได้ มีจุดประสงค์เพื่อช่วยในการแก้จุดบกพร่อง

หากสถานะ HTTP สำหรับคำขอของคุณคือ 200 แสดงว่าจะไม่มีการส่งคืนออบเจ็กต์ JSON ที่ผิดพลาด และคุณสามารถสรุปได้ว่า คำขอนั้นสื่อสารได้สำเร็จในวงกว้าง

ไลบรารีไคลเอ็นต์ HTTP บางส่วนทำให้เกิดข้อยกเว้นสำหรับสถานะ HTTP ในช่วง 400-599 คุณจำเป็นจะต้องตรวจจับข้อยกเว้นเหล่านั้นและจัดการตามความเหมาะสม

HTTP Statusความหมาย
200-299

ความสำเร็จ

400-499

มีปัญหาเกิดขึ้นกับข้อมูลที่ให้ไว้ในคำขอ (เช่น พารามิเตอร์ขาดหายไป) กรุณาตรวจสอบข้อความแสดงข้อผิดพลาดเพื่อคิดหาวิธีที่จะจัดการแก้ไข

500-599

ตรวจพบข้อผิดพลาดภายใน Pixian.AI กรุณารอสักครู่แล้วลองใหม่อีกครั้ง หากปัญหายังคงมีอยู่ กรุณาส่งอีเมลถึงเรา

ตัวอย่างผลตอบกลับข้อผิดพลาด

{
  "error" : {
    "status" : 400,
    "code" : 1006,
    "message" : "Failed to read the supplied image. "
  }
}

รูปแบบ PNG เดลต้า เวลาตอบสนองและแบนด์วิดท์ต่ำลง

Pixian.AI มีความภูมิใจที่เป็นบริษัทแรกที่ให้บริการลบพื้นหลังโดยนำเสนอในรูปแบบเอาต์พุต PNG เดลต้า PNG เดลต้าสามารถเข้ารหัสได้เร็วกว่าและมีขนาดเล็กกว่า PNG ปกติมาก จึงทำให้เหมาะอย่างยิ่งกับแอปพลิเคชันที่ขึ้นอยู่กับเวลาตอบสนองและแบนด์วิดท์ เช่น แอปมือถือ

เรียนรู้เพิ่มเติม ลูกศรขวามือ

ลบพื้นหลัง POST
https://api.pixian.ai/api/v2/remove-background

ในการลบพื้นหลังออกจากภาพ คุณจะทำการอัปโหลดไฟล์ HTTP POST แบบมาตรฐาน อย่าลืมว่า ประเภท-เนื้อหา ต้องเป็น multipart/form-data เมื่ออัปโหลดไฟล์ไบนารี

พารามิเตอร์

ต้องป้อนภาพอินพุตในแบบใดแบบหนึ่งดังนี้ :


ไบนารี

ไฟล์ไบนารี


สตริง

สตริงที่เข้ารหัสแบบ base64 ขนาดของสตริงต้องไม่เกิน 1 เมกะไบต์ เท่านั้น


สตริง

URL เพื่อเรียกใช้และประมวลผล

ต้องเป็นไฟล์ .bmp, .gif, .jpeg, .png, หรือ .tiff

ขนาดสูงสุดของภาพที่จะอัปโหลด (= ความกว้าง × ความสูง) คือ 32,000,000 พิกเซล, ซึ่งจะลดขนาดลงเป็น max_pixels


ข้อมูลบูลีน, ค่าเริ่มต้น: false

ส่ง true เพื่อระบุว่า นี่คือภาพทดสอบ

ละเว้นหรือส่ง false สำหรับภาพที่จะออกสื่อ

ภาพทดสอบจะดำเนินการได้ฟรี แต่ผลลัพธ์จะใส่ลายน้ำแทรกไว้


เลขจำนวนเต็ม, 100 ถึง 25000000, ค่าเริ่มต้น: 25000000

ขนาดสูงสุดของภาพอินพุต (= ความกว้าง × ความสูง) ภาพที่มีขนาดใหญ่กว่านี้จะถูกย่อขนาดลงเป็นขนาดนี้ก่อนการประมวลผล


รูปแบบ: '#RRGGBB' เช่น #0055FF

สีพื้นหลังที่จะใช้กับภาพผลลัพธ์ ละเว้นที่จะปล่อยพื้นหลังโปร่งใสไว้

อย่าลืมใช้ "#" นำหน้า


ข้อมูลบูลีน, ค่าเริ่มต้น: false

ต้องการจะครอบตัดภาพผลลัพธ์ให้เข้ากับวัตถุพื้นหน้าหรือไม่

มีประโยชน์มากเมื่อใช้ร่วมกับ result.margin และ result.target_size เพื่อให้ได้ภาพผลลัพธ์ที่มีขนาดสวยงามและอยู่ตรงกลางทุกครั้ง


รูปแบบ: '(x.y%|px){1,4}', e.g. 10px 20% 5px 15%, ค่าเริ่มต้น: 0px

ขอบที่จะเพิ่มให้ภาพผลลัพธ์

เป็นการเพิ่มโดยไม่คำนึงว่าภาพผลลัพธ์ถูกครอบตัดให้เข้ากับพื้นหน้าหรือไม่

หากระบุ result.target_size ไว้ ขอบจะเป็นภาพเล็กภายใน กล่าวคือ จะไม่เพิ่มขนาดเป้าหมายที่แท้จริง

หน่วยที่รองรับคือ % และ px โดยเป็นไปตามหลักการเกี่ยวกับความหมายของ CSS ดังนั้นคุณสามารถใช้อย่างใดอย่างหนึ่งต่อไปนี้ได้:

  • [all]
  • [top/bottom] [left/right]
  • [top] [left/right] [bottom]
  • [top] [right] [bottom] [left]


รูปแบบ: 'w h' เช่น 1920 1080

บังคับให้ผลลัพธ์มีขนาดเฉพาะในหน่วยพิกเซล ผลลัพธ์จะถูกปรับขนาดให้พอดีกับขนาดที่ระบุไว้ หากมีพื้นที่มากเกินไป ก็จะจัดให้อยู่กึ่งกลางในแนวนอนเสมอ โดยมี result.vertical_alignment ควบคุมการจัดวางในแนวตั้ง


ข้อมูลคงที่, ค่าเริ่มต้น: middle

ระบุวิธีการจัดสรรพื้นที่แนวตั้งส่วนเกินเมื่อใช้ result.target_size


ข้อมูลคงที่, ค่าเริ่มต้น: auto

รูปแบบเอาต์พุต auto ได้รับการตีความว่าเป็น png สำหรับผลลัพธ์แบบโปร่งใส และ jpeg สำหรับผลลัพธ์แบบทึบแสง กล่าวคือ เมื่อได้ระบุ background.color ไว้

delta_png เป็นรูปแบบขั้นสูง รวดเร็ว และกะทัดรัดมาก จึงมีประโยชน์อย่างยิ่งในสถานการณ์ที่มีเวลาตอบสนองต่ำและมีแบนด์วิดท์จำกัด เช่น แอปบนอุปกรณ์พกพา โดยเข้ารหัสพื้นหลังเป็นสีดำโปร่งใส 0x00000000 และพื้นหน้าเป็นสีขาวโปร่งใส 0x00FFFFFF พิกเซลโปร่งใสบางส่วนจะมีค่าสีตามจริง คุณสามารถใช้พารามิเตอร์นี้ร่วมกับภาพอินพุตเพื่อสร้างผลลัพธ์เต็มรูปแบบอีกครั้งได้ Learn more about the Delta PNG format

โดยละเว้น background.color, result.crop_to_foreground, result.margin, result.target_size และ result.vertical_alignment เมื่อใช้ delta_png ผลลัพธ์ต้องมีขนาดเท่ากับภาพอินพุต มิฉะนั้นการถอดรหัสของคุณจะไม่ประสบผลสำเร็จ ดังนั้น max_pixels ต้องไม่ทำให้อินพุตหดตัว


เลขจำนวนเต็ม, 1 ถึง 100, ค่าเริ่มต้น: 75

คุณภาพที่จะใช้เมื่อเข้ารหัสผลลัพธ์ JPEG

ส่วนหัวของผลลัพธ์

X-Credits-Charged จำนวนเครดิตที่เรียกเก็บจริง
X-Credits-Calculated เครดิตที่คำนวณได้และจะเรียกเก็บเงินหากเป็นคำขอเพื่อการผลิต คืนค่าให้เฉพาะคำขอเพื่อทดสอบเท่านั้น
X-Input-Orientation แท็กการวางแนว EXIF ​​​​ที่เราอ่านมาและนำไปใช้กับภาพอินพุต โดยเป็นเลขจำนวนเต็มตั้งแต่ 1 ถึง 8 พารามิเตอร์นี้มีประโยชน์หากคลังการโหลดภาพของคุณไม่รองรับการวางแนว EXIF Read more about EXIF orientation here
X-Input-Size [width] [height] ของภาพอินพุตในหน่วยพิกเซล ก่อนที่จะปรับใช้ข้อจำกัดขนาด
X-Result-Size [width] [height] ของภาพผลลัพธ์ ในหน่วยพิกเซล
X-Input-Foreground [top] [left] [width] [height] กล่องขอบเขตของพื้นหน้าในพิกัดภาพอินพุต
X-Result-Foreground [top] [left] [width] [height] กล่องขอบเขตของพื้นหน้าในพิกัดภาพผลลัพธ์

บันทึกการเปลี่ยนแปลง API

วันที่เปลี่ยน
4 มี.ค. 2024 เพิ่มหัวข้อเกี่ยวกับการหมดเวลา
16 ม.ค. 2024 ออบเจ็กต์ JSON ของข้อผิดพลาดที่จัดทำเอกสารไว้
11 ม.ค. 2024 ตอนนี้คืนค่าให้ส่วนหัว X-Credits-Charged และเพิ่มส่วนหัว X-Credits-Calculated ให้คำขอเพื่อทดสอบ
13 มิ.ย. 2023 อัปเดต API ให้เป็นเวอร์ชัน 2 และพารามิเตอร์จาก camelCase เป็น snake_case เพื่อให้อ่านได้ง่ายขึ้น แม้ว่าได้เลิกใช้งาน API เวอร์ชันก่อนหน้านี้ไปแล้ว แต่ยังคงสามารถใช้งานได้
3 พ.ค. 2023 เพิ่มพารามิเตอร์ API ให้มากขึ้นอีกมาก
28 เม.ย. 2023 อัปเดตให้ URL ที่เป็นจุดหมายของ API
21 มี.ค. 2023 ออกเผยแพร่ครั้งแรก
รับคีย์ API