Skip to content
Translated page. The English version is the source of truth.

API ตรวจสอบสถานะตามเวลา (Time Status API)

รับข้อมูลสถานะสำหรับที่อยู่ใน Host Mode — ทั้งหมดในบัญชีของคุณ หรือเฉพาะที่อยู่เดียว

มีสอง endpoint:

  1. POST /apiv2/time/status — สถานะสำหรับทุกที่อยู่ของคุณ (พร้อมการแบ่งหน้าและสรุปข้อมูลระดับบัญชีแบบไม่บังคับ)
  2. GET /apiv2/time/status/{address} — สถานะสำหรับหนึ่งที่อยู่ที่ระบุเจาะจง

POST /apiv2/time/status

URL ของ Endpoint

POST https://netts.io/apiv2/time/status

การยืนยันตัวตน

ระบุ API key ของคุณในเนื้อหาคำขอ (api_key) หรือในส่วนหัว X-API-KEY โดย IP ของคำขอต้องอยู่ใน whitelist ที่กำหนดค่าไว้สำหรับ API key ของคุณ

เนื้อหาคำขอ

json
{
    "api_key": "your_api_key",
    "page": 1,
    "page_size": 50
}
พารามิเตอร์ชนิดจำเป็นคำอธิบาย
api_keystringใช่API key (หรือส่วนหัว X-API-KEY)
pageintegerไม่หมายเลขหน้า, ≥ 1 จำเป็นต้องใช้คู่กับ page_size
page_sizeintegerไม่จำนวนที่อยู่ต่อหน้า, 1–100 จำเป็นต้องใช้คู่กับ page

การแบ่งหน้า: หากระบุทั้ง page และ page_size ผลลัพธ์จะถูกแบ่งหน้าและมีออบเจกต์ pagination แนบมาด้วย หากไม่มีพารามิเตอร์เหล่านี้ ระบบจะส่งคืนที่อยู่ทั้งหมด (สูงสุด 1000 รายการ) โดยเรียงลำดับตามเวลาที่สร้าง (ใหม่ที่สุดขึ้นก่อน)

ตัวอย่างคำขอ

cURL (ทุกที่อยู่):

bash
curl -X POST https://netts.io/apiv2/time/status \
  -H "Content-Type: application/json" \
  -d '{ "api_key": "YOUR_API_KEY_HERE" }'

cURL (แบบแบ่งหน้า):

bash
curl -X POST https://netts.io/apiv2/time/status \
  -H "Content-Type: application/json" \
  -d '{ "api_key": "YOUR_API_KEY_HERE", "page": 1, "page_size": 50 }'

Python:

python
import requests

resp = requests.post(
    "https://netts.io/apiv2/time/status",
    json={"api_key": "YOUR_API_KEY_HERE"},  # add "page"/"page_size" to paginate
    timeout=30,
)
result = resp.json()

if result["code"] == 0:
    for a in result["data"]["addresses"]:
        # cycles_remaining is None in infinity mode — no limit to count down
        left = "unlimited" if a["cycles_remaining"] is None else f"{a['cycles_remaining']} left"
        print(a["address"], a["mode"], a["status"], left,
              f"spent {a['total_spent']} TRX")
else:
    print("Error:", result["msg"])

Node.js:

javascript
const axios = require('axios');

axios.post('https://netts.io/apiv2/time/status', { api_key: 'YOUR_API_KEY_HERE' })
    .then(({ data: result }) => {
        if (result.code === 0) {
            result.data.addresses.forEach(a => {
                // cycles_remaining is null in infinity mode — no limit to count down
                const left = a.cycles_remaining === null ? 'unlimited' : `${a.cycles_remaining} left`;
                console.log(a.address, a.mode, a.status, left, `spent ${a.total_spent} TRX`);
            });
        } else {
            console.error('Error:', result.msg);
        }
    })
    .catch(err => console.error('Request failed:', err.response?.data || err.message));

