WanduraDocsBeta
BetaDocs đang ở bản beta và còn thay đổi. Thấy chỗ sai, khó hiểu hoặc còn thiếu? Hãy cho chúng tôi biết.
Bạn đang đọc một bản tài liệu cũ: v1 · Sang bản mới nhất (v2)
Khái niệm

Lỗi

Markdown
Trên trang này

TL;DR — Rẽ nhánh theo error_code (với creatives: code dạng số), không bao giờ theo thông điệp. Luôn có nhánh mặc định: mã lạ được xử lý theo nhóm HTTP status (429 và 5xx thì retry, các 4xx khác thì không). Trang này liệt kê mọi status và mã mà từng endpoint trả về, kèm việc app hiển thị gì và backend làm gì. Khi nào retry và retry thế nào: chính sách retry.

Định dạng lỗi

Định dạng phẳng

Catalog, playback, cấu hình và video mở dùng một object phẳng:

{
  "error": "Episode not found or not ready to stream",
  "error_code": "not_ready"
}
Trường Kiểu Mô tả
error string Thông điệp để ghi log. Đừng hiển thị cho người xem và đừng parse, trừ những dòng bên dưới ghi rằng mã nằm trong error.
error_code string Mã máy đọc được. Rẽ nhánh theo trường này. Một số lỗi không có trường này (bảng bên dưới ghi là không có).
reason string Với not_entitled, và với 429 prefetch_shed: lý do chi tiết.
fields mảng string Với invalid_device_info: các giá trị thiết bị bị từ chối.
protection string Với sdk_required: mức bảo vệ của tập.
supported_versions, latest_version, upgrade_to Với unsupported_version: những gì bạn có thể gửi thay thế.

Một vài response 4xx không có error_code mà đặt một mã ổn định trong error: org_suspended, app_not_registered, collection_not_found và video_not_found. Hãy so sánh nguyên chuỗi.

Envelope của creatives

Các endpoint creatives bọc lỗi trong một envelope với code dạng số. Lỗi không có trường data:

{
  "code": 4011,
  "message": "Invalid or revoked API key",
  "server_time": 1790679032
}

code có bốn chữ số: ba chữ số đầu là HTTP status. Hai response của creatives dùng định dạng phẳng thay vì envelope: 429 rate_limited và 400 unsupported_version.

Request id

Mọi response mang header Wandura-Request-Id (ví dụ req_01J9Z3W2N8V4K7D5QX6T0B1C2M), và mọi body lỗi JSON, phẳng hay envelope, có trường request_id cùng giá trị. Hãy ghi log giá trị này, và trích dẫn khi liên hệ hỗ trợ: nó giúp tìm đúng request trong log của Wandura.

Trong lúc tính năng này chưa chạy, hãy gửi kèm endpoint, thời điểm theo UTC chính xác tới giây, status, mã lỗi và tiền tố key của bạn.

Xử lý lỗi theo mã

Bạn nhận được Làm gì
Một mã có trong trang này Làm theo dòng của mã đó.
Một error_code lạ với 429 Chờ hết Retry-After, rồi retry.
Một error_code lạ với một 4xx khác Không retry. Hiển thị lỗi chung và báo cho kỹ sư của bạn.
Một error_code lạ với 5xx Retry với backoff, như 503.
Không có body, hoặc body không phải JSON Quyết định theo nhóm status, cùng cách như trên.

Mã mới có thể xuất hiện trong v1 bất cứ lúc nào; app không có nhánh mặc định sẽ hiện màn hình trắng khi gặp mã mới. Không bao giờ hiển thị error hay message cho người xem: hãy ánh xạ mã sang nội dung của riêng bạn.

Retry-After

Được gửi kèm mọi 429, và các 503 được ghi "Sau Retry-After" bên dưới. Không bao giờ retry sớm hơn. 503 not_ready, các 503 của creatives, 502 và 500 không có header này: hãy dùng backoff.

