QISOFT

API — Ký file

Tài khoản
Số dư
₫0
API Token

Khuyến nghị dùng Authorization: Bearer <token>. Nếu lộ token, bấm “Đổi token”.

Tổng quan

  • Kích thước tối đa mỗi tệp: 100 MB
  • Định dạng hỗ trợ: .cab, .cat, .dll, .efi, .exe, .js, .msi, .msp, .mst, .msu, .ocx, .ps1, .scr, .sys, .vbs
  • Đơn giá: ₫399,000 / tệp hợp lệ
  • Luồng mới : auto (tải lên → tự ký nếu đủ tiền → trả URL tải)

Ký nhanh 1 bước (Auto)

Endpoint: POST https://qisoft.org/api/sign/auto

cURL

curl -s -X POST "https://qisoft.org/api/sign/auto" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -F "file=@C:/path/to/app.exe"

# Response mẫu
{
  "ok": true,
  "job_id": 40,
  "download_url": "https://qisoft.org/api/sign/result/40",
  "filename": "app-signed.exe",
  "size_bytes": 1234567,
  "balance_vnd": 49028560
}

# Tải file đã ký
auth="Authorization: Bearer YOUR_TOKEN"
curl -s -OJ "https://qisoft.org/api/sign/result/40" -H "$auth"

Python

import requests
import os

BASE = "https://qisoft.org"
TOKEN = "YOUR_TOKEN"
HEADERS = {"X-API-Key": TOKEN}

# 🔹 Đường dẫn file EXE cần ký
EXE_PATH = r"C:\path\to\app.exe"

# Kiểm tra file tồn tại
if not os.path.exists(EXE_PATH):
    raise FileNotFoundError(f"Không tìm thấy file: {EXE_PATH}")

# 1) Upload & auto-sign
with open(EXE_PATH, "rb") as f:
    r = requests.post(f"{BASE}/api/sign/auto", headers=HEADERS,
                      files={"file": (os.path.basename(EXE_PATH), f, "application/octet-stream")},
                      timeout=600)

data = r.json()
assert data.get("ok"), data
print("API:", data)

# 2) Download file đã ký
u = data["download_url"]
res = requests.get(u, headers=HEADERS, stream=True, timeout=600)
res.raise_for_status()
fn = res.headers.get("Content-Disposition"," ").split("filename=")[-1].strip('"') or data["filename"]
with open(fn, "wb") as out:
    for chunk in res.iter_content(262144):
        if chunk: out.write(chunk)
print("✅ Saved:", fn)

Lỗi thường gặp

  • 400 no_file / unsupported_extension / file_too_large: thiếu file, đuôi không hỗ trợ, vượt 100MB
  • 400 no_files / invalid_temp_id: thiếu/ sai temp_id[] ở luồng cũ
  • 402 insufficient_funds: số dư không đủ
  • 500 sign_failed: jsign/KMS/TSA lỗi (xem detail trong JSON)
Đang làm mới…