ข้อมูลอ้างอิง API

ConvertFly REST API ช่วยให้คุณแปลง ปรับให้เหมาะสม และแปลงรูปไฟล์ผ่านโปรแกรมได้ สร้างไปป์ไลน์การแปลงด้วยงานและงานย่อย ได้แก่ นำเข้าไฟล์ ประมวลผล และส่งออกผลลัพธ์ภายในคำขอเดียว

URL หลักhttps://convertfly.io/api/v1

endpoint ทั้งหมดอ้างอิงจาก URL หลักนี้ คำขอและการตอบกลับใช้ JSON เวลาประทับทั้งหมดเป็น UTC ในรูปแบบ ISO 8601

การยืนยันตัวตน

ทุกคำขอต้องมีคีย์ API ในส่วนหัว Authorization คีย์จะขึ้นต้นด้วย cvfly_sk_ และสร้างได้ในแดชบอร์ดของคุณ

ส่วนหัว HTTP
Authorization: Bearer cvfly_sk_live_abc123def456...

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

ขอบเขตสิทธิ์ของคีย์

คีย์ API สามารถจำกัดให้ใช้ได้เฉพาะบางการดำเนินการ คีย์ที่สร้างโดยไม่ระบุรายการขอบเขตสิทธิ์จะได้รับขอบเขตสิทธิ์เริ่มต้น

ขอบเขตสิทธิ์สิทธิ์การเข้าถึง
job:readอ่านงาน(ค่าเริ่มต้น)
job:writeสร้าง ยกเลิก ลองใหม่ และลบงานรวมถึงงานย่อยของงาน(ค่าเริ่มต้น)
task:readอ่านงานย่อย(ค่าเริ่มต้น)
convertเรียกใช้การแปลง(ค่าเริ่มต้น)
api-key:readแสดงรายการคีย์ API
api-key:writeสร้างและเพิกถอนคีย์ API
webhook:readแสดงรายการ webhook
webhook:writeสร้างและลบ webhook

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

แปลง PDF เป็น DOCX ใน 3 ขั้นตอน: สร้างงาน รอให้งานเสร็จ แล้วดาวน์โหลดผลลัพธ์

1

สร้างงานแปลงไฟล์

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "import-file": {
        "operation": "import/url",
        "url": "https://example.com/report.pdf"
      },
      "convert": {
        "operation": "convert",
        "input": ["import-file"],
        "output_format": "docx"
      },
      "export": {
        "operation": "export/url",
        "input": ["convert"]
      }
    }
  }'
JavaScript
const res = await fetch("https://convertfly.io/api/v1/jobs", {
  method: "POST",
  headers: {
    "Authorization": "Bearer cvfly_sk_live_abc123...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    tasks: {
      "import-file": {
        operation: "import/url",
        url: "https://example.com/report.pdf",
      },
      convert: {
        operation: "convert",
        input: ["import-file"],
        output_format: "docx",
      },
      export: {
        operation: "export/url",
        input: ["convert"],
      },
    },
  }),
});

const job = await res.json();
console.log(job.id);     // "cmxr9k2p0..."
console.log(job.status); // "processing"
Python
import requests

resp = requests.post(
    "https://convertfly.io/api/v1/jobs",
    headers={"Authorization": "Bearer cvfly_sk_live_abc123..."},
    json={
        "tasks": {
            "import-file": {
                "operation": "import/url",
                "url": "https://example.com/report.pdf",
            },
            "convert": {
                "operation": "convert",
                "input": ["import-file"],
                "output_format": "docx",
            },
            "export": {
                "operation": "export/url",
                "input": ["convert"],
            },
        }
    },
)
job = resp.json()
print(job["id"])      # "cmxr9k2p0..."
print(job["status"])  # "processing"
2

รอให้เสร็จสิ้น

ตรวจสอบสถานะงานเป็นระยะ หรือใช้ webhook เพื่อรับการแจ้งเตือนแบบเรียลไทม์