Thông báo cho người xem

Cột "App hiển thị" bên dưới dùng bốn thông báo này. Hãy dùng câu chữ của riêng bạn.

Thông báo Khi nào
Không khả dụng — "Phim này không còn khả dụng" Giấy phép không hoạt động.
Chưa có — "Chưa khả dụng" Lúc này tập chưa phát được.
Bận — "Hệ thống đang bận, thử lại sau giây lát" Đã retry mà vẫn lỗi tạm thời.
Hỏng — "Không tải được tập này" Lỗi trong tích hợp của bạn. Báo cho kỹ sư của bạn.

Mọi endpoint

Mọi path

Status Mã Khi nào Retry? Làm gì
404 not_found Path lạ dưới /api/delivery/v1/, với bất kỳ method nào. Không có header Wandura-Version. Không Sửa path.
405 không có (empty body) Path có thật nhưng sai method, ví dụ GET /playback. Header Allow liệt kê method đúng. Không Sửa method.

Catalog

GET /api/delivery/v1/catalog

Status Mã Khi nào Retry? App hiển thị Backend làm gì
400 invalid_request limit không nằm trong 1–200, hoặc cursor bị sửa. Không — Sửa request. Đi lại từ trang đầu.
400 unsupported_version Header Wandura-Version, hoặc phiên bản key của bạn đang ghim, không tồn tại hoặc đã ngừng. Không — Gửi một phiên bản còn hỗ trợ; xem Chuyển phiên bản.
401 không có Thiếu header, hoặc key không tồn tại hay đã bị thu hồi. Không — Kiểm tra key. Giữ catalog cũ của bạn.
403 không có Key thiếu metadata:read. Không — Dùng key có scope đó.
403 org_suspended (in error) Tổ chức của bạn đang bị tạm ngưng. Không — Giữ bản sao, ngừng bán, liên hệ Wandura.
429 rate_limited Đã chạm ngưỡng catalog. Sau Retry-After — Chờ, rồi tìm vòng lặp gây ra.
503 service_unavailable Wandura chưa kiểm được key kịp lúc. Key không sai. Sau Retry-After — Retry. Không bao giờ xoay key vì lỗi này.
503 service_unavailable Wandura chưa đọc được catalog kịp lúc (Could not read the catalog in time — retry). Sau Retry-After — Retry. Không bao giờ coi đây là catalog rỗng.

Liệt kê bộ phim

GET /api/delivery/v1/series

Status Mã Khi nào Retry? Backend làm gì
400 unsupported_version (flat) Phiên bản theo ngày không tồn tại hoặc đã ngừng. Không Gửi một phiên bản còn hỗ trợ.
401 4010 Không có header Authorization: Bearer. Không Sửa request.
401 4011 Key không tồn tại hoặc đã bị thu hồi. Không Kiểm tra key.
403 4030 Key thiếu metadata:read. Không Dùng key có scope đó.
403 4031 Tổ chức của bạn đang bị tạm ngưng. Không Liên hệ Wandura.
422 4220 limit không nằm trong 1–100, updated_since không phải giây epoch, hoặc cursor không phải giá trị endpoint này trả về. Không Sửa request; bắt đầu lại từ checkpoint gần nhất.
429 rate_limited (flat) Đã chạm ngưỡng catalog (dùng chung với catalog). Sau Retry-After Chờ; đồng bộ thưa hơn.
503 5030 Danh sách tạm thời không khả dụng. Backoff Retry; giữ checkpoint.
503 5031 Wandura chưa kiểm được key kịp lúc. Backoff Retry. Đừng xoay key.

Lấy metadata một bộ phim

GET /api/delivery/v1/series/{code}