การตอบกลับ

json
{
    "code": 0,
    "msg": "Status retrieved successfully",
    "data": {
        "summary": {
            "total_addresses": 3,
            "active_addresses": 2,
            "infinity_mode_count": 1,
            "total_cycles_ordered": 25,
            "total_open_orders": 3
        },
        "order_statistics": {
            "total_orders": 12,
            "open_orders": 3,
            "closed_orders": 9,
            "total_cycles_in_open_orders": 25,
            "total_delegations": 340,
            "total_amount_spent": 1502.4471
        },
        "addresses": [
            {
                "address": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
                "status": "active",
                "mode": "normal",
                "cycles_ordered": 25,
                "cycle_set": 25,
                "cycles_completed": 10,
                "cycles_remaining": 15,
                "cycles_total_lifetime": 214,
                "current_cycle_no": 3,
                "open_orders": 1,
                "total_spent": 962.1184,
                "bandwidth_delegated": true,
                "created_at": "2026-07-08T12:00:00.000000",
                "updated_at": "2026-07-09T10:00:00.000000"
            },
            {
                "address": "TYn8Y3khEsLJW2ChVWFMSMeRDow6KcbMTF",
                "status": "active",
                "mode": "infinity",
                "cycles_ordered": null,
                "cycle_set": 0,
                "cycles_completed": 83,
                "cycles_remaining": null,
                "cycles_total_lifetime": 115,
                "current_cycle_no": 5,
                "open_orders": 1,
                "total_spent": 519.1234,
                "bandwidth_delegated": true,
                "created_at": "2026-07-08T08:00:00.000000",
                "updated_at": "2026-07-09T09:30:00.000000"
            }
        ],
        "timestamp": "2026-07-09T12:34:50.123456"
    }
}

เมื่อมีการแบ่งหน้า ฟิลด์ data จะประกอบด้วย:

json
"pagination": {
    "page": 1,
    "page_size": 50,
    "total_items": 150,
    "total_pages": 3,
    "has_next": true,
    "has_prev": false
}

ฟิลด์ใน summary

ฟิลด์คำอธิบาย
total_addressesจำนวนที่อยู่ทั้งหมดภายใต้บัญชีของคุณ
active_addressesที่อยู่ที่กำลังใช้งานอยู่ในปัจจุบัน
infinity_mode_countที่อยู่ที่เปิดใช้งานซึ่งทำงานใน infinity mode
total_cycles_orderedผลรวมของรอบที่สั่งซื้อในคำสั่งซื้อที่ยังเปิดอยู่ (ไม่รวมคำสั่งซื้อ infinity)
total_open_ordersจำนวนคำสั่งซื้อที่ยังเปิดอยู่จากทุกที่อยู่

ฟิลด์ใน order_statistics

ฟิลด์คำอธิบาย
total_ordersคำสั่งซื้อทั้งหมดที่เคยสร้างขึ้น
open_ordersคำสั่งซื้อที่กำลังเปิดอยู่ในปัจจุบัน
closed_ordersคำสั่งซื้อที่ปิดไปแล้ว
total_cycles_in_open_ordersรอบทั้งหมดในคำสั่งซื้อที่ยังเปิดอยู่ (ไม่รวม infinity)
total_delegationsการมอบสิทธิ์ที่เกิดขึ้นจริงจากทุกที่อยู่ของคุณ
total_amount_spentยอดที่ถูกเรียกเก็บจริง ในหน่วย TRX — ยอดรวมที่หักออกจากยอดคงเหลือของคุณจริง ๆ

ฟิลด์ในออบเจกต์ Address

