←Home/Docs
⌕

Lỗi & cấu trúc phản hồi

Mọi phản hồi — thành công hay thất bại — đều sử dụng chung một cấu trúc JSON envelope, do đó client chỉ cần một luồng xử lý duy nhất để kiểm tra thành công hay thất bại.

Phản hồi thành công

{
  "success": true,
  "data": { "…": "…" },
  "meta": {
    "request_id": "0198f3a2-…",
    "units_charged": 1,
    "pagination": { "next_cursor": "…", "has_more": true },
    "freshness": { "corpus_last_event_at": "2026-08-01T04:12:09Z" }
  }
}

pagination và freshness chỉ xuất hiện khi phù hợp với endpoint tương ứng.

Phản hồi lỗi

{
  "success": false,
  "error": {
    "code": "quota_exceeded",
    "message": "Monthly quota of 500 units used.",
    "details": { "period_end": "2026-08-31", "upgrade": "https://crawlpipe.com/pricing" }
  },
  "meta": { "request_id": "…" }
}

Hãy kiểm tra success trước — không bao giờ suy đoán lỗi chỉ dựa vào HTTP status, và không bao giờ đọc error.message để xử lý logic (nó dành cho người đọc; hãy rẽ nhánh bằng error.code).

Mã lỗi (Error codes)

HTTPMã lỗiTrường hợp xảy ra
400validation_errorTham số không hợp lệ — xem details.fields
401invalid_keyKhóa API thiếu, không tồn tại hoặc đã bị thu hồi
402payment_requiredEndpoint x402 chưa thanh toán, hoặc đăng ký quá hạn
403feature_not_in_planVí dụ: tìm kiếm ngữ nghĩa ở gói Miễn phí — xem details.required_plan
403insufficient_scopeKhóa thiếu quyền yêu cầu — xem details.required_scope
404not_foundKhông tìm thấy tài nguyên
409idempotency_conflictTrùng Idempotency-Key nhưng nội dung yêu cầu khác nhau
422unprocessableVí dụ: ngày at= trước khi văn bản tồn tại
429rate_limitedVượt giới hạn số yêu cầu/phút — xem header Retry-After
429quota_exceededHết hạn mức đơn vị theo tháng
429spending_cap_reachedVượt hạn mức chi tiêu của tổ chức
500internal_errorLỗi máy chủ không mong muốn

Header trên mọi phản hồi

X-Request-Id, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (unix timestamp). Các yêu cầu tính phí thành công sẽ có thêm X-CrawlPipe-Units-Charged và X-CrawlPipe-Units-Remaining — xem thêm Đo lường & idempotency.

Lỗi & cấu trúc phản hồi — CrawlPipe Docs