ข้ามไปที่เนื้อหา
FreshApp Demo

เอกสารสำหรับนักพัฒนา

เอกสาร API สำหรับการสร้างงาน

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

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

เริ่มต้นอย่างรวดเร็ว

สร้างคีย์ในหน้าคีย์ API เก็บไว้บนเซิร์ฟเวอร์ของคุณ และตั้งเป็น API_KEY ตัวอย่างด้านล่างสร้างงานด้วย seed-audio-1.0 อ่านสถานะจนงานเสร็จ แล้วดาวน์โหลดไฟล์แรก

ส่ง Idempotency-Key ใหม่ทุกครั้งที่ส่งคำขอใหม่ หากคำขอไม่ได้รับคำตอบ ให้ส่งซ้ำด้วยคีย์เดิมและเนื้อหาเดิม คุณจะได้งานที่คำขอแรกสร้างไว้ และถูกเรียกเก็บเงินเพียงครั้งเดียว

cURL

export API_ORIGIN='https://demo.freshapp.ai'
export API_KEY='sk_YOUR_API_KEY'

curl --fail-with-body "$API_ORIGIN/api/v1/generations" \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: order-1001' \
  -d '{"model":"seed-audio-1.0","input":{"prompt":"ประภาคารบนหน้าผายามรุ่งอรุณ ทะเลสงบ แสงนุ่มนวล"}}'

# Read it every 5 to 10 seconds until its status ends.
curl --fail-with-body "$API_ORIGIN/api/v1/generations/GENERATION_ID" \
  -H "Authorization: Bearer $API_KEY"

# A delivered output's url is a signed link: no key needed.
curl --fail-with-body -o result "OUTPUT_URL"

ไคลเอนต์ TypeScript

import { createClient } from './open-api-client';

const client = createClient({
  baseUrl: "https://demo.freshapp.ai",
  apiKey: process.env.API_KEY, // on your server only
});
const generation = await client.create(
  {
    "model": "seed-audio-1.0",
    "input": {
      "prompt": "ประภาคารบนหน้าผายามรุ่งอรุณ ทะเลสงบ แสงนุ่มนวล"
    }
  },
  { idempotencyKey: "order-1001" }
);
const done = await client.wait(generation.id);
for (const output of done.outputs)
  if (output.status === 'delivered') {
    const file = await client.download(output);
    // file.body is the output, as output.content_type says
  }

React hook

import { createClient } from './open-api-client';
import { useGeneration } from './open-api-react';

// In a browser on this site: no key, the visitor's own session.
const client = createClient();

export function Progress({ id }: { id: string }) {
  const { generation, error, done } = useGeneration(client, id);
  if (error) return <p>{String(error)}</p>;
  return <p>{generation?.status ?? '…'}{done ? ' ✓' : ''}</p>;
}

คีย์และสิทธิ์

ทุกคำขอต้องมี Authorization: Bearer พร้อมคีย์จากหน้าคีย์ API คีย์คือ sk_ ตามด้วยตัวอักษร ตัวเลข ขีดกลาง หรือขีดล่าง 43 ตัว และจะแสดงเพียงครั้งเดียวตอนสร้างหรือหมุนเวียนคีย์ คำขอที่มี Authorization จะตัดสินจากคีย์อย่างเดียว ไม่ใช้เซสชันที่ล็อกอินอยู่ข้าง ๆ

คีย์จะอ่านได้อย่างเดียว (ดูรายการ อ่าน และดาวน์โหลด) หรือสร้างได้ด้วย (สร้างและยกเลิก) คีย์แบบอ่านอย่างเดียวที่พยายามสร้างหรือยกเลิกจะได้ 403 insufficient_scope และจะไม่มีอะไรถูกบันทึก

คีย์มีรายการ IP ที่อนุญาตซึ่งประกอบด้วยที่อยู่และเครือข่ายได้ หากมาจากที่อยู่อื่นจะได้ 403 ip_not_allowed การเพิ่มสิทธิ์ให้คีย์ การเพิ่มขีดจำกัด หรือการขยายรายการต้องล็อกอินเมื่อไม่นานมานี้ ส่วนการจำกัดให้แคบลงไม่ต้อง

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