ฟิลด์ชนิดคำอธิบาย
addressstringที่อยู่ TRON
statusstring"active" หรือ "inactive"
modestring"normal", "infinity", หรือ "off" (เมื่อไม่ได้ใช้งาน)
cycles_orderedinteger | nullรอบที่สั่งซื้อในคำสั่งซื้อที่ยังเปิดอยู่ เป็น null ใน infinity mode
cycle_setintegerค่า cycle_set ที่บันทึกไว้สำหรับที่อยู่
cycles_completedintegerรอบที่ใช้ไปนับตั้งแต่ที่อยู่เริ่มทำงานครั้งล่าสุด รีเซ็ตเมื่อคุณหยุดโหมดหรือเมื่อรอบที่สั่งซื้อหมดลง
cycles_remaininginteger | nullcycles_ordered − cycles_completed เป็น null ใน infinity mode
cycles_total_lifetimeintegerการมอบสิทธิ์ทั้งหมดสำหรับที่อยู่นี้ตลอดประวัติการใช้งาน ไม่มีการรีเซ็ต
current_cycle_nointeger | nullลำดับของการมอบสิทธิ์ปัจจุบันนับตั้งแต่ที่อยู่เริ่มทำงานครั้งล่าสุด เป็น null เมื่อไม่มีการมอบสิทธิ์ที่กำลังทำงาน
open_ordersintegerจำนวนคำสั่งซื้อที่ยังเปิดอยู่สำหรับที่อยู่นี้
total_spentnumberยอดที่ถูกเรียกเก็บจริงสำหรับที่อยู่นี้ ในหน่วย TRX
bandwidth_delegatedbooleanแสดงว่ามีการมอบสิทธิ์ Bandwidth อยู่หรือไม่ Bandwidth ให้บริการฟรีและรวมอยู่ในราคารอบแล้ว
created_atstringISO timestamp เมื่อตอนที่เพิ่ม
updated_atstringISO timestamp ของการอัปเดตล่าสุด

Infinity mode. cycles_ordered และ cycles_remaining จะเป็น null ไม่ใช่ 0 — เนื่องจากไม่มีขีดจำกัดให้นับถอยหลัง ให้ถือว่า null คือ "ไม่จำกัด" และอย่าตีความว่าเป็น "ไม่มีรอบเหลืออยู่" โดยที่ cycles_completed ยังคงรายงานตัวเลขจริงตามปกติ

ตัวนับรอบสามตัว กับสามความหมายที่ต่างกัน cycles_completed นับเฉพาะตั้งแต่ที่อยู่เริ่มทำงานครั้งล่าสุด, cycles_total_lifetime นับตลอดประวัติการใช้งานทั้งหมด และ current_cycle_no คือลำดับของการมอบสิทธิ์ปัจจุบัน ค่าเหล่านี้อาจแตกต่างกันได้ตามปกติ — สำหรับที่อยู่หนึ่ง คุณอาจเห็นค่า 83, 115 และ 5 ในเวลาเดียวกัน

ข้อผิดพลาด

ข้อผิดพลาดทั้งหมดจะใช้ code = -1:

msgสาเหตุ
API key required in body or X-API-KEY headerไม่ได้ระบุ API key
Invalid API key or IP not in whitelistการยืนยันตัวตนล้มเหลว
Page number must be >= 1page มีค่าน้อยกว่า 1
Page size must be >= 1page_size มีค่าน้อยกว่า 1
Page size must be <= 100page_size มีค่ามากกว่า 100
Database error getting statusข้อผิดพลาดชั่วคราวทางฝั่งเซิร์ฟเวอร์ — ให้ลองใหม่อีกครั้ง
Internal server errorข้อผิดพลาดที่ไม่คาดคิด — ให้ลองใหม่อีกครั้งหรือติดต่อฝ่ายสนับสนุน

GET /apiv2/time/status/

สถานะสำหรับที่อยู่รายการเดียว

URL ของ Endpoint

GET https://netts.io/apiv2/time/status/{address}

การยืนยันตัวตน

ส่ง API key ของคุณในส่วนหัว X-API-KEY โดย IP ของคำขอต้องอยู่ใน whitelist