Status Mã Khi nào Retry? Backend làm gì
400 unsupported_version (flat) Phiên bản theo ngày không tồn tại hoặc đã ngừng. Không Gửi một phiên bản còn hỗ trợ.
401 4010 Không có header Authorization: Bearer. Không Sửa request.
401 4011 Key không tồn tại hoặc đã bị thu hồi. Không Kiểm tra key.
403 4030 Key thiếu metadata:read. Không Dùng key có scope đó.
403 4031 Tổ chức của bạn đang bị tạm ngưng. Không Liên hệ Wandura.
404 4040 Không có bộ này, hoặc tổ chức của bạn không được stream nó (cố ý trả cùng một câu). Không Ngừng hiển thị bộ đó; xem lại danh sách.
429 rate_limited (flat) Đã chạm ngưỡng catalog (dùng chung với catalog). Sau Retry-After Chờ.
503 5030 Bộ phim tạm thời không khả dụng. Backoff Retry.
503 5031 Wandura chưa kiểm được key kịp lúc. Backoff Retry.

Playback

POST /api/delivery/v1/playback. Trong một lô, các dòng cấp request trả lời cho cả request; các dòng cấp vé nằm trong items[], mỗi phần tử có status riêng (và retry_after thay cho header).

Cả request

Status Mã Khi nào Retry? App hiển thị Backend làm gì
400 không có Body không phải JSON, hoặc không có episode_id cũng không có film_ref kèm episode_no dạng số. Không Hỏng Sửa request.
400 invalid_request Chỉ có một trong hai union_info và drm_kek, hoặc lô sai định dạng. Không Hỏng Sửa request.
400 invalid_device_info Một giá trị thiết bị trông như rỗng, ví dụ "(null)", hoặc ngắn hơn 8 ký tự. fields nêu tên giá trị đó. Không Hỏng Sửa cách app đọc giá trị từ Player SDK. Báo động.
400 unsupported_version Phiên bản theo ngày không tồn tại hoặc đã ngừng. Không Hỏng Xem Chuyển phiên bản.
401 không có Thiếu header, hoặc key không tồn tại hay đã bị thu hồi. Không Hỏng Kiểm tra key. Báo động.
403 không có Key thiếu playback. Không Hỏng Dùng một playback key.
429 rate_limited Đã chạm ngưỡng playback với mọi phần tử. Kèm "reason": "prefetch_shed": prefetch đang tạm dừng vì gần chạm ngưỡng. Sau Retry-After Bận (play); không hiện gì (prefetch) Retry các lượt play; bỏ các prefetch. Xem Rate limit.
503 service_unavailable Wandura chưa kiểm được key kịp lúc. Sau Retry-After Bận Retry. Đừng xoay key.
500 không có (rare) Lỗi không lường trước. Backoff Bận Retry một lần; báo lại kèm thời điểm.

Từng vé (ở cấp ngoài cùng khi xin một tập, hoặc một phần tử của lô)

Status Mã Khi nào Retry? App hiển thị Backend làm gì
403 not_entitled Lúc này tổ chức của bạn không được stream phim này. reason cho biết lý do (bảng bên dưới). Không Không khả dụng Ghi log reason. Ngừng bán phim khi lần đồng bộ catalog kế tiếp xác nhận phim đã không còn.
404 not_ready Tập hoặc phim không tồn tại, chưa publish hoặc chưa sẵn sàng. Không Chưa có Làm mới catalog.
409 sdk_required Tập đã mã hoá mà không có giá trị thiết bị. Không Hỏng Gửi union_info và drm_kek. Báo động.
429 rate_limited Phần tử này không được nhận (chỉ trong lô). reason prefetch_shed với prefetch bị tạm dừng. Sau retry_after Không hiện gì với prefetch Chỉ retry phần tử này.
502 không có Không chuẩn bị được stream, hoặc không ký được play token. Backoff Bận Retry, rồi báo lại.
503 not_ready Lúc này chưa có phiên bản phát được của tập. Không có Retry-After. Không phải bây giờ Chưa có Thử lại sau (lượt phát hoặc lần đồng bộ kế tiếp).
503 service_unavailable Nhà cung cấp video chưa trả lời kịp (The video provider did not answer in time — retry). Sau Retry-After (2 giây) Bận Retry. Tập phim không hề bị thiếu.
503 service_unavailable Lúc này chưa cấp được vé (Could not issue this grant right now — retry). Sau Retry-After Bận Retry.