เฉพาะบัญชีที่มีสิทธิ์แบบชำระเงินเท่านั้นที่สร้างงานผ่าน API ได้ (ไม่เช่นนั้นจะได้ 403 not_eligible) และ API ใช้เฉพาะเครดิตแบบชำระเงิน (ไม่พอจะได้ 402 insufficient_credits) เครดิตของขวัญและเครดิตเช็กอินเก็บไว้ใช้บนเว็บไซต์

Endpoint ของ API สำหรับการสร้างงาน

ทุกเส้นทางอยู่บนเว็บไซต์นี้ เนื้อหาคำขอและคำตอบเป็น JSON ยกเว้นไฟล์ผลลัพธ์

https://demo.freshapp.ai

เมธอดเส้นทางสิทธิ์หน้าที่
POST/api/v1/generationsgenerations:writeสร้างงาน ต้องมี Idempotency-Key และตอบกลับเป็น 202 พร้อมงาน
GET/api/v1/generationsgenerations:readงานของบัญชี เรียงจากใหม่ไปเก่า ทีละหน้า (limit, cursor, module) งานข้อความอ่านได้ด้วยรหัสเท่านั้น
GET/api/v1/generations/{id}generations:readงานหนึ่งงานของบัญชี พร้อมเอาต์พุต เครดิต และเหตุผลที่งานจบ
POST/api/v1/generations/{id}/cancelgenerations:writeยกเลิกงานที่ยังไม่ได้ส่งไปยังโมเดลและคืนเครดิต
GET, HEAD/api/media/{id}generations:read (หรือลิงก์ที่มีลายเซ็น)ไฟล์ของเอาต์พุต รองรับช่วงไบต์ได้หนึ่งช่วง ลิงก์ที่มีลายเซ็นไม่ต้องใช้คีย์และใช้ได้จากทุกที่อยู่

โมเดลและราคา

โมเดลที่เปิดใช้งานบนเว็บไซต์นี้ในรูปแบบที่ API รับ ใส่รหัสใน model และใส่ฟิลด์ใน input คำขอจะกันเครดิตตามผลลัพธ์ที่แพงที่สุดตอนสร้าง และเมื่อจบคุณจ่ายตามที่ส่งมอบจริง

รหัสโมเดลชื่อประเภทราคาสูงสุดต่อคำขอฟิลด์อินพุต
seed-audio-1.0Seed Audio 1.0เสียง75 เครดิต ต่อนาที; อย่างน้อย 10 เครดิตเมื่อส่งมอบผลลัพธ์150 เครดิตprompt (จำเป็น), voice, audio_references, image_url, output_format, sample_rate, speed, volume, pitch, multilingual

การส่งซ้ำอย่างปลอดภัย (Idempotency)

การสร้างงานต้องมีส่วนหัว Idempotency-Key ที่ประกอบด้วยตัวอักษร ตัวเลข จุด ทวิภาค ขีดล่าง หรือขีดกลาง 1 ถึง 128 ตัว ใช้รหัสจากระบบของคุณเอง เช่น เลขที่คำสั่งซื้อ เพื่อให้งานเดียวกันได้คีย์เดิมเสมอ

คีย์เดิมกับคำขอเดิมจะได้งานเดิมไม่ว่าจะส่งกี่ครั้ง และถูกเรียกเก็บเงินครั้งเดียว คีย์เดิมกับคำขอที่ต่างออกไปจะได้ 409 idempotency_conflict และไม่มีงานใดถูกสร้าง

การหมดเวลาหรือการเชื่อมต่อขาดไม่ได้แปลว่าคำขอล้มเหลว ให้ส่งซ้ำด้วยคีย์เดิมและเนื้อหาเดิม และเก็บทั้งสองอย่างไว้จนกว่าจะได้คำตอบ 5xx 429 หรือ 408 ก็จัดการแบบเดียวกัน คือรอตามที่ Retry-After บอก แล้วส่งคำขอเดิมซ้ำโดยไม่เปลี่ยนแปลง

สถานะและการติดตาม

อ่านงานด้วย GET /api/v1/generations/{id} ทุก 5 วินาทีในช่วงแรก แล้วห่างได้ถึงทุก 10 วินาที จนกว่าสถานะจะสิ้นสุด หากได้ 429 จะมี Retry-After บอกว่าควรอ่านอีกเมื่อไร

