Tài liệu API

Tài liệu API

Gọi mọi tính năng AI qua API Key, tính phí theo用量, tích hợp chỉ với vài dòng code.

Xác thực

Mọi request API phải bao gồm header Authorization.

Authorization: Bearer sk-xxxxxxxxxxxxxxxx

Lấy API Key từ trang "API Key" trong bảng điều khiển. Một key cho mỗi tài khoản. Để đặt lại, dùng bảng điều khiển; key cũ lập tức bị vô hiệu hóa sau khi đặt lại.

Tạo tác vụ

POST https://nsfwrouter.xyz/api/v1/tasks/create

Gửi tác vụ AI đến cụm GPU để thực thi. Tác vụ xử lý bất đồng bộ, trả về ID. Lấy kết quả qua API truy vấn hoặc Webhook.

Tham số request
Tham số Loại Bắt buộc Mô tả
tool_idintID công cụ, lấy từ danh sách công cụ
paramsobjectTham số tác vụ, JSON object, trường tùy công cụ
webhook_urlstringKhôngURL callback khi tác vụ hoàn thành
priorityintKhôngĐộ ưu tiên tác vụ 1-10, mặc định 5
idempotency_keystringKhôngKey idempotency, chống gửi trùng
execution_optionsobjectKhôngTùy chọn thực thi, JSON object
Ví dụ request
curl -X POST https://nsfwrouter.xyz/api/v1/tasks/create \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "tool_id": 1,
    "params": {
      "image": "https://example.com/photo.jpg",
      "prompt": "a beautiful landscape"
    },
    "webhook_url": "https://your-server.com/webhook"
  }'
Ví dụ response
{
  "code": 0,
  "message": "success",
  "data": {
    "task": {
      "id": 123,
      "status": 0,
      "consume_coins": 5
    },
    "message": "task_submitted"
  }
}

Số dư tài khoản được kiểm tra trước khi gọi. Số dư không đủ trả về lỗi insufficient_coins. Coin bị trừ ngay khi tác vụ gửi thành công.

Truy vấn chi tiết tác vụ

GET https://nsfwrouter.xyz/api/v1/tasks/query

Truy vấn chi tiết và trạng thái tác vụ qua ID. Khi tác vụ đang xử lý, trạng thái mới nhất được lấy từ cụm GPU. Truy vấn lặp lại trong 10 giây trả về kết quả cache từ database, không lặp lại request remote.

Tham số truy vấn
Tham số Loại Bắt buộc Mô tả
idintID tác vụ
Ví dụ response
{
  "code": 0,
  "message": "success",
  "data": {
    "task": {
      "id": 123,
      "status": 1,
      "task_output_json": [
        {
          "type": "image",
          "url": "https://cdn.example.com/outputs/abc123.png",
          "file_name": "abc123.png",
          "file_size": 1024000,
          "mime_type": "image/png",
          "width": 1024,
          "height": 1024
        }
      ],
      "consume_coins": 5,
      "created_at": 1718200000,
      "completed_at": 1718200015
    }
  }
}
Giá trị trạng thái tác vụ
status Ý nghĩa
0Đang xử lý
1Hoàn thành
-1Đã hủy
-2Thất bại

Danh sách tác vụ

GET https://nsfwrouter.xyz/api/v1/tasks

Truy vấn phân trang danh sách tác vụ của tài khoản hiện tại, hỗ trợ lọc theo công cụ, trạng thái và khoảng thời gian.