Đừng làm việc không đảo ngược được chỉ vì một câu trả lời. Trước khi ngừng bán phim hoặc hoàn tiền cho người xem vì not_entitled hay not_ready, hãy xác nhận bằng lần đồng bộ catalog kế tiếp: phim bị rút sẽ biến mất khỏi catalog.

Nếu trong lúc cấp vé Wandura chưa kiểm được giấy phép hoặc tập kịp lúc, Wandura trả 503 service_unavailable (Could not check the licence or episode right now — retry) kèm Retry-After, không bao giờ trả 404 hay 403. Cứ tiếp tục bán, và retry.

Các reason của not_entitled

Ghi log reason và trích dẫn khi liên hệ hỗ trợ, nhưng hiển thị cùng một màn hình cho mọi lý do: có thể có lý do mới được thêm vào.

reason Ý nghĩa
org_suspended Quyền truy cập của tổ chức bạn đang bị tạm ngưng.
entitlement_not_found Tổ chức của bạn không có giấy phép cho phim này.
entitlement_suspended Giấy phép của bạn cho phim này đang bị tạm ngưng.
streaming_disabled Giấy phép của bạn cho phim này không gồm quyền streaming.
outside_window Hôm nay (UTC) nằm ngoài khung thời gian của giấy phép.

Cấu hình

GET /api/delivery/v1/config

Status Mã Khi nào Retry? Backend làm gì
400 unsupported_version Phiên bản theo ngày không tồn tại hoặc đã ngừng. Không Gửi một phiên bản còn hỗ trợ.
401 không có Thiếu header, hoặc key không tồn tại hay đã bị thu hồi. Không Kiểm tra key.
403 org_suspended (in error) Tổ chức của bạn đang bị tạm ngưng. Không Liên hệ Wandura.
429 rate_limited Đã chạm ngưỡng cấu hình. Sau Retry-After Đọc thưa hơn: lúc khởi động hoặc vài giờ một lần.
503 service_unavailable Wandura chưa kiểm được key kịp lúc. Sau Retry-After Retry; giữ cấu hình đang có.
503 service_unavailable Wandura chưa đọc được cấu hình của bạn kịp lúc (Could not read your configuration in time — retry). Sau Retry-After Retry; giữ cấu hình đang có.

Liệt kê creative

GET /api/delivery/v1/creatives

Status Mã Khi nào Retry? Backend làm gì
400 unsupported_version (flat) Phiên bản theo ngày không tồn tại hoặc đã ngừng. Không Gửi một phiên bản còn hỗ trợ.
401 4010 Không có header Authorization: Bearer. Không Sửa request.
401 4011 Key không tồn tại hoặc đã bị thu hồi. Không Kiểm tra key.
403 4030 Key thiếu creatives:export. Không Dùng key có scope đó.
403 4031 Tổ chức của bạn đang bị tạm ngưng. Không Liên hệ Wandura.
422 4220 limit không nằm trong 1–100 (limit= rỗng được tính là 0). Không Sửa request.
422 4221 updated_since không phải giây epoch. Không Sửa request.
422 4222 cursor không hợp lệ. Không Bắt đầu lại từ checkpoint gần nhất.
429 rate_limited (flat) Đã chạm ngưỡng creatives. Sau Retry-After Chờ; đồng bộ thưa hơn.
503 5030 Feed tạm thời không khả dụng. Backoff Retry; giữ checkpoint.
503 5031 Wandura chưa kiểm được key kịp lúc. Backoff Retry. Đừng xoay key.

Lấy một creative

