檢查 CDK
POST /api/check-cdk使用 CDK 與 ChatGPT Access Token 建立非同步 UPI 任務,透過輪詢或 SSE 取得進度,完成後讀取 Stripe UPI 付款連結。
https://upi.burstpro-ai.online
公開端點使用 /api
校驗 CDK、建立任務,最後使用任務讀取憑證查詢結果。
POST /api/check-cdkPOST /api/activateGET /api/tasks/{id}curl --request POST 'https://upi.burstpro-ai.online/api/activate' \
--header 'Content-Type: application/json' \
--data '{
"cdk": "BURSTUPI-XXXX-XXXX-XXXX-XXXX",
"access_token": "YOUR_CHATGPT_ACCESS_TOKEN"
}'
CDK 放在 JSON 請求內容中。成功任務消耗一次;失敗任務會釋放原先鎖定的次數。
建立任務後只會回傳一次 read_token。後續請放入 X-Task-Token 請求標頭。
/api/health確認服務、代理池、任務佇列及目前 worker 數量。
{
"ok": true,
"service": "burstpro-upi-public",
"workers": 32,
"queue_depth": 0,
"queue_max": 300,
"queue_ready": true,
"proxy_ready": true
}/api/check-cdk此操作不扣減額度。回傳總次數、已使用、鎖定中及剩餘次數。
cdkstring是BurstPro UPI CDK{"cdk":"BURSTUPI-XXXX-XXXX-XXXX-XXXX"}{
"ok": true,
"valid": true,
"max_uses": 999,
"used_count": 29,
"reserved_count": 2,
"remaining": 968
}/api/activate成功時回傳 HTTP 202,並原子鎖定一次 CDK 額度。請立即保存 task_id 與 read_token。
cdkstring是有效 CDKaccess_tokenstring / JSON是JWT、Bearer Token 或 Session JSONemailstring否Token 無法取得信箱時的備用值{
"ok": true,
"task_id": "upi_pub_0123456789abcdef",
"read_token": "SAVE_THIS_TOKEN",
"status": "queued",
"queue_position": 1,
"email": "user@example.com"
}/api/tasks/{task_id}建議每 2–5 秒輪詢一次。完成後的 result_url 即 Stripe UPI 付款連結。
curl 'https://upi.burstpro-ai.online/api/tasks/TASK_ID' \
--header 'X-Task-Token: READ_TOKEN'{
"ok": true,
"task": {
"task_id": "upi_pub_...",
"status": "completed",
"stage": "completed",
"progress": 100,
"attempt": 2,
"max_attempts": 6,
"result_url": "https://payments.stripe.com/...",
"expires_at": "2026-07-25T09:05:00Z",
"expired": false,
"can_regenerate": true
}
}/api/tasks/{task_id}/events先取得 60 秒有效的一次性 ticket,再使用 EventSource 訂閱。SSE 中斷時請回退到狀態輪詢。
POST /api/tasks/{id}/events-ticket
X-Task-Token: READ_TOKEN
{"events_url":"/api/tasks/{id}/events?ticket=..."}const stream = new EventSource(
base + ticket.events_url
)
stream.onmessage = event => {
console.log(JSON.parse(event.data).task)
}/api/tasks/{task_id}/regenerate任務結束後 30 分鐘內可沿用加密暫存的 Access Token,不必再次傳送。回應會提供新的 task_id 與 read_token。
curl --request POST 'https://upi.burstpro-ai.online/api/tasks/TASK_ID/regenerate' \
--header 'X-Task-Token: READ_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"cdk":"BURSTUPI-XXXX-XXXX-XXXX-XXXX"}'/api/qr只允許已完成且屬於該讀取憑證的任務。成功回傳 image/png。
curl --request POST 'https://upi.burstpro-ai.online/api/qr' \
--header 'X-Task-Token: READ_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"task_id":"TASK_ID"}' \
--output upi-qr.pngqueued 為排隊中,running 為處理中。只有 completed 會回傳有效的 result_url;詳細上游日誌不會透過公開 API 洩漏。
access_token_invalidAccess Token 或 Session JSON 格式不正確。
cdk_invalid / cdk_unavailableCDK 不存在、停用、到期或無可用次數。
task_not_found任務不存在,或 X-Task-Token 不正確。
active_task原任務仍在排隊或執行,不能重新生成。
credential_expired30 分鐘重新生成憑證已失效。
rate_limited / queue_full請求過於頻繁或佇列已滿。
service_unavailable / queue_failedUPI、代理或任務佇列暫時未就緒。
read_token 視為任務專用密碼;遺失後無法重新讀取該任務。completed 後應立即呈現付款連結與 QR Code。import time
import requests
base = "https://upi.burstpro-ai.online"
created = requests.post(f"{base}/api/activate", json={
"cdk": "BURSTUPI-XXXX-XXXX-XXXX-XXXX",
"access_token": "YOUR_CHATGPT_ACCESS_TOKEN",
}, timeout=30)
created.raise_for_status()
job = created.json()
headers = {"X-Task-Token": job["read_token"]}
while True:
response = requests.get(
f"{base}/api/tasks/{job['task_id']}",
headers=headers,
timeout=20,
)
response.raise_for_status()
task = response.json()["task"]
if task["status"] == "completed":
print(task["result_url"])
break
if task["status"] in {"failed", "cancelled"}:
raise RuntimeError(task["status"])
time.sleep(2)