Tham số truy vấn
Tham số Loại Bắt buộc Mô tả
pageintKhôngSố trang, mặc định 1
page_sizeintKhôngKích thước trang, mặc định 20, tối đa 50
tool_idintKhôngLọc theo công cụ
statusintKhôngLọc theo trạng thái (0/1/-1/-2)
daysintKhôngKhoảng thời gian truy vấn (ngày), mặc định 30
Ví dụ response
{
  "code": 0,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 123,
        "tool_id": 1,
        "status": 1,
        "task_output_json": [
          {
            "type": "image",
            "url": "https://cdn.example.com/outputs/abc123.png",
            "file_name": "abc123.png",
            "file_size": 1024000,
            "mime_type": "image/png",
            "width": 1024,
            "height": 1024
          }
        ],
        "error": null,
        "consume_coins": 5,
        "created_at": 1718200000,
        "completed_at": 1718200015
      },
      {
        "id": 122,
        "tool_id": 3,
        "status": 0,
        "task_output_json": [],
        "error": null,
        "consume_coins": 10,
        "created_at": 1718199000,
        "completed_at": 0
      }
    ],
    "page": 1,
    "page_size": 20
  }
}
Mô tả trường task_output_json item
Trường Loại Mô tả
typestringLoại kết quả: image hoặc video
urlstringURL CDN file kết quả
file_namestringTên file
file_sizeintKích thước file (byte)
mime_typestringLoại MIME, vd: image/png, video/mp4
widthintChiều rộng (pixel)
heightintChiều cao (pixel)

Số dư tài khoản

GET https://nsfwrouter.xyz/api/v1/account/balance

Truy vấn số dư coin, tổng nạp và tổng tiêu của tài khoản hiện tại.

Ví dụ response
{
  "code": 0,
  "message": "success",
  "data": {
    "remain_coins": 5000,
    "total_coins": 10000,
    "used_coins": 5000
  }
}

Webhook callback

Nếu webhook_url được cung cấp khi tạo tác vụ, POST request sẽ được gửi đến URL đó khi tác vụ hoàn thành, thất bại hoặc bị hủy. Body request là JSON.

Header request callback
Content-Type: application/json
Accept: application/json
User-Agent: OpenAPI-Webhook/1.0
Body request callback
{
  "event": "task.finished",
  "task": {
    "id": 123,
    "status": 1,
    "task_output_json": [
      {
        "type": "image",
        "url": "https://cdn.example.com/outputs/abc123.png",
        "file_name": "abc123.png",
        "file_size": 1024000,
        "mime_type": "image/png",
        "width": 1024,
        "height": 1024
      }
    ],
    "consume_coins": 5,
    "created_at": 1718200000,
    "completed_at": 1718200015
  }
}

Server của bạn phải trả về HTTP 2xx để xác nhận nhận thành công. Nếu trả non-2xx hoặc timeout (10 giây), hệ thống tự động thử lại tối đa 5 lần với chiến lược exponential backoff (60s → 120s → 240s → 480s → 960s).

Mã lỗi

Mọi response lỗi dùng định dạng thống nhất: {"code": mã_lỗi, "message": "định_danh_lỗi", "data": {}}

Mã lỗi message Mô tả
20001api_key_requiredKhông cung cấp API Key
20001invalid_api_keyAPI Key không hợp lệ
20001ip_not_allowedIP không trong whitelist
20001permission_deniedKhông có quyền truy cập
30001tool_not_foundKhông tìm thấy công cụ
30001task_not_foundKhông tìm thấy tác vụ
30001insufficient_coinsSố dư coin không đủ
30001task_submit_failedGửi tác vụ thất bại
30001task_query_failedTruy vấn tác vụ thất bại
30001task_already_existsTác vụ đã tồn tại (idempotency hit)
40001tool_id_requiredThiếu tham số tool_id
40001param_errorLỗi tham số
40001webhook_url_invalidĐịnh dạng webhook_url không hợp lệ
40001params_must_be_json_object_or_arrayparams phải là object hoặc array JSON
40001execution_options_must_be_json_object_or_arrayexecution_options phải là object hoặc array JSON
Phạm vi mã lỗi
Phạm vi Danh mục
1xxxxLỗi hệ thống
2xxxxLỗi xác thực
3xxxxLỗi logic nghiệp vụ
4xxxxLỗi tham số
5xxxxLỗi phụ thuộc bên ngoài