ตัวอย่างคำขอ

bash
curl -X GET "https://netts.io/apiv2/time/status/TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE" \
  -H "X-API-KEY: YOUR_API_KEY_HERE"
python
import requests

address = "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"
resp = requests.get(
    f"https://netts.io/apiv2/time/status/{address}",
    headers={"X-API-KEY": "YOUR_API_KEY_HERE"},
    timeout=30,
)
print(resp.json())

การตอบกลับ

json
{
    "code": 0,
    "msg": "Address status retrieved successfully",
    "data": {
        "address_info": {
            "address": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
            "status": "active",
            "mode": "normal",
            "cycles_ordered": 25,
            "cycle_set": 25,
            "cycles_completed": 10,
            "cycles_remaining": 15,
            "cycles_total_lifetime": 214,
            "current_cycle_no": 3,
            "open_orders": 1,
            "total_spent": 962.1184,
            "bandwidth_delegated": true,
            "created_at": "2026-07-08T12:00:00.000000",
            "updated_at": "2026-07-09T10:00:00.000000"
        },
        "timestamp": "2026-07-09T12:34:50.123456"
    }
}

address_info ใช้ฟิลด์เดียวกันกับออบเจกต์ที่อยู่ด้านบน

ข้อผิดพลาด

code = -1 ตัวอย่างเช่น:

msgสาเหตุ
API key required in X-API-KEY headerขาดส่วนหัวที่จำเป็น
Invalid API key or IP not in whitelistการยืนยันตัวตนล้มเหลว
Address not found or doesn't belong to userไม่พบที่อยู่หรือไม่ใช่ที่อยู่ของบัญชีนี้
Database error getting address statusข้อผิดพลาดชั่วคราวทางฝั่งเซิร์ฟเวอร์ — ให้ลองใหม่อีกครั้ง
Internal server errorข้อผิดพลาดที่ไม่คาดคิด — ให้ลองใหม่อีกครั้งหรือติดต่อฝ่ายสนับสนุน

รหัสสถานะ HTTP

ทั้งสอง endpoint จะส่งคืนข้อผิดพลาดด้วย HTTP 200 พร้อมค่า code ที่เป็นลบ — ให้ตรวจสอบที่ code ไม่ใช่สถานะ HTTP โดยเนื้อหาข้อผิดพลาดจะมี "data": null รวมอยู่ด้วยเสมอ

ข้อผิดพลาดบางประการจะถูกส่งคืนก่อนที่คำขอจะไปถึง endpoint ซึ่งจะใช้สถานะที่ไม่ใช่ 200 และมีรูปแบบเนื้อหาที่แตกต่างกัน:

HTTPเนื้อหาสาเหตุ
402{"detail": {"code": 1004, "msg": "Insufficient funds. Minimum balance is 4 TRX. Please top up your account."}}ยอดเงินคงเหลือในบัญชีต่ำเกินไป
403{"detail": {"code": 1005, "msg": "API key is blocked. Contact support."}}API key ถูกระงับการใช้งาน — โปรดติดต่อฝ่ายสนับสนุน
422{"detail": [ … ]}เฉพาะ POST เท่านั้น — การตรวจสอบความถูกต้องของเนื้อหาคำขอล้มเหลว: ฟิลด์มีชนิดข้อมูลไม่ถูกต้อง หรือมีการส่ง page/page_size โดยไม่มี api_key โปรดทราบว่าจะไม่มีฟิลด์ code ในการตอบกลับนี้

Endpoint ที่เกี่ยวข้อง

หมายเหตุ

  • endpoint สำหรับตรวจสอบสถานะเป็นแบบอ่านอย่างเดียว (read-only)
  • จะส่งคืนเฉพาะที่อยู่ที่เป็นของบัญชีของคุณเท่านั้น
  • การประทับเวลา (Timestamps) เป็นสตริงรูปแบบ ISO 8601