GET /api/delivery/v1/creatives/{id}

Status Mã Khi nào Retry? Backend làm gì
400 unsupported_version (flat) Phiên bản theo ngày không tồn tại hoặc đã ngừng. Không Gửi một phiên bản còn hỗ trợ.
401 4010 Không có header Authorization: Bearer. Không Sửa request.
401 4011 Key không tồn tại hoặc đã bị thu hồi. Không Kiểm tra key.
403 4030 Key thiếu creatives:export. Không Dùng key có scope đó.
403 4031 Tổ chức của bạn đang bị tạm ngưng. Không Liên hệ Wandura.
404 4040 Không có creative đã duyệt nào với ID này cho tổ chức của bạn (cũng vậy khi ID không phải UUID). Không Gỡ nó khỏi tập đang dùng của bạn.
429 rate_limited (flat) Đã chạm ngưỡng creatives (dùng chung với endpoint danh sách). Sau Retry-After Chờ.
503 5030 Feed tạm thời không khả dụng. Backoff Retry.
503 5031 Wandura chưa kiểm được key kịp lúc. Backoff Retry.

Liệt kê video mở

GET /api/delivery/v1/videos

Status Mã Khi nào Retry? Backend làm gì
400 không có cursor không phải token do endpoint này cấp, hoặc limit không nằm trong 1–200. Không Sửa request; quét lại từ đầu.
400 unsupported_version Phiên bản theo ngày không tồn tại hoặc đã ngừng. Không Gửi một phiên bản còn hỗ trợ.
401 không có Thiếu header, hoặc key không tồn tại hay đã bị thu hồi. Không Kiểm tra key.
403 không có Key thiếu videos:read. Không Dùng key video mở của app.
403 app_not_registered (in error) Key không gắn với app nào. Không Đăng ký app; dùng key của app đó.
403 org_suspended (in error) Tổ chức của bạn đang bị tạm ngưng. Không Liên hệ Wandura.
404 collection_not_found (in error) Không tồn tại, chưa publish hoặc không được cấp cho bạn. Không Kiểm tra mã bộ sưu tập.
429 rate_limited Đã chạm ngưỡng danh sách. Sau Retry-After Chờ; cache danh sách.
500 không có Không đọc được danh sách. Backoff Retry; tiếp tục phục vụ danh sách cũ.
503 service_unavailable Wandura chưa kiểm được key kịp lúc. Sau Retry-After Retry.

Lấy một video mở

GET /api/delivery/v1/videos/{id}

Status Mã Khi nào Retry? Backend làm gì
400 không có id không phải UUID. Không Dùng id lấy từ danh sách.
400 unsupported_version Phiên bản theo ngày không tồn tại hoặc đã ngừng. Không Gửi một phiên bản còn hỗ trợ.
401 không có Thiếu header, hoặc key không tồn tại hay đã bị thu hồi. Không Kiểm tra key.
403 không có Key thiếu videos:read. Không Dùng key video mở của app.
403 app_not_registered (in error) Key không gắn với app nào. Không Đăng ký app.
403 org_suspended (in error) Tổ chức của bạn đang bị tạm ngưng. Không Liên hệ Wandura.
404 video_not_found (in error) Không tồn tại, không được cấp, chưa publish, đã lưu trữ hoặc chưa phát được. Không Bỏ nó khỏi danh sách của bạn.
429 rate_limited Đã chạm ngưỡng một video (bộ đếm riêng). Sau Retry-After Chờ; ưu tiên dùng danh sách đã cache.
500 không có Không đọc được video. Backoff Retry.
503 service_unavailable Wandura chưa kiểm được key kịp lúc. Sau Retry-After Retry.

Cập nhật 05/10/2026 · Lịch sử thay đổi (9)

↑↓ chọnEnter mởEsc đóng

Gửi góp ý

Góp ý được gửi thẳng tới đội Wandura, kèm địa chỉ trang này.

0 / 4000