curl
curl https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_live_abc123..."
การตอบกลับ
{
  "id": "cmxr9k2p0",
  "status": "finished",
  "created_at": "2026-04-03T10:30:00Z",
  "tasks": [
    {
      "name": "export",
      "operation": "export/url",
      "status": "finished",
      "result": {
        "files": [
          { "url": "https://files.convertfly.io/d/cmv.../result.docx?e=...&s=..." }
        ]
      }
    }
  ]
}
3

ดาวน์โหลดผลลัพธ์

ใช้ URL จากผลลัพธ์ของงานย่อยส่งออก ลิงก์ดาวน์โหลดใช้ได้ 1 ชั่วโมง และไฟล์จะถูกลบ 24 ชั่วโมงหลังอัปโหลด

curl
curl -o result.docx "https://files.convertfly.io/d/..."

งาน (Jobs)

งาน (Job) คือคอนเทนเนอร์สำหรับงานย่อย (Task) หนึ่งรายการหรือมากกว่าที่ประกอบกันเป็นไปป์ไลน์การแปลง งานย่อยภายในงานจะดำเนินการตามลำดับการพึ่งพา โดยแต่ละงานย่อยสามารถอ้างอิงผลลัพธ์ของงานย่อยก่อนหน้าผ่านฟิลด์ input

แนวคิดไปป์ไลน์

ไปป์ไลน์ทั่วไปมีลักษณะดังนี้: import/url -> convert -> export/url คุณยังสามารถต่อการดำเนินการหลายรายการเข้าด้วยกันได้ เช่น import -> convert -> optimize -> watermark -> export

สถานะของงาน

สถานะคำอธิบาย
waitingสร้างงานแล้ว อยู่ในคิวรอประมวลผล
processingมีงานย่อยอย่างน้อยหนึ่งรายการกำลังทำงาน
finishedงานย่อยทั้งหมดเสร็จสมบูรณ์
errorงานย่อยหนึ่งรายการหรือมากกว่าล้มเหลว

สร้างงาน

POST/api/v1/jobs
tagstring

ป้ายกำกับเสริมสำหรับจัดระเบียบงาน (เช่น batch-2026-04)

tasksobjectจำเป็น

แมปของชื่องานย่อยกับคำจำกัดความของงานย่อย ชื่องานย่อยต้องไม่ซ้ำกันภายในงาน

webhook_urlstring

URL สำหรับรับเหตุการณ์ job.finished หรือ job.failed เมื่องานเสร็จสิ้น

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tag": "invoice-batch",
    "tasks": {
      "import-file": {
        "operation": "import/url",
        "url": "https://example.com/invoice.pdf"
      },
      "to-png": {
        "operation": "convert",
        "input": ["import-file"],
        "output_format": "png",
        "options": { "density": 300 }
      },
      "export": {
        "operation": "export/url",
        "input": ["to-png"]
      }
    }
  }'
การตอบกลับ (201 Created)
{
  "id": "cmxr9k2p0",
  "tag": "invoice-batch",
  "status": "processing",
  "created_at": "2026-04-03T10:30:00Z",
  "tasks": [
    { "name": "import-file", "operation": "import/url", "status": "finished" },
    { "name": "to-png",      "operation": "convert",    "status": "processing" },
    { "name": "export",      "operation": "export/url", "status": "waiting" }
  ]
}

ตัวอย่าง: รวมไฟล์เป็น PDF เดียว

การดำเนินการ merge รวมอินพุตตั้งแต่สองรายการขึ้นไป (PDF และ/หรือรูปภาพ) เป็น PDF เดียว ระบุชื่องานย่อยอินพุตตามลำดับในอาร์เรย์ input

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "cover": {
        "operation": "import/url",
        "url": "https://example.com/cover.png"
      },
      "report": {
        "operation": "import/url",
        "url": "https://example.com/report.pdf"
      },
      "merge-all": {
        "operation": "merge",
        "input": ["cover", "report"]
      },
      "export": {
        "operation": "export/url",
        "input": ["merge-all"]
      }
    }
  }'

ตัวอย่าง: จับภาพเว็บไซต์