สถานะความหมาย
queuedรับคำขอแล้ว รอส่งไปยังโมเดล ยังยกเลิกได้
processingส่งไปยังโมเดลแล้ว หรือกำลังบันทึกไฟล์และชำระยอด
succeededส่งมอบเอาต์พุตครบทุกรายการและชำระเครดิตเรียบร้อย
partially_succeededส่งมอบและเรียกเก็บเงินเอาต์พุตบางส่วน เครดิตของส่วนที่เหลือคืนแล้ว
failedไม่มีการส่งมอบใด ๆ error ระบุเหตุผล และเครดิตที่กันไว้คืนแล้ว
canceledถูกยกเลิกก่อนส่ง โดยคุณหรือเพราะคีย์ถูกเพิกถอน เครดิตคืนแล้ว

billing.reserved_credits คือเครดิตที่กันไว้ตอนสร้างงาน หลังชำระยอด charged_credits คือยอดที่คุณจ่าย และ refunded_credits คือยอดที่คืน ก่อนหน้านั้นทั้งสองค่าเป็น null และ held_credits แสดงเครดิตที่กันไว้อยู่

งานที่รอการตรวจสอบด้วยคนจะแสดง review พร้อมเวลาที่เริ่มตรวจสอบ และกันเครดิตไว้จนกว่าการตรวจสอบจะเสร็จ จากนั้นงานจะทำต่อหรือคืนเครดิต

ไฟล์ผลลัพธ์

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

ใช้คีย์โดยตรงกับ GET /api/media/{id} ก็ได้ไฟล์เช่นกัน ภายใต้รายการ IP ที่อนุญาตของคีย์ ทั้งสองวิธีรองรับ HEAD และช่วงไบต์หนึ่งช่วง (Range: bytes=0-1023) และจะไม่เปลี่ยนเส้นทางไปเว็บไซต์อื่น

ไฟล์ที่อ้างอิงในอินพุต เช่น ตัวอย่างเสียงหรือภาพ ต้องเป็นไฟล์ที่บัญชีนี้อัปโหลดบนเว็บไซต์ ตัวอย่างของเว็บไซต์เอง หรือลิงก์จากแหล่งที่เว็บไซต์อนุญาต นอกนั้นจะถูกปฏิเสธก่อนกันเครดิต

ขีดจำกัด

ขีดจำกัดด้านล่างทุกข้อคือค่าที่เว็บไซต์นี้ใช้อยู่ตอนนี้ และทุกการปฏิเสธจะบอกว่าชนขีดจำกัดใด

  • คำขอหนึ่งครั้งกันเครดิตได้สูงสุด 150 เครดิต ซึ่งเป็นคำขอที่แพงที่สุดของโมเดลที่เปิดใช้งาน ตั้งคีย์ให้ต่ำกว่านี้ได้ และ max_credits ในคำขอจะลดค่านี้สำหรับคำขอนั้น หากเกินจะได้ 400 request_limit_exceeded
  • แต่ละคีย์ใช้ได้สูงสุด 5,000 เครดิตต่อวัน UTC เว้นแต่คุณจะตั้งขีดจำกัดของคีย์เอง ได้สูงสุด 1,000,000 หากเกิน คีย์จะได้ 429 key_daily_limit_exceeded จนถึงวัน UTC ถัดไป
  • ทุกคีย์ของบัญชีรวมกับไคลเอนต์ AI ของบัญชีใช้ได้สูงสุด 10,000 เครดิตต่อวัน UTC เว้นแต่คุณจะตั้งขีดจำกัดของบัญชีเอง หากเกินจะได้ 429 account_daily_limit_exceeded
  • แต่ละคีย์และแต่ละบัญชีสร้างและยกเลิกได้สูงสุด 20 ครั้ง อ่านและดาวน์โหลดได้ 240 ครั้งต่อนาที หากเกินจะได้ 429 rate_limited พร้อม Retry-After
  • บัญชีหนึ่งมีงานที่ทำพร้อมกันได้สูงสุด 2 งาน งานเพิ่มเติมต้องรอพร้อม 429 too_many_active
  • เนื้อหาคำขอมีขนาดไม่เกิน 32 KiB ของ JSON หากใหญ่กว่านั้นจะได้ 413 request_too_large

รหัสข้อผิดพลาด