การดำเนินการ capture-website ไม่ต้องใช้งานย่อยอินพุต โดยจะเรนเดอร์ URL สาธารณะเป็น PDF, PNG หรือ JPG

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "capture": {
        "operation": "capture-website",
        "url": "https://example.com",
        "output_format": "pdf",
        "width": 1280
      },
      "export": {
        "operation": "export/url",
        "input": ["capture"]
      }
    }
  }'

เรียกดูงาน

GET/api/v1/jobs/:id

เรียกดูรายละเอียดของงานและสถานะของงานย่อยทั้งหมด

curl
curl https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_..."

แสดงรายการงาน

GET/api/v1/jobs
pageinteger

หมายเลขหน้า เริ่มที่ 1 ค่าเริ่มต้น: 1

limitinteger

จำนวนผลลัพธ์ต่อหน้า 1-100 ค่าเริ่มต้น: 20

statusstring

กรองตามสถานะ: WAITING, PROCESSING, FINISHED, ERROR

tagstring

กรองตามแท็ก

curl
curl "https://convertfly.io/api/v1/jobs?status=finished&per_page=5" \
  -H "Authorization: Bearer cvfly_sk_..."
การตอบกลับ
{
  "data": [ ... ],
  "links": { "first": "?page=1&per_page=5", "last": "?page=9&per_page=5", "prev": null, "next": "?page=2&per_page=5" },
  "meta": {
    "page": 1,
    "per_page": 5,
    "total": 42
  }
}

ลบงาน

DELETE/api/v1/jobs/:id

ลบงานและไฟล์ที่เกี่ยวข้องทั้งหมด งานย่อยที่กำลังทำงานจะถูกยกเลิก การดำเนินการนี้ไม่สามารถย้อนกลับได้

curl
curl -X DELETE https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_..."

รอให้เสร็จสิ้น

GET/api/v1/jobs/:id/wait

endpoint แบบ long-poll ที่จะรอจนกว่างานเข้าสู่สถานะสิ้นสุด (FINISHED หรือ ERROR) หมดเวลาหลัง 300 วินาทีพร้อม 202 Accepted หากงานยังประมวลผลอยู่

curl
curl "https://convertfly.io/api/v1/jobs/job_7kX9mP2qR/wait?timeout=120" \
  -H "Authorization: Bearer cvfly_sk_..."

งานย่อย (Tasks)

งานย่อยคือขั้นตอนแต่ละขั้นภายในงาน งานย่อยแต่ละรายการมีชื่อ (คีย์ในออบเจกต์ tasks) operation และอาจมีอาร์เรย์ input ที่อ้างอิงชื่องานย่อยก่อนหน้า

ฟิลด์ของงานย่อย

ฟิลด์ประเภทคำอธิบาย
operationstringการดำเนินการที่ต้องการ (ดูการดำเนินการ)
inputstring[]ชื่อของงานย่อยที่จะใช้ผลลัพธ์เป็นอินพุต
output_formatstringรูปแบบเป้าหมายสำหรับการดำเนินการแปลง
optionsobjectการตั้งค่าเฉพาะของการดำเนินการ (คุณภาพ ความละเอียด ฯลฯ)

แสดงรายการงานย่อยของงาน

GET/api/v1/jobs/:id/tasks
การตอบกลับ
{
  "data": [
    {
      "name": "import-file",
      "operation": "import/url",
      "status": "finished",
      "result": { "file_id": "file_Xk9m..." }
    },
    {
      "name": "convert",
      "operation": "convert",
      "status": "finished",
      "result": { "file_id": "file_Pm3n..." }
    }
  ]
}

เรียกดูงานย่อย

GET/api/v1/jobs/:job_id/tasks/:task_name

ยกเลิกงานย่อย

POST/api/v1/jobs/:job_id/tasks/:task_name/cancel

ยกเลิกงานย่อยที่กำลังทำงานหรือรออยู่ งานย่อยปลายทางที่พึ่งพางานย่อยนี้จะถูกยกเลิกด้วย

ลองงานย่อยที่ล้มเหลวอีกครั้ง

POST/api/v1/jobs/:job_id/tasks/:task_name/retry

ลองงานย่อยที่มีสถานะ ERROR อีกครั้ง การดำเนินการนี้จะใช้เครดิตอีกครั้งหากงานย่อยมีค่าใช้จ่าย

การอัปโหลดไฟล์

การนำไฟล์เข้าสู่ ConvertFly ทำได้ 3 วิธี เลือกวิธีที่เหมาะกับกรณีการใช้งานของคุณมากที่สุด

นำเข้าจาก URL

วิธีที่ง่ายที่สุด ConvertFly จะดาวน์โหลดไฟล์จาก URL ที่เข้าถึงได้แบบสาธารณะ

คำจำกัดความของงานย่อย
{
  "import-file": {
    "operation": "import/url",
    "url": "https://example.com/document.pdf",
    "filename": "document.pdf",
    "headers": {
      "Authorization": "Bearer your-external-token"
    }
  }
}

อัปโหลดโดยตรง (presigned URL)

สำหรับไฟล์ในเครื่องของคุณ กระบวนการมี 2 ขั้นตอน: ขั้นแรกสร้างงานย่อยเพื่อรับ URL อัปโหลดแบบ presigned จากนั้นส่งไฟล์ของคุณด้วยคำสั่ง PUT ไปยัง URL นั้น

ขั้นตอนที่ 1: สร้างงานด้วย import/upload
{
  "upload-file": {
    "operation": "import/upload",
    "filename": "photo.jpg"
  }
}
ขั้นตอนที่ 2: อัปโหลดไปยัง presigned URL
# The task result will contain the presigned URL
curl -X PUT "https://files.convertfly.io/convertfly-files/..." \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

นำเข้าจาก Base64

สำหรับไฟล์ขนาดเล็ก (ต่ำกว่า 10 MB) ฝังเนื้อหาไฟล์ลงในคำขอโดยตรง

คำจำกัดความของงานย่อย
{
  "import-file": {
    "operation": "import/base64",
    "file": "JVBERi0xLjQKJcOkw7zD...",
    "filename": "document.pdf"
  }
}
วิธีการขนาดสูงสุดเหมาะสำหรับ
import/url5 GBไฟล์ที่โฮสต์อยู่ออนไลน์แล้ว
import/upload5 GBไฟล์ในเครื่อง ไฟล์ขนาดใหญ่
import/base6410 MBไฟล์ขนาดเล็ก ฝังในคำขอ

ตัวเลือกการแปลง

การดำเนินการแต่ละรายการรองรับตัวเลือกเฉพาะ ด้านล่างนี้คือการดำเนินการทั้งหมดที่มีและคู่รูปแบบไฟล์สำหรับการแปลง

การดำเนินการที่มีให้ใช้

การดำเนินการคำอธิบายเครดิต
import/uploadอัปโหลดไฟล์ผ่าน presigned URL0
import/urlนำเข้าไฟล์จาก URL0
import/base64นำเข้าไฟล์จากข้อมูล base640
convertแปลงระหว่างรูปแบบไฟล์1-4
optimizeบีบอัด/ปรับขนาดไฟล์ให้เหมาะสม1
thumbnailสร้างภาพตัวอย่างขนาดย่อ1
mergeรวม PDF และ/หรือรูปภาพหลายไฟล์เป็น PDF เดียว1
watermarkเพิ่มลายน้ำแบบข้อความหรือรูปภาพลงในรูปภาพ วิดีโอ หรือ PDF1
splitดึงบางหน้าออกจาก PDF หรือแยกเป็นหนึ่ง PDF ต่อหนึ่งหน้า (ZIP)1
rotateหมุนหน้าของ PDF ทีละ 90, 180 หรือ 270 องศา1
resizeปรับขนาดรูปภาพตามความกว้าง ความสูง หรือเปอร์เซ็นต์ โดยคงสัดส่วน1
gifเปลี่ยนคลิปวิดีโอเป็น GIF เคลื่อนไหว (จุดเริ่ม ความยาว fps ความกว้าง)2
ocrรู้จำข้อความใน PDF หรือรูปภาพ (14 ภาษา เช่นเดียวกับหน้า OCR)3
capture-websiteจับภาพเว็บไซต์สาธารณะเป็น PDF, PNG หรือ JPG1
metadataดึงเมทาดาทาของไฟล์1
export/urlรับ URL ดาวน์โหลดที่มีลายเซ็น0
export/s3ส่งออกไปยัง S3 bucket ของคุณโดยตรง0