ข้อผิดพลาดอยู่ในรูป {"error": {"code": …, "message": …}} code จะเป็นรหัสใดรหัสหนึ่งในตารางนี้เสมอ และ message เป็นคำอธิบายภาษาอังกฤษสำหรับนักพัฒนา 429 หรือ 503 จะบอกใน Retry-After ว่าต้องรอกี่วินาที งานที่ล้มเหลวหรือถูกยกเลิกจะมีรหัสที่ระบุว่าเป็นของงานอยู่ในฟิลด์ error

HTTPรหัสความหมายสิ่งที่ควรทำ
401invalid_credentialไม่มีคีย์ API รูปแบบผิด ไม่รู้จัก ถูกเพิกถอน หรือถูกแทนที่แล้วตรวจสอบคีย์ API สิทธิ์ และรายการ IP ที่อนุญาต
401credential_revokedคีย์ถูกเพิกถอนหรือหมุนเวียนระหว่างที่คำขอทำงาน งานในคิวของคีย์ที่ถูกเพิกถอนจะถูกยกเลิกและคืนเครดิตตรวจสอบคีย์ API สิทธิ์ และรายการ IP ที่อนุญาต
403insufficient_scopeคีย์นี้ทำสิ่งนี้ไม่ได้ ข้อผิดพลาดระบุสิทธิ์ที่ต้องใช้ไว้ใน required_scopeตรวจสอบคีย์ API สิทธิ์ และรายการ IP ที่อนุญาต
403ip_not_allowedใช้คีย์นี้จากที่อยู่นี้ไม่ได้ เพราะอยู่นอกรายการ IP ที่อนุญาตของคีย์ตรวจสอบคีย์ API สิทธิ์ และรายการ IP ที่อนุญาต
401unauthorizedเซสชันของเว็บไซต์หมดอายุ โปรดล็อกอินใหม่แก้ไขคำขอก่อนส่งอีกครั้ง
403invalid_originคำขอของเว็บไซต์ต้องมาจากเว็บไซต์นี้เองแก้ไขคำขอก่อนส่งอีกครั้ง
403forbiddenคำขอไม่มีที่อยู่ไคลเอนต์ที่เชื่อถือได้ติดต่อฝ่ายช่วยเหลือของเว็บไซต์
400invalid_requestคำขอผิดรูปแบบ ทั้ง JSON ส่วนหัว (Idempotency-Key, Content-Type) หรือพารามิเตอร์ค้นหาแก้ไขคำขอก่อนส่งอีกครั้ง
400invalid_inputอินพุตไม่ตรงกับฟิลด์ของโมเดล หรือโมเดลใช้อินพุตนั้นไม่ได้แก้ไขคำขอก่อนส่งอีกครั้ง
413request_too_largeเนื้อหาคำขอใหญ่เกินไปแก้ไขคำขอก่อนส่งอีกครั้ง
409idempotency_conflictIdempotency-Key นี้ถูกใช้กับคำขออื่นที่ต่างกันไปแล้วแก้ไขคำขอก่อนส่งอีกครั้ง
404model_unavailableไม่รู้จักโมเดลนี้ หรือโมเดลไม่พร้อมใช้งานในตอนนี้แก้ไขคำขอก่อนส่งอีกครั้ง
404not_foundไม่มีเส้นทาง งาน หรือไฟล์นี้สำหรับบัญชีนี้แก้ไขคำขอก่อนส่งอีกครั้ง
405method_not_allowedเส้นทางนี้ไม่รับเมธอดนี้ Allow ระบุเมธอดที่รับได้แก้ไขคำขอก่อนส่งอีกครั้ง
409not_cancelableงานถูกส่งไปยังโมเดลแล้ว หรือจบไปแล้วแก้ไขคำขอก่อนส่งอีกครั้ง
409not_readyไฟล์ยังไม่พร้อมรอตามที่ Retry-After บอก แล้วส่งอีกครั้ง
410expiredไฟล์เกินระยะเวลาจัดเก็บแล้วและถูกลบแล้วแก้ไขคำขอก่อนส่งอีกครั้ง
400request_limit_exceededคำขอนี้จะมีค่าใช้จ่ายเกิน max_credits ของคำขอ หรือเกินขีดจำกัดต่อคำขอของคีย์หรือของเว็บไซต์แก้ไขคำขอก่อนส่งอีกครั้ง
403not_eligibleการสร้างงานผ่าน API ต้องใช้บัญชีแบบชำระเงินซื้อแพ็กเครดิตหรือแพ็กเกจ API ใช้เฉพาะเครดิตแบบชำระเงิน
403email_unverifiedยืนยันอีเมลของบัญชีก่อนจึงจะสร้างงานได้แก้ไขคำขอก่อนส่งอีกครั้ง
402insufficient_creditsเครดิตไม่พอ API ใช้เฉพาะเครดิตแบบชำระเงินซื้อแพ็กเครดิตหรือแพ็กเกจ API ใช้เฉพาะเครดิตแบบชำระเงิน
403generation_restrictedการสร้างงานของบัญชีนี้ถูกพักไว้หลังเนื้อหาถูกปฏิเสธซ้ำหลายครั้ง ends_at บอกว่าพักถึงเมื่อไรติดต่อฝ่ายช่วยเหลือของเว็บไซต์
403trial_pausedการทดลองบนเว็บไซต์ของบัญชีนี้ถูกพักไว้ หลังเอาต์พุตของการทดลองเกินขีดจำกัดหลายครั้ง ends_at บอกว่าพักถึงเมื่อไร คำขอที่ไม่ใช่การทดลองยังใช้ได้ตามปกติแก้ไขคำขอก่อนส่งอีกครั้ง
429key_daily_limit_exceededถึงขีดจำกัดการใช้จ่ายรายวันของคีย์แล้วรอตามที่ Retry-After บอก แล้วส่งอีกครั้ง Retry-After: จนถึงวัน UTC ถัดไป
429account_daily_limit_exceededถึงขีดจำกัดการใช้จ่ายรายวันของบัญชีสำหรับ API แล้วรอตามที่ Retry-After บอก แล้วส่งอีกครั้ง Retry-After: จนถึงวัน UTC ถัดไป
429rate_limitedมีคำขอมากเกินไปในเวลาสั้น ๆรอตามที่ Retry-After บอก แล้วส่งอีกครั้ง Retry-After: ช่วงเวลาของขีดจำกัด
429too_many_activeบัญชีมีงานที่กำลังทำงานอยู่มากเกินไปรอตามที่ Retry-After บอก แล้วส่งอีกครั้ง Retry-After: 30 วินาที
429too_many_under_reviewงานบางส่วนของบัญชีกำลังรอการตรวจสอบด้วยคนรอตามที่ Retry-After บอก แล้วส่งอีกครั้ง Retry-After: 3,600 วินาที
503busyขณะนี้เว็บไซต์มีงานที่กำลังทำงานอยู่มากเกินไปรอตามที่ Retry-After บอก แล้วส่งอีกครั้ง Retry-After: 30 วินาที
503pausedการสร้างงานถูกพักไว้ชั่วคราวรอตามที่ Retry-After บอก แล้วส่งอีกครั้ง Retry-After: 60 วินาที
503temporarily_unavailableไม่สามารถดำเนินการคำขอได้ในขณะนี้ส่งคำขอเดิมซ้ำด้วย Idempotency-Key เดิม Retry-After: 60 วินาที
503api_unavailableเว็บไซต์นี้ยังไม่เปิดให้สร้างงานรอตามที่ Retry-After บอก แล้วส่งอีกครั้ง Retry-After: 60 วินาที
503retryมีบางอย่างเปลี่ยนไประหว่างที่คำขอทำงาน เช่น การตั้งค่าของคีย์ส่งคำขอเดิมซ้ำด้วย Idempotency-Key เดิม Retry-After: 60 วินาที
503unavailableไฟล์ไม่พร้อมใช้งานชั่วคราวรอตามที่ Retry-After บอก แล้วส่งอีกครั้ง Retry-After: 60 วินาที
500internal_errorเกิดปัญหาบนเว็บไซต์ส่งคำขอเดิมซ้ำด้วย Idempotency-Key เดิม
400request_failedคำขอถูกปฏิเสธด้วยเหตุผลที่ไม่มีรหัสเฉพาะติดต่อฝ่ายช่วยเหลือของเว็บไซต์
400captcha_requiredโปรดผ่านการตรวจสอบความปลอดภัยของเว็บไซต์แก้ไขคำขอก่อนส่งอีกครั้ง
403captcha_failedไม่ผ่านการตรวจสอบความปลอดภัยของเว็บไซต์แก้ไขคำขอก่อนส่งอีกครั้ง
503captcha_unavailableการตรวจสอบความปลอดภัยของเว็บไซต์ไม่พร้อมใช้งานรอตามที่ Retry-After บอก แล้วส่งอีกครั้ง Retry-After: 60 วินาที
400reference_unavailableไฟล์อัปโหลดที่อ้างอิงไม่มีอยู่แล้ว หรือไม่ใช่ของบัญชีนี้แก้ไขคำขอก่อนส่งอีกครั้ง
413reference_too_largeไฟล์อัปโหลดที่อ้างอิงรวมกันได้ไม่เกิน 10 MBแก้ไขคำขอก่อนส่งอีกครั้ง
503reference_storage_unavailableที่เก็บไฟล์อ้างอิงไม่พร้อมใช้งานรอตามที่ Retry-After บอก แล้วส่งอีกครั้ง Retry-After: 60 วินาที
409storage_quota_exceededพื้นที่จัดเก็บของบัญชีเต็มแล้วติดต่อฝ่ายช่วยเหลือของเว็บไซต์
ในงานcanceledงานถูกยกเลิกก่อนส่ง เครดิตคืนแล้วแก้ไขคำขอก่อนส่งอีกครั้ง
ในงานsubmission_expiredส่งงานไม่ทันเวลา เครดิตคืนแล้วส่งคำขอเดิมซ้ำด้วย Idempotency-Key เดิม
ในงานmodel_busyโมเดลไม่ว่าง เครดิตคืนแล้วรอตามที่ Retry-After บอก แล้วส่งอีกครั้ง
ในงานcontent_rejectedการตรวจสอบความปลอดภัยของเนื้อหาปฏิเสธอินพุตหรือเอาต์พุตแก้ไขคำขอก่อนส่งอีกครั้ง
ในงานresult_expiredบันทึกผลลัพธ์ไม่ทันเวลาติดต่อฝ่ายช่วยเหลือของเว็บไซต์
ในงานgeneration_failedการสร้างงานล้มเหลวติดต่อฝ่ายช่วยเหลือของเว็บไซต์
ในงานdelivery_failedส่งมอบผลลัพธ์ไม่ได้ เครดิตคืนแล้วติดต่อฝ่ายช่วยเหลือของเว็บไซต์
ในงานtrial_limit_exceededเอาต์พุตของการทดลองบนเว็บไซต์เกินขีดจำกัดการทดลองจึงไม่ได้ส่งมอบ เครดิตคืนแล้วแก้ไขคำขอก่อนส่งอีกครั้ง