คู่รูปแบบไฟล์ที่รองรับ

การแปลงยอดนิยม ระบบตรวจจับรูปแบบจากไฟล์โดยอัตโนมัติ แต่คุณสามารถระบุ input_format อย่างชัดเจนได้เช่นกัน

หมวดหมู่รูปแบบต้นทางรูปแบบผลลัพธ์
เอกสารpdf, docx, doc, odt, rtf, txt, htmlpdf, docx, odt, rtf, txt, html
สเปรดชีตxlsx, xls, ods, csvxlsx, ods, csv, pdf
งานนำเสนอpptx, ppt, odppptx, odp, pdf
รูปภาพjpg, png, gif, bmp, tiff, webp, svg, heicjpg, png, gif, bmp, tiff, webp
วิดีโอmp4, avi, mov, mkv, webmmp4, avi, mov, mkv, webm, gif
เสียงmp3, wav, ogg, flac, aac, m4amp3, wav, ogg, flac, aac

ตัวเลือกคุณภาพและการประมวลผล

ส่งค่าเหล่านี้ในออบเจกต์ options ของงานย่อยแปลงไฟล์

qualityinteger

คุณภาพผลลัพธ์สำหรับรูปแบบที่บีบอัดแบบสูญเสียข้อมูล (1-100) ค่าเริ่มต้น: 85

densityinteger

DPI สำหรับการแปลงเอกสารเป็นรูปภาพ ค่าเริ่มต้น: 150

widthinteger

ปรับขนาดเป็นความกว้างนี้ในหน่วยพิกเซล คงอัตราส่วนภาพไว้หากไม่ระบุ height

heightinteger

ปรับขนาดเป็นความสูงนี้ในหน่วยพิกเซล คงอัตราส่วนภาพไว้หากไม่ระบุ width

pagesstring

ช่วงหน้าสำหรับการดำเนินการกับเอกสาร เช่น 1-5, 1,3,5, all

ตัวอย่าง: PNG คุณภาพสูงที่ 300 DPI
{
  "convert-hq": {
    "operation": "convert",
    "input": ["import-file"],
    "output_format": "png",
    "options": {
      "density": 300,
      "quality": 95
    }
  }
}

Webhook

ลงทะเบียน URL ของ webhook เพื่อรับการแจ้งเตือนแบบเรียลไทม์เมื่องานหรืองานย่อยเปลี่ยนสถานะ เพย์โหลดทั้งหมดลงนามด้วย HMAC-SHA256 เพื่อให้คุณตรวจสอบได้ว่ามาจาก ConvertFly

สร้าง webhook

POST/api/v1/webhooks
urlstringจำเป็น

URL แบบ HTTPS สำหรับรับเหตุการณ์ webhook

eventsstring[]จำเป็น

ประเภทเหตุการณ์ที่ต้องการติดตาม

curl
curl -X POST https://convertfly.io/api/v1/webhooks \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-app.com/webhooks/convertfly",
    "events": ["job.finished", "job.failed"]
  }'
การตอบกลับ (201 Created)
{
  "data": {
    "id": "wh_Abc123...",
    "url": "https://your-app.com/webhooks/convertfly",
    "events": ["job.finished", "job.failed"],
    "signing_secret": "whsec_9f8e7d6c5b4a...",
    "created_at": "2026-04-03T10:30:00Z"
  }
}

แสดงรายการ webhook

GET/api/v1/webhooks

ลบ webhook

DELETE/api/v1/webhooks/:id

ประเภทเหตุการณ์

เหตุการณ์เงื่อนไขที่ทำให้เกิด
job.finishedงานย่อยทั้งหมดในงานเสร็จสมบูรณ์
job.failedงานย่อยหนึ่งรายการหรือมากกว่าล้มเหลว งานอยู่ในสถานะ ERROR
task.finishedงานย่อยรายการหนึ่งเสร็จสิ้น
task.failedงานย่อยรายการหนึ่งล้มเหลว