ไคลเอนต์ TypeScript และ React hook

ไคลเอนต์ TypeScript open-api-client.ts ไม่ต้องใช้แพ็กเกจอื่น และทำงานได้บนเซิร์ฟเวอร์ ใน worker และในเบราว์เซอร์ บนเซิร์ฟเวอร์ให้ส่ง baseUrl และ apiKey ส่วนในเบราว์เซอร์บนเว็บไซต์นี้ไม่ต้องส่งทั้งสองอย่าง แล้วคำขอจะใช้เซสชันของผู้เยี่ยมชมเอง

create จะส่ง Idempotency-Key (ของคุณ หรือค่าสุ่มใหม่) และส่งคำขอเดิมซ้ำหลังการเชื่อมต่อขาด 5xx 429 หรือ 408 โดยรอตามที่ Retry-After บอก เมื่อเลิกลอง ข้อผิดพลาดจะมีคีย์นั้นแนบมา ให้คุณส่งคำขอซ้ำได้ภายหลัง หากส่ง store เช่น localStorage คำขอจะใช้คีย์แรกต่อแม้โหลดหน้าใหม่

wait อ่านงานจนกว่าจะเสร็จ ช่วงแรกห่างกัน 5 วินาที แล้วห่างได้ถึง 10 วินาที และหยุดทันทีเมื่อคุณยกเลิก download ดึงไฟล์ของเอาต์พุต และส่งคีย์ไปเฉพาะลิงก์ที่ไม่มีลายเซ็นของเว็บไซต์นี้

React hook open-api-react.ts ติดตามงานหนึ่งงานด้วย wait ของไคลเอนต์ และหยุดเมื่อคอมโพเนนต์ถูกถอดออก ดาวน์โหลดทั้งสองไฟล์ วางไว้ด้วยกัน แล้วเปลี่ยนนามสกุลเป็น .ts

ดาวน์โหลด