เพย์โหลดของ webhook

POST ไปยัง URL ของ webhook ของคุณ
{
  "event": "job.finished",
  "timestamp": "2026-04-03T10:31:15Z",
  "data": {
    "id": "job_7kX9mP2qR",
    "status": "finished",
    "tasks": { ... }
  }
}

การตรวจสอบลายเซ็น

คำขอ webhook แต่ละรายการมีส่วนหัว 2 รายการ ได้แก่ X-Webhook-Signature และ X-Webhook-Timestamp ตรวจสอบส่วนหัวเหล่านี้เพื่อให้แน่ใจว่าเพย์โหลดส่งมาจาก ConvertFly และไม่ถูกแก้ไข

Node.js
import crypto from "crypto";

function verifyWebhook(rawBody, signature, timestamp, secret) {
  const signedContent = timestamp + "." + rawBody;
  const expected = "v1=" + crypto
    .createHmac("sha256", secret)
    .update(signedContent)
    .digest("hex");

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}
Python
import hmac, hashlib

def verify_webhook(raw_body: bytes, signature: str, timestamp: str, secret: str) -> bool:
    signed_content = f"{timestamp}.{raw_body.decode()}"
    expected = "v1=" + hmac.new(
        secret.encode(), signed_content.encode(), hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

คีย์ API

จัดการคีย์ API ผ่านโปรแกรม คุณยังสามารถจัดการคีย์ได้จากแดชบอร์ด

สร้างคีย์ API

POST/api/v1/api-keys
namestringจำเป็น

ชื่อที่อธิบายคีย์

scopesstring[]

สิทธิ์ที่จะให้ ค่าเริ่มต้น: ["*"] (เข้าถึงได้ทั้งหมด)

การตอบกลับ (201 Created)
{
  "data": {
    "id": "key_Xk9m...",
    "name": "production-server",
    "key": "cvfly_sk_live_abc123def456...",
    "scopes": ["*"],
    "created_at": "2026-04-03T10:30:00Z"
  }
}

สำคัญ: คีย์ API ฉบับเต็มจะแสดงเพียงครั้งเดียวขณะสร้าง โปรดจัดเก็บไว้อย่างปลอดภัย คุณจะไม่สามารถเรียกดูได้อีก

แสดงรายการคีย์ API

GET/api/v1/api-keys

เพิกถอนคีย์ API

DELETE/api/v1/api-keys/:id

ทำให้คีย์ใช้งานไม่ได้ทันที คำขอใด ๆ ที่ใช้คีย์นี้จะได้รับ 401

การจำกัดอัตราการเรียกใช้

คำขอ API ถูกจำกัดอัตราต่อคีย์ API เพื่อให้การใช้งานเป็นธรรม เมื่อคุณเกินขีดจำกัด คำขอจะได้รับ 429 Too Many Requests

ขีดจำกัดเริ่มต้น

คีย์ API แต่ละคีย์อนุญาต 100 คำขอต่อชั่วโมง ขีดจำกัดและช่วงเวลาปัจจุบันของคีย์จะแสดงเป็น rate_limit และ rate_limit_window (วินาที) เมื่อคุณแสดงรายการคีย์ โปรดติดต่อเราหากการเชื่อมต่อของคุณต้องการขีดจำกัดที่สูงขึ้น

ส่วนหัวของการตอบกลับ

ทุกการตอบกลับของคำขอที่ใช้คีย์ API จะมีส่วนหัวเหล่านี้:

X-RateLimit-Limitส่วนหัว

จำนวนคำขอสูงสุดที่อนุญาตในช่วงเวลาปัจจุบัน

X-RateLimit-Remainingส่วนหัว

จำนวนคำขอที่เหลือในช่วงเวลาปัจจุบัน

X-RateLimit-Resetส่วนหัว

เวลาประทับ Unix เมื่อช่วงเวลารีเซ็ต

Retry-Afterส่วนหัว

จำนวนวินาทีที่ต้องรอก่อนลองอีกครั้ง (เฉพาะการตอบกลับ 429)

ตัวอย่างการตอบกลับ 429
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1743681600
Retry-After: 3600

{
  "code": "RATE_LIMIT_EXCEEDED",
  "message": "Rate limit exceeded. 100 requests per 3600s allowed."
}

ข้อผิดพลาด

ConvertFly ใช้รหัสสถานะ HTTP แบบมาตรฐาน การตอบกลับข้อผิดพลาดทั้งหมดใช้รูปแบบเดียวกัน โดยมี code ที่เครื่องอ่านได้และ message ที่มนุษย์อ่านได้

รูปแบบการตอบกลับข้อผิดพลาด

JSON
{
  "code": "INVALID_DATA",
  "message": "Missing required field: output_format",
  "details": {
    "field": "output_format",
    "reason": "required"
  }
}

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

รหัสHTTPคำอธิบาย
INVALID_DATA400เนื้อหาคำขอหรือพารามิเตอร์ไม่ถูกต้อง
UNAUTHENTICATED401ไม่มีคีย์ API หรือคีย์ API ไม่ถูกต้อง
FORBIDDEN403คีย์ API ไม่มีขอบเขตสิทธิ์ที่จำเป็นสำหรับการดำเนินการนี้
NOT_FOUND404ไม่มีทรัพยากรนี้หรือทรัพยากรถูกลบไปแล้ว
CONFLICT409มีทรัพยากรนี้อยู่แล้ว หรือการดำเนินการขัดแย้งกับสถานะปัจจุบัน
PAYLOAD_TOO_LARGE413เนื้อหาคำขอมีขนาดเกินขีดจำกัดสูงสุดที่อนุญาต
UNSUPPORTED_FORMAT422ไม่รองรับการแปลงที่ร้องขอ
RATE_LIMIT_EXCEEDED429เกินขีดจำกัดอัตราการเรียกใช้ ดูการจำกัดอัตราการเรียกใช้
INSUFFICIENT_CREDITS402เครดิตไม่เพียงพอสำหรับการดำเนินการนี้
SERVER_ERROR500ข้อผิดพลาดภายในเซิร์ฟเวอร์ โปรดลองอีกครั้งหรือติดต่อฝ่ายสนับสนุน
UNAVAILABLE503บริการไม่พร้อมใช้งานชั่วคราว โปรดลองอีกครั้งในอีกสักครู่

การจัดการข้อผิดพลาด

JavaScript
const res = await fetch("https://convertfly.io/api/v1/jobs", {
  method: "POST",
  headers: {
    "Authorization": "Bearer cvfly_sk_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ tasks: { /* ... */ } }),
});

if (!res.ok) {
  const error = await res.json();
  console.error(`[${error.code}] ${error.message}`);
  // "[INVALID_DATA] Missing required field: output_format"
  return;
}

const { data: job } = await res.json();

เครดิต

การดำเนินการแต่ละรายการมีค่าใช้จ่ายเป็นจำนวนเครดิตที่กำหนด การนำเข้าและส่งออกไม่มีค่าใช้จ่าย ยอดคงเหลือของคุณจะแสดงในทุกการตอบกลับของ API ผ่านส่วนหัว X-Credits-Remaining

ค่าเครดิตตามประเภทการแปลง

การดำเนินการค่าใช้จ่ายตัวอย่าง
นำเข้า / ส่งออกฟรีimport/url, import/upload, export/url, export/s3
การแปลงรูปภาพ1 เครดิตjpg เป็น png, webp เป็น gif, heic เป็น jpg
การแปลงเสียง1 เครดิตmp3 เป็น wav, flac เป็น aac
เอกสารเป็น PDF1 เครดิตtxt เป็น pdf, html เป็น pdf, md เป็น pdf
ไฟล์ Office เป็น PDF2 เครดิตdocx เป็น pdf, pptx เป็น pdf, xlsx เป็น pdf
การแปลงวิดีโอ2 เครดิตmp4 เป็น webm, mov เป็น mp4
PDF เป็นไฟล์ Office4 เครดิตpdf เป็น docx, pdf เป็น pptx
ปรับให้เหมาะสม1 เครดิตบีบอัดรูปภาพและ PDF
ภาพขนาดย่อ1 เครดิตสร้างภาพตัวอย่าง
รวมไฟล์1 เครดิตรวม PDF หลายไฟล์
ลายน้ำ1 เครดิตเพิ่มข้อความ/รูปภาพซ้อนทับ
แยกหน้า PDF1 เครดิตดึงหน้า 1-3, 7 หรือหนึ่งไฟล์ต่อหนึ่งหน้า
หมุน PDF1 เครดิตหมุนทุกหน้าหรือเฉพาะบางหน้า
ปรับขนาดรูปภาพ1 เครดิตกว้าง 1200 px, 50 เปอร์เซ็นต์
สร้าง GIF2 เครดิตคลิป mp4 เป็น gif ราคาเท่ากับการแปลงวิดีโอหนึ่งครั้ง
จับภาพเว็บไซต์1 เครดิตเรนเดอร์ URL เป็น PDF หรือรูปภาพ
OCR3 เครดิตทำให้ PDF ที่สแกนค้นหาข้อความได้
เมทาดาทา1 เครดิตดึงข้อมูลไฟล์

การตรวจสอบยอดคงเหลือ

ทุกการตอบกลับของ API มีส่วนหัว X-Credits-Remaining ซึ่งแสดงยอดคงเหลือปัจจุบันของคุณ

ส่วนหัวของการตอบกลับ
HTTP/1.1 201 Created
Content-Type: application/json
X-Credits-Remaining: 9847
X-Credits-Used: 2

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

แซนด์บ็อกซ์

คีย์แซนด์บ็อกซ์ช่วยให้คุณสร้างและทดสอบการเชื่อมต่อได้ตั้งแต่ต้นจนจบโดยไม่ใช้เครดิต สร้างคีย์ด้วย "sandbox": true คีย์จะขึ้นต้นด้วย cf_test_ แทน cvfly_sk_ ทุกอย่างทำงานเหมือนสภาพแวดล้อมจริง โดยมีความแตกต่าง 3 ข้อ

เครดิตไม่มีการหักเครดิต ยอดคงเหลือของคุณไม่เปลี่ยนแปลง
ขนาดไฟล์ไฟล์อินพุตจำกัดขนาดที่ 5 MB
ผลลัพธ์รูปภาพ วิดีโอ และ PDF จะมีลายน้ำ "ConvertFly SANDBOX"
สร้างคีย์แซนด์บ็อกซ์
curl -X POST https://convertfly.io/api/v1/api-keys \
  -H "Authorization: Bearer YOUR_LIVE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Sandbox", "sandbox": true}'

# Response includes: "key": "cf_test_...", "is_sandbox": true

พร้อมเริ่มพัฒนาแล้วหรือยัง

สร้างบัญชีฟรีและทดสอบ API ด้วยคีย์แซนด์บ็อกซ์โดยไม่มีค่าใช้จ่าย

ข้อมูลของคุณ

ไม่มีโฆษณาและเครือข่ายโฆษณา จึงไม่มีอะไรให้ปฏิเสธ สิ่งที่เราใช้มีดังนี้

ไฟล์ของคุณ

จัดเก็บแบบเข้ารหัสและลบหลังอัปโหลด 24 ชั่วโมง

คุกกี้ที่จำเป็น

เปิดใช้เสมอ
ใช้เพื่อชื่อระยะเวลา
จดจำภาษาของคุณNEXT_LOCALEจนกว่าจะปิดเบราว์เซอร์
นับโควตาฟรีของคุณcf_free1 ปี
คงการเข้าสู่ระบบauthjs.*30 วัน หากคุณมีบัญชี

Plausible โฮสต์โดย Dizzus ไม่ใช้คุกกี้ เราเห็นยอดรวม ไม่ใช่รายบุคคล

ผู้ให้บริการ: Stripe สำหรับการชำระเงิน Cloudflare สำหรับ DNS และการป้องกันบอต นโยบายความเป็นส่วนตัว