Production API Gateway

Traffy Fondue Exchange API Specification

Base URL สำหรับเรียกใช้งาน Production Endpoints ทั้งหมด:

https://publicapi.traffy.in.th/exchange-api
ข้อกำหนดการใช้งานและข้อสงวนสิทธิ์ความรับผิดชอบ (Terms of Use & Legal Disclaimer)

ข้อตกลงขอบเขตความรับผิดชอบเกี่ยวกับเนื้อหา และข้อควรระวังการใช้งานข้อมูลจาก Exchange API

🏛️

Traffy Fondue เป็นเพียงแพลตฟอร์มผู้ให้บริการระบบเท่านั้น

แพลตฟอร์ม Traffy Fondue และผู้พัฒนาระบบ (สวทช.) ทำหน้าที่เป็นระบบเทคโนโลยีสารสนเทศตัวกลาง (Platform Service Provider) เพื่ออำนวยความสะดวกในการรับส่งและประสานงานข้อมูลระหว่างประชาชน หน่วยงานผู้รับผิดชอบ และผู้พัฒนาระบบภายนอกเท่านั้น มิได้มีฐานะเป็นผู้ผลิต สร้างสรรค์ ควบคุม ตรวจสอบ หรือรับรองความถูกต้องของเนื้อหา ข้อมูล ข้อความ ภาพถ่าย หรือพิกัดสถานที่ใดๆ ในระบบ

⚖️

ขอบเขตความรับผิดชอบต่อเนื้อหาทางกฎหมาย

ความรับผิดชอบตามกฎหมายทั้งหมดเกี่ยวกับข้อมูล ข้อความ รูปภาพ พิกัด หรือเอกสารแนบ จะตกอยู่แก่บุคคลและหน่วยงานดังต่อไปนี้โดยตรง:

  • เจ้าของเรื่องแจ้ง: รับผิดชอบต่อข้อเท็จจริง ข้อความ รูปภาพ/วีดีโอ/ไฟล์ ที่นำเข้าสู่ระบบ
  • เจ้าหน้าที่และหน่วยงานผู้รับผิดชอบ: รับผิดชอบต่อข้อความ รูปภาพ/วีดีโอ/ไฟล์ ที่ใช้อัปเดตสถานะการดำเนินงาน
  • ผู้นำข้อมูลไปใช้ต่อ: รับผิดชอบต่อการจัดเก็บ ประมวลผล และการนำข้อมูลไปใช้งานหรือเผยแพร่ต่อ

หากเกิดข้อพิพาท การละเมิดสิทธิ หรือการฟ้องร้องดำเนินคดีใดๆ ผู้พัฒนาและผู้ให้บริการแพลตฟอร์ม Traffy Fondue ขอปฏิเสธความรับผิด (Disclaimer of Liability) ในทุกกรณี

🚨

คำเตือนสำคัญสำหรับผู้ใช้งานผ่านระบบ Exchange API

ข้อมูลเรื่องแจ้ง รายละเอียด ข้อความ และรูปภาพที่ได้รับผ่าน Exchange API เป็น "ข้อมูลดิบ (Raw Data)" ที่ ไม่ผ่านการคัดกรองหรือเซนเซอร์ใดๆ (Uncensored)

⚠️ ข้อปฏิบัติที่ต้องระมัดระวังสูงสุด:
  • ระวังการเผยแพร่ข้อมูลออกสู่สาธารณะให้มากที่สุด: การดึงข้อมูลไปเพื่อวิเคราะห์ แสดงผล หรือพัฒนาบริการ ต้องกระทำด้วยความระมัดระวังรอบคอบ
  • ปฏิบัติตามกฎหมายคุ้มครองข้อมูลส่วนบุคคล (PDPA) อย่างเคร่งครัด: ข้อมูลดิบอาจมีข้อมูลส่วนบุคคล เช่น ภาพถ่ายใบหน้าบุคคล ป้ายทะเบียนรถ หมายเลขบัตรประชาชน เบอร์โทรศัพท์ หรือพิกัดบ้านพักอาศัย
  • ต้องทำ Data Masking / Redaction ก่อนเผยแพร่: หากมีการนำข้อมูลไปแสดงผลต่อสาธารณะ ต้องเบลอภาพ เซนเซอร์ หรือตัดทอนข้อมูลส่วนบุคคลออก มิฉะนั้นอาจมีความผิดตาม พ.ร.บ. คุ้มครองข้อมูลส่วนบุคคล และ พ.ร.บ. ว่าด้วยการกระทำความผิดเกี่ยวกับคอมพิวเตอร์
1

การยืนยันตัวตน (Authentication)

แลกเปลี่ยน Username และ Password ที่ได้รับจากทีมงานเพื่อรับ JWT Bearer Token

1. /get-auth ขอ JWT Bearer Token
POST https://publicapi.traffy.in.th/exchange-api/get-auth/v1 🔑 Auth: User / Pass

นำ user และ pass ที่ได้รับทาง Email มาแลกรับ JWT (JSON Web Token) เพื่อใช้เป็น Header Authorization: Bearer <token> ยืนยันตัวตนใน API อื่นๆ เกือบทั้งหมด

  • ห้ามเผยแพร่ user และ pass สู่สาธารณะเด็ดขาด เช่น ห้ามฝังไว้ในเว็บไซต์หรือ mobile app เพราะอาจถูก inspect หรือ sniffing ดูได้ — ให้ขอ token จาก server เท่านั้น
  • หาก credit_balance ลดลงเร็วผิดปกติ ให้รีบติดต่อทีมงาน Traffy ทันที ที่ LINE @fonduehelp เพื่อตรวจสอบและเปลี่ยนรหัสใหม่
  • JWT token ถูกตั้งเวลาให้หมดอายุ โปรดตรวจสอบจาก expire_timestamp ที่ได้รับมาพร้อมกับ token
Request Body (JSON)
ชื่อ คำอธิบาย ตัวอย่าง REQUIRED?
userstring ชื่อผู้ใช้งานของ account ที่ได้รับแจ้งในเอกสารการใช้งาน — ห้ามเผยแพร่สู่สาธารณะเด็ดขาด YOUR_USERNAME REQUIRED
passstring รหัสผ่านของ account ที่ได้รับแจ้งในเอกสารการใช้งาน — ห้ามเผยแพร่สู่สาธารณะเด็ดขาด YOUR_PASSWORD REQUIRED
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/get-auth/v1" \
  -H "Content-Type: application/json" \
  -d '{
    "user": "YOUR_USERNAME",
    "pass": "YOUR_PASSWORD"
  }'
Response Example (200 OK)
Response (200 OK)
{
    "status": "success",
    "message": "",
    "exec_time": "0.89s",
    "credit_balance": 975,
    "quota_limit": 1000,
    "permissions": [
        "read",
        "write"
    ],
    "results": {
        "token": "YOUT_TOKEN",
        "expire_timestamp": "2026-10-17 17:00:42"
    },
    "api_log_session_id": 410727497
}
JSON Output Parameters
ชื่อ คำอธิบาย ตัวอย่าง
status ผลการทำงาน ได้แก่ success (ไม่เกิดข้อผิดพลาด) / fail (เกิดข้อผิดพลาด ทำงานต่อไม่ได้) / warning (เกิดข้อผิดพลาด แต่ยังทำงานต่อได้) success
message ข้อความอธิบายเมื่อ status เป็น fail หรือ warning เช่น "Invalid user or pass | user หรือ pass ไม่ถูกต้อง", "Almost running out of API usage quota | ใกล้หมดโควต้าการใช้งาน API แล้ว", "Running out of API usage quota | หมดโควต้าการใช้งาน API แล้ว" ""
exec_time เวลาที่ใช้ประมวลผล (วินาที) 0.041s
credit_balance จำนวนครั้งการใช้งานที่เหลืออยู่ในเดือนนี้ (null = ไม่จำกัดโควต้า) 820
quota_limit จำนวนโควต้าต่อเดือน (null = ไม่จำกัด) 1000
permissions สิทธิ์ของ account นี้ — read และ/หรือ write (Array of string) ["read","write"]
api_log_session_id หมายเลข API log session สำหรับใช้ค้นหา debug การทำงานของ API ร่วมกับทีม Traffy 2122913957
results ข้อมูลผลลัพธ์ (object) (Object)
* ข้อมูลที่อยู่ใน results
token JWT สำหรับนำไปใช้เป็น Authorization: Bearer กับ API ต่างๆ YOUR_TOKEN
expire_timestamp วันเวลาที่ token หมดอายุ (UTC+7) 2031-08-31 23:59:59
2

การขอข้อมูลจาก Fondue (Data Retrieval)

API สำหรับดึงรายการเรื่องแจ้ง ประวัติ ข้อมูลสถิติ และผังโครงสร้างหน่วยงาน

⚠️
ข้อควรระวังเรื่องการเผยแพร่ข้อมูลสู่สาธารณะ: ข้อมูลเรื่องแจ้ง ข้อความ และรูปภาพที่ส่งไป เป็นข้อมูลดิบที่ไม่ผ่านการเซนเซอร์ (Uncensored) ให้ระวังการเผยแพร่ข้อมูลออกสู่สาธารณะให้มากที่สุด และต้องปฏิบัติตาม พ.ร.บ. คุ้มครองข้อมูลส่วนบุคคล (PDPA) โดยทำการเบลอหรือเซนเซอร์ข้อมูลส่วนบุคคล ก่อนเผยแพร่สู่สาธารณะ
2. /get-issues ขอรายการเรื่องแจ้ง
GET https://publicapi.traffy.in.th/exchange-api/get-issues/v2 🛡️ Header: Bearer Token

ดึงรายการเรื่องแจ้งที่หน่วยงานได้รับ กรองตามหน่วยงาน (org_id), ช่วงเวลา (duration), หมวดหมู่/ประเภทเรื่อง (type_name_th, issue_category_id, org_category_id), และสถานะติดตาม/ส่งต่อ (is_follow, is_forward)

Query String Parameters
Parameter Type คำอธิบาย ตัวอย่าง REQUIRED?
org_id string รหัสหน่วยงาน คั่นด้วย comma ได้ (Default: หน่วยงานของ Account) — ดูได้เฉพาะหน่วยงานที่กำหนดและหน่วยงานในผังบังคับบัญชาเท่านั้น (เช็ครายชื่อได้จาก get-org-list) ถ้าไม่มีสิทธิ์จะได้ fail กลับมา 151 OPTIONAL
duration string today (Default: ดึงเฉพาะเคสที่เคลื่อนไหวล่าสุด 1 วัน), 3days หรือ 3day (ย้อนหลัง 3 วัน), all (ดึงทั้งหมดโดยไม่จำกัดช่วงเวลา สูงสุด 5,000 รายการ) today OPTIONAL
type_name_th string ชื่อประเภทเรื่องภาษาไทย/อังกฤษ กรองตรงกับชื่อกลางหรือชื่อเฉพาะหน่วยงาน (รองรับ alias: type_name, category_name_th, category_name) ถนน OPTIONAL
issue_category_id integer รหัสประเภทเรื่องกลาง (ta.issue_category_id) 1 OPTIONAL
org_category_id integer รหัสประเภทเรื่องเฉพาะของหน่วยงาน (ta.local_category_id) 10 OPTIONAL
is_follow boolean กรองเฉพาะเรื่องที่มีการติดตามเรื่อง (voice_message.is_follow = true/false) true OPTIONAL
is_forward boolean กรองเฉพาะเรื่องที่มีการส่งต่อเรื่อง (app_data.ticket_assignments.is_forward = true/false) false OPTIONAL

💡 เงื่อนไขสำคัญ: ทุกตัวเป็น Optional หากมีการระบุ type_name_th ระบบจะให้ความสำคัญสูงสุดและไม่สนใจ issue_category_id กับ org_category_id

cURL Example
curl -X GET 'https://publicapi.traffy.in.th/exchange-api/get-issues/v2?org_id=151&duration=today' \
  --header 'Authorization: Bearer YOUR_TOKEN'
Response Example (200 OK)
Response (200 OK)
{
    "status": "success",
    "message": "",
    "exec_time": "1.219s",
    "source": "h db, db",
    "credit_balance": 968,
    "org_id": [
        151
    ],
    "count": 2,
    "api_log_session_id": 987350047,
    "results": [
        {
            "ticket_id": "2026-ABCDEF",
            "type": "น้ำท่วม",
            "type_reporter": "น้ำท่วม",
            "organization": "ทดสอบการใช้งานระบบ Fondue (หน่วยงานย่อย), ทดสอบการใช้งานระบบ Fondue, !@฿, Traffy @ ITS Lab ทดสอบ19/08/68, เมืองแอสการ์ด",
            "description": "ทดสอบการแจ้ง 2026-10-05 19:06\n#ThukTeamTraffy",
            "photo": "https://storage.googleapis.com/traffy_public_bucket/attachment/2026-10/a9e049e39a9c492cf43408bed8eddf0b.png",
            "latitude": 13.754158,
            "longitude": 100.501499,
            "address": "แขวงเสาชิงช้า เขตพระนคร กรุงเทพมหานคร",
            "subdistrict": "เสาชิงช้า",
            "district": "พระนคร",
            "province": "กรุงเทพมหานคร",
            "timestamp": "2026-10-05 19:06:16.831069",
            "photo_after": null,
            "timestamp_inprogress": null,
            "timestamp_finished": "2026-10-05 19:06:29.688952",
            "org_finished": "ทดสอบการใช้งานระบบ Fondue (หน่วยงานย่อย)",
            "is_follow": false,
            "is_forward": false,
            "status": "เสร็จสิ้น",
            "status_latest": "เสร็จสิ้น",
            "confirmed": false,
            "star": 5,
            "count_reopen": 0,
            "last_activity": "2026-10-05 19:06:29.688952"
        },
        {
            "ticket_id": "2026-GHIJKL",
            "type": "น้ำท่วม",
            "type_reporter": "น้ำท่วม",
            "organization": "ทดสอบการใช้งานระบบ Fondue, ทดสอบการใช้งานระบบ Fondue (หน่วยงานย่อย)",
            "description": "ทดสอบการแจ้ง 27/04/2569 ครั้งที่ 1 น้ำท่วม\n#SoSafe",
            "photo": "https://storage.googleapis.com/traffy_public_bucket/attachment/2026-04/d18444b2e7dd0979b6c9362c2219056e.jpg",
            "latitude": 13.750072,
            "longitude": 100.491292,
            "address": "แขวงพระบรมมหาราชวัง เขตพระนคร กรุงเทพมหานคร",
            "subdistrict": "พระบรมมหาราชวัง",
            "district": "พระนคร",
            "province": "กรุงเทพมหานคร",
            "timestamp": "2026-04-27 15:32:24.316164",
            "photo_after": null,
            "timestamp_inprogress": null,
            "timestamp_finished": null,
            "org_finished": null,
            "is_follow": false,
            "is_forward": false,
            "status": "รอรับเรื่อง",
            "status_latest": "รอรับเรื่อง",
            "confirmed": false,
            "star": 0,
            "count_reopen": 0,
            "last_activity": "2026-04-27 15:32:24.316164"
        },
        {
        }
    ]
}
JSON Output Parameters
ชื่อ คำอธิบาย ตัวอย่าง
status ผลการทำงาน: success / fail / warning success
message ข้อความอธิบายเพิ่มเติม (ไม่ว่างเมื่อ status เป็น fail หรือ warning) ""
exec_time เวลาที่ใช้ประมวลผล (วินาที) 14.128s
source แหล่งข้อมูล — db เมื่อดึงข้อมูลสดจากฐานข้อมูล หรือข้อความรูปแบบ cache/h cache <วันเวลาที่แคชถูกสร้าง> (expire Ns) เมื่อดึงจากแคช h db, db
credit_balance โควต้าคงเหลือ (null = ไม่จำกัด) null
org_id รหัสหน่วยงานที่ใช้กรอง (Array of int) [151]
count จำนวนเรื่องแจ้งทั้งหมดที่พบ 4367
api_log_session_id หมายเลข API log session สำหรับ debug ร่วมกับทีม Traffy 2030246239
results Array ของข้อมูลเรื่องแจ้ง เรียงจากแจ้ง/อัปเดตล่าสุดก่อน (Array)
* ข้อมูลที่อยู่ใน results[]
ticket_id หมายเลขของเรื่องแจ้ง 2026-B9WGC7
type ประเภทปัญหาที่เจ้าหน้าที่แก้ไข (ถ้ามี) ทุจริต
type_reporter ประเภทปัญหาที่ผู้แจ้งระบุ ทางเท้า
organization หน่วยงานที่ร่วมรับผิดชอบ คั่นด้วยลูกน้ำ Traffy @ ITS Lab2, Accom Park
description ข้อความที่ผู้แจ้งพิมพ์มา (***) ทดสอบแจ้ง
photo ภาพก่อนแก้ไขที่ผู้แจ้งส่งมา https://storage.googleapis.com/...
latitude / longitude พิกัด GPS 14.060383 / 100.596114
address / subdistrict / district / province ที่อยู่ / ตำบล / อำเภอ / จังหวัด คลองหนึ่ง / คลองหลวง / ปทุมธานี
timestamp วันเวลาที่แจ้ง (UTC+7) 2026-08-20 22:25:37
photo_after ภาพหลังแก้ไขที่เจ้าหน้าที่ส่งเข้ามา https://storage.googleapis.com/...
timestamp_inprogress / timestamp_finished วันเวลาที่เริ่มดำเนินการ / เสร็จสิ้น (null ถ้ายังไม่ถึงขั้นตอนนั้น) null
org_finished ชื่อหน่วยงานล่าสุดที่อัปโหลดภาพการดำเนินการ Accom Park
status สถานะปัจจุบันของเรื่องแจ้ง (ชื่อสถานะที่หน่วยงานตั้ง) ของบประมาณ
status_latest สถานะล่าสุดในระบบ ของบประมาณ
is_follow มีการติดตามเรื่องหรือไม่ false
is_forward มีการส่งต่อเรื่องหรือไม่ false
confirmed รับรองการแก้ไขแล้วหรือไม่ false
star ดาวความพึงพอใจที่ผู้แจ้งให้ (integer, ค่าเริ่มต้น/ยังไม่ได้ให้ = 0) 0
count_reopen จำนวนครั้งที่ถูกเปิดเรื่องใหม่ 0
last_activity วันเวลากิจกรรมล่าสุด (UTC+7) 2026-09-09 14:38:19
3. /get-issue ขอรายละเอียดรายเคส
GET https://publicapi.traffy.in.th/exchange-api/get-issue/v2 🛡️ Header: Bearer Token

ดึงรายละเอียดเชิงลึก ประวัติการปฏิบัติงาน Timeline พิกัด GPS รูปภาพ และสถานะของเรื่องแจ้งราย ticket_id (ไม่รองรับ client_ticket_id)

Query String Parameters
Parameter Type คำอธิบาย ตัวอย่าง REQUIRED?
ticket_id string รหัสเรื่องแจ้ง Fondue (ไม่รองรับ client_ticket_id สำหรับ API นี้) 2026-ABCDEF REQUIRED
cURL Example
curl -X GET 'https://publicapi.traffy.in.th/exchange-api/get-issue/v2?ticket_id=2026-GM6GX7' \
  --header 'Authorization: Bearer YOUR_TOKEN'
Response Example (200 OK)
Response (200 OK)
{
    "status": "success",
    "message": "",
    "exec_time": "1.43s",
    "source": "h db, db",
    "credit_balance": 965,
    "ticket_id": "2026-ABCDEF",
    "results": {
        "ticket_id": "2026-ABCDEF",
        "type": "น้ำท่วม",
        "organization": "ทดสอบการใช้งานระบบ Fondue (หน่วยงานย่อย), ทดสอบการใช้งานระบบ Fondue, !@฿, Traffy @ ITS Lab ทดสอบ19/08/68, เมืองแอสการ์ด",
        "description": "ทดสอบการแจ้ง 2026-10-05 19:06\n#ThukTeamTraffy",
        "photo": "https://storage.googleapis.com/traffy_public_bucket/attachment/2026-10/a9e049e39a9c492cf43408bed8eddf0b.png",
        "latitude": 13.754158,
        "longitude": 100.501499,
        "address": "แขวงเสาชิงช้า เขตพระนคร กรุงเทพมหานคร",
        "subdistrict": "เสาชิงช้า",
        "district": "พระนคร",
        "province": "กรุงเทพมหานคร",
        "timestamp": "2026-10-05 19:06:16.831069",
        "status_th_latest": "เสร็จสิ้น",
        "status_type": "finish",
        "confirmed": false,
        "star": 5,
        "count_reopen": 0,
        "last_activity": "2026-10-05 19:06:29.688952",
        "user_id": "c8b91e4a2d",
        "reporter_phone": "0999999999",
        "orgs": [
            {
                "timestamp": "2026-10-05 19:06:16.831069",
                "org_id": 6347,
                "name": "ทดสอบการใช้งานระบบ Fondue",
                "type": "น้ำท่วม",
                "type_en": "Flood",
                "issue_category_id": 78,
                "org_category_id": null,
                "status": "เสร็จสิ้น",
                "status_en": "Resolved",
                "is_follow": false,
                "is_forward": false,
                "issue_status_id": 3,
                "org_status_id": null,
                "status_type": "finish"
            },
            {
                "timestamp": "2026-10-05 19:06:16.831069",
                "org_id": 43152,
                "name": "ทดสอบการใช้งานระบบ Fondue (หน่วยงานย่อย)",
                "type": "น้ำท่วม",
                "type_en": "Flood",
                "issue_category_id": 78,
                "org_category_id": null,
                "status": "เสร็จสิ้น",
                "status_en": "Resolved",
                "is_follow": false,
                "is_forward": false,
                "issue_status_id": 3,
                "org_status_id": null,
                "status_type": "finish"
            },
            {
                "timestamp": "2026-10-05 19:06:21.519541",
                "org_id": 1302,
                "name": "!@฿",
                "type": "น้ำท่วม",
                "type_en": "Flood",
                "issue_category_id": 78,
                "org_category_id": null,
                "status": "เสร็จสิ้น",
                "status_en": "Resolved",
                "is_follow": false,
                "is_forward": false,
                "issue_status_id": 3,
                "org_status_id": null,
                "status_type": "finish"
            },
            {
                "timestamp": "2026-10-05 19:06:21.519541",
                "org_id": 28186,
                "name": "เมืองแอสการ์ด",
                "type": "น้ำท่วม",
                "type_en": "Flood",
                "issue_category_id": 78,
                "org_category_id": null,
                "status": "เสร็จสิ้น",
                "status_en": "Resolved",
                "is_follow": false,
                "is_forward": false,
                "issue_status_id": 3,
                "org_status_id": null,
                "status_type": "finish"
            },
            {
                "timestamp": "2026-10-05 19:06:21.519541",
                "org_id": 151,
                "name": "Traffy @ ITS Lab2",
                "type": "น้ำท่วม",
                "type_en": "Flood",
                "issue_category_id": 78,
                "org_category_id": null,
                "status": "เสร็จสิ้น",
                "status_en": "Resolved",
                "is_follow": false,
                "is_forward": false,
                "issue_status_id": 3,
                "org_status_id": null,
                "status_type": "finish"
            }
        ],
        "timeline": [
            {
                "timestamp": "2026-10-05 19:06:16.831069",
                "status_id": null,
                "status": "รอรับเรื่อง",
                "org_id": null,
                "org": null,
                "note": "ทดสอบการแจ้ง 2026-10-05 19:06\n#Test",
                "photo": "https://storage.googleapis.com/traffy_public_bucket/attachment/2026-10/a9e049e39a9c492cf43408bed8eddf0b.png"
            },
            {
                "timestamp": "2026-10-05 19:06:21.519541",
                "status_id": 285951,
                "status": "ส่งต่อ",
                "org_id": 151,
                "org": "ทดสอบการใช้งานระบบ Fondue (หน่วยงานย่อย)",
                "note": "ทดสอบการใช้งานระบบ Fondue (หน่วยงานย่อย) ส่งต่อไปยัง !@฿\r\nเนื่องจาก ทดสอบส่งต่อ\n( ⓘ และ ทดสอบการใช้งานระบบ Fondue ก็เป็นส่งต่อด้วยโดยอัตโนมัติ)",
                "photo": null
            },
            {
                "timestamp": "2026-10-05 19:06:29.571698",
                "status_id": 285950,
                "status": "เสร็จสิ้น",
                "org_id": 151,
                "org": "ทดสอบการใช้งานระบบ Fondue (หน่วยงานย่อย)",
                "note": "ทดลองปรับสถานะด้วย Exchange API",
                "photo": "https://storage.googleapis.com/traffy_public_bucket/attachment/2026-10/43252b17ad0ed1fd03b7cd9467bf4ca2.png"
            }
        ],
        "chat": [
            {
                "org_id": null,
                "comment": "ตอนนี้น้ำท่วมขังบริเวณหน้าปากซอยสูงประมาณ 15 ซม. รถเล็กสัญจรลำบากครับ",
                "user_id": "c8b91e4a2d",
                "timestamp": "2026-10-05T12:15:20.130997+00:00"
            },
            {
                "org_id": 43152,
                "comment": "รับเรื่องแล้วครับ ทางหน่วยงานกำลังส่งทีมเจ้าหน้าที่พร้อมเครื่องสูบน้ำเข้าตรวจสอบพื้นที่ครับ",
                "user_id": "staff_bkk_01",
                "timestamp": "2026-10-05T12:30:45.492847+00:00"
            },
            {
                "org_id": 43152,
                "comment": "เจ้าหน้าที่ดำเนินการสูบระบายน้ำและเก็บขยะอุดตันหน้าตะแกรงเรียบร้อย ระดับน้ำแห้งเป็นปกติแล้วครับ",
                "user_id": "staff_bkk_01",
                "timestamp": "2026-10-05T13:45:10.840125+00:00"
            },
            {
                "org_id": null,
                "comment": "ขอบคุณเจ้าหน้าที่มากครับ ระดับน้ำแห้งแล้ว เดินทางสะดวกขึ้นมากครับ",
                "user_id": "c8b91e4a2d",
                "timestamp": "2026-10-05T14:02:18.210450+00:00"
            }
        ]
    },
    "api_log_session_id": 1799826007
}
JSON Output Parameters
ชื่อ คำอธิบาย ตัวอย่าง
status ผลการทำงาน: success / fail / warning success
message ข้อความอธิบายเพิ่มเติม (ไม่ว่างเมื่อ status เป็น fail หรือ warning) ""
exec_time เวลาที่ใช้ประมวลผล (วินาที) 1.193s
source แหล่งข้อมูล — db เมื่อดึงข้อมูลสดจากฐานข้อมูล หรือข้อความรูปแบบ cache/h cache <วันเวลาที่แคชถูกสร้าง> (expire Ns) เมื่อดึงจากแคช h cache 2026-09-09 16:42:17 (expire 600s), db
credit_balance โควต้าคงเหลือ (null = ไม่จำกัด) null
ticket_id รหัสการแจ้งที่ต้องการดูรายละเอียด 2026-ABCDEF
results ข้อมูลผลลัพธ์ (object) (Object)
* ข้อมูลที่อยู่ใน results
ticket_id หมายเลขของเรื่องแจ้ง 2026-ABCDEF
type ประเภทปัญหาที่ผู้แจ้งเลือกไว้ อื่นๆ
organization หน่วยงานที่ร่วมรับผิดชอบ คั่นด้วยลูกน้ำ Traffy @ ITS Lab2, ทดสอบ toy (2)
description ข้อความที่ผู้แจ้งพิมพ์มา ทดสอบแจ้ง ด้วย ssl ใหม่
photo ภาพที่ผู้แจ้งส่งมา https://storage.googleapis.com/...
latitude / longitude พิกัด GPS 14.077774 / 100.60131
address / subdistrict / district / province ที่อยู่ / ตำบล / อำเภอ / จังหวัด คลองหนึ่ง / คลองหลวง / ปทุมธานี
timestamp วันเวลาที่แจ้ง (UTC+7) 2026-08-27 22:15:33
status_th_latest สถานะล่าสุดของระบบ (ภาษาไทย) ของบประมาณ
status_type สถานะตามที่ผู้แจ้งเห็น: report/inprogress/finish/irrelevant/follow inprogress
confirmed รับรองการแก้ไขแล้วหรือไม่ false
star ดาวความพึงพอใจ (1-5, null ถ้ายังไม่ได้ให้) null
count_reopen จำนวนครั้งที่ถูกเปิดเรื่องใหม่ 0
last_activity วันเวลากิจกรรมล่าสุด (UTC+7) 2026-09-01 16:14:49
user_id รหัสประจำตัวของผู้แจ้ง c8b91e4a2d
reporter_phone เบอร์โทรศัพท์ของผู้แจ้ง (null หากไม่ระบุ) 0999999999
orgs Array สถานะ/ประเภทปัญหาที่แต่ละหน่วยงานได้รับ (Array)
** ข้อมูลที่อยู่ใน orgs[]
timestamp วันเวลาที่ข้อมูลเข้าหน่วยงาน 2026-08-27 22:15:33
org_id / name รหัสและชื่อหน่วยงาน 151 / Traffy @ ITS Lab2
issue_category_id / type / type_en รหัสและชื่อประเภทปัญหาที่หน่วยงานได้รับ 74 / ทุจริต / Corruption
issue_status_id / status / status_en / status_type รหัส ชื่อ และประเภทสถานะที่หน่วยงานมองเห็น 2 / ของบประมาณ / In Progress / inprogress
is_follow / is_forward มีการติดตาม หรือมีการส่งต่อเรื่องหรือไม่ false / false
org_category_id รหัสหมวดหมู่ custom ของหน่วยงาน (null = ยังไม่ปรับแต่ง) NEW null
org_status_id รหัสสถานะ custom ของหน่วยงาน (null = ยังไม่ปรับแต่ง) NEW 1219411
timeline Array ประวัติการดำเนินการ (ห้ามเผยแพร่สู่สาธารณะ อาจมีข้อมูลผู้แจ้ง) (Array)
*** ข้อมูลที่อยู่ใน timeline[]
timestamp วันเวลาของการอัปเดต 2026-08-27 22:18:06
status_id / status รหัสและชื่อสถานะที่ จนท. กดอัปเดต 106369 / จัดทำนโยบาย
org_id / org รหัสและชื่อหน่วยงานที่กดอัปเดต 151 / Traffy @ ITS Lab2
note คำอธิบายประกอบการอัปเดต ทดสอบ
photo URL รูปภาพประกอบการอัปเดต null
chat Array ของข้อความแชทระหว่างเจ้าหน้าที่กับผู้แจ้ง (ห้ามเผยแพร่สู่สาธารณะ) (Array)
**** ข้อมูลที่อยู่ใน chat[] (ห้ามเผยแพร่ข้อมูลส่วนของ chat สู่สาธารณะ เนื่องจากอาจมีชื่อและเบอร์โทรศัพท์ของผู้แจ้ง เพื่อให้ จนท. ติดต่อกลับ)
org_id รหัสหน่วยงาน (null หากข้อความเป็นของผู้แจ้ง) 43152 / null
comment ข้อความแชท รับเรื่องแล้วครับ กำลังส่งเจ้าหน้าที่เข้าตรวจสอบพื้นที่ครับ
user_id รหัสผู้ส่งข้อความ (ผู้แจ้งหรือเจ้าหน้าที่) staff_bkk_01 / c8b91e4a2d
timestamp วันเวลาที่ส่งข้อความ (ISO 8601) 2026-10-05T12:30:45.492847+00:00
api_log_session_id หมายเลข API log session สำหรับ debug ร่วมกับทีม Traffy 2077283457
4. /download-issues ดาวน์โหลดข้อมูลเป็น CSV
GET https://publicapi.traffy.in.th/exchange-api/download-issues/v2 🛡️ Header: Bearer Token

ส่งออกข้อมูลเรื่องแจ้งของหน่วยงานออกมาเป็นไฟล์ CSV (คอลัมน์เดียวกับ get-issues) กรองตามหน่วยงาน (org_id), ช่วงเวลา (duration), หมวดหมู่, และสถานะติดตาม/ส่งต่อ เหมาะสำหรับการทำรายงานหรือวิเคราะห์ข้อมูลภายนอก

Query String Parameters
Parameter Type คำอธิบาย ตัวอย่าง REQUIRED?
org_id string รหัสหน่วยงาน คั่นด้วย comma ได้ (Default: หน่วยงานของ Account) — ดูได้เฉพาะหน่วยงานที่กำหนดและหน่วยงานในผังบังคับบัญชาเท่านั้น (เช็ครายชื่อได้จาก get-org-list) ถ้าไม่มีสิทธิ์จะได้ fail กลับมา 151 OPTIONAL
duration string today (Default: ดึงเฉพาะเคสที่เคลื่อนไหวล่าสุด 1 วัน), 3days หรือ 3day (ย้อนหลัง 3 วัน), all (ดึงทั้งหมดโดยไม่จำกัดช่วงเวลา สูงสุด 5,000 รายการ) all OPTIONAL
type_name_th string ชื่อประเภทเรื่องภาษาไทย/อังกฤษ กรองตรงกับชื่อกลางหรือชื่อเฉพาะหน่วยงาน (รองรับ alias: type_name, category_name_th, category_name) ถนน OPTIONAL
issue_category_id integer รหัสประเภทเรื่องกลาง (ta.issue_category_id) 1 OPTIONAL
org_category_id integer รหัสประเภทเรื่องเฉพาะของหน่วยงาน (ta.local_category_id) 10 OPTIONAL
is_follow boolean กรองเฉพาะเรื่องที่มีการติดตามเรื่อง (voice_message.is_follow = true/false) true OPTIONAL
is_forward boolean กรองเฉพาะเรื่องที่มีการส่งต่อเรื่อง (app_data.ticket_assignments.is_forward = true/false) false OPTIONAL

💡 เงื่อนไขสำคัญ: ทุกตัวเป็น Optional หากมีการระบุ type_name_th ระบบจะให้ความสำคัญสูงสุดและไม่สนใจ issue_category_id กับ org_category_id

cURL Example
curl -X GET 'https://publicapi.traffy.in.th/exchange-api/download-issues/v2?org_id=151&duration=all' \
  --header 'Authorization: Bearer YOUR_TOKEN' \
  --output export_issues.csv

⚠️ API นี้คืนค่าเป็น ไฟล์ CSV ดิบ (Content-Type: application/csv) เมื่อสำเร็จ ไม่ใช่ JSON — คอลัมน์เหมือนกับ results[] ของ get-issues ทุกประการ กรณีเกิดข้อผิดพลาดเท่านั้นที่จะได้ JSON กลับมาแทน

Response Example (CSV / Error JSON)
Response (200 OK) — CSV
ticket_id,type,type_reporter,organization,description,photo,latitude,longitude,address,subdistrict,district,province,timestamp,photo_after,timestamp_inprogress,timestamp_finished,org_finished,is_follow,is_forward,status,status_latest,confirmed,star,count_reopen,last_activity
2026-ABCDEF,น้ำท่วม,น้ำท่วม,"ทดสอบการใช้งานระบบ Fondue (หน่วยงานย่อย), ทดสอบการใช้งานระบบ Fondue, !@฿, Traffy @ ITS Lab ทดสอบ19/08/68, เมืองแอสการ์ด","ทดสอบการแจ้ง 2026-10-05 19:06\n#ThukTeamTraffy",https://storage.googleapis.com/traffy_public_bucket/attachment/2026-10/a9e049e39a9c492cf43408bed8eddf0b.png,13.754158,100.501499,"แขวงเสาชิงช้า เขตพระนคร กรุงเทพมหานคร",เสาชิงช้า,พระนคร,กรุงเทพมหานคร,"2026-10-05 19:06:16.831069",,,"2026-10-05 19:06:29.688952","ทดสอบการใช้งานระบบ Fondue (หน่วยงานย่อย)",,,เสร็จสิ้น,เสร็จสิ้น,,5,0,"2026-10-05 19:06:29.688952"
2026-GHIJKL,น้ำท่วม,น้ำท่วม,"ทดสอบการใช้งานระบบ Fondue (หน่วยงานย่อย), ทดสอบการใช้งานระบบ Fondue","ทดสอบการแจ้ง 27/04/2569 ครั้งที่ 1 น้ำท่วม\n#SoSafe",https://storage.googleapis.com/traffy_public_bucket/attachment/2026-04/d18444b2e7dd0979b6c9362c2219056e.jpg,13.750072,100.491292,"แขวงพระบรมมหาราชวัง เขตพระนคร กรุงเทพมหานคร",พระบรมมหาราชวัง,พระนคร,กรุงเทพมหานคร,"2026-04-27 15:32:24.316164",,,,,,,รอรับเรื่อง,รอรับเรื่อง,,0,0,"2026-04-27 15:32:24.316164"
Response (Error) — JSON
{
  "status": "fail",
  "message": "org_id is not specified | ไม่ได้ระบุ org_id",
  "exec_time": "0",
  "source": "",
  "credit_balance": null,
  "org_id": null,
  "count": 0,
  "api_log_session_id": 1234567890,
  "results": []
}
CSV Output Columns
ชื่อ คำอธิบาย ตัวอย่าง
ticket_id หมายเลขของเรื่องแจ้ง 2026-ABCDEF
type ประเภทปัญหาที่เจ้าหน้าที่เปลี่ยนใหม่ (ถ้ามี) ทุจริต
organization หน่วยงานที่ร่วมรับผิดชอบ คั่นด้วยลูกน้ำ Traffy @ ITS Lab2, Accom Park
description ข้อความที่ผู้แจ้งพิมพ์มา (***) ทดสอบแจ้ง
photo / photo_after ภาพก่อน / หลังแก้ไข https://storage.googleapis.com/...
latitude / longitude พิกัด GPS 14.060383 / 100.596114
address / subdistrict / district / province ที่อยู่ / ตำบล / อำเภอ / จังหวัด คลองหนึ่ง / คลองหลวง / ปทุมธานี
timestamp วันเวลาที่แจ้ง (UTC+7) 2026-08-20 22:25:37.433959
timestamp_inprogress / timestamp_finished วันเวลาที่เริ่มดำเนินการ / เสร็จสิ้น (ว่าง ถ้ายังไม่ถึงขั้นตอนนั้น) (ว่าง)
org_finished ชื่อหน่วยงานล่าสุดที่อัปโหลดภาพการดำเนินการ Accom Park
status สถานะปัจจุบันของเรื่องแจ้ง (แต่ละหน่วยงานอาจเห็น status ไม่เหมือนกัน แม้เป็นเรื่องแจ้งเดียวกัน) ของบประมาณ
confirmed รับรองการแก้ไขแล้วหรือไม่ (ว่าง = false) (ว่าง)
star ดาวความพึงพอใจที่ผู้แจ้งให้ (ค่าเริ่มต้น/ยังไม่ได้ให้ = 0) 0
count_reopen จำนวนครั้งที่ถูกเปิดเรื่องใหม่ 0
last_activity วันเวลากิจกรรมล่าสุด (UTC+7) 2026-09-09 14:38:19.663501
5. /search-org ค้นหาหน่วยงานจากชื่อ
GET https://publicapi.traffy.in.th/exchange-api/search-org/v1 🛡️ Header: Bearer Token

ค้นหารหัสหน่วยงาน (org_id) และชื่อหน่วยงานจากคำค้นหา เพื่อนำรหัสไปใช้ในการส่งต่อเคสหรือกรองข้อมูล (คำค้นหาต้องมีความยาวอย่างน้อย 3 ไบต์ รองรับ wildcard *)

  • ⚠️ API นี้จะคืนผลลัพธ์เฉพาะหน่วยงานที่อยู่ใน join-forward hierarchy ของ new_issue_org ที่ผูกกับ API key เท่านั้น หาก account ยังไม่ได้ตั้งค่า new_issue_org ไว้ ผลลัพธ์อาจได้ count: 0 แม้ชื่อหน่วยงานที่ค้นหาจะมีอยู่จริงในระบบก็ตาม (สังเกตพฤติกรรมนี้ในบัญชีทดสอบที่ยังไม่ได้ตั้งค่า new_issue_org) — หากพบพฤติกรรมนี้ ให้ติดต่อทีมงาน Traffy เพื่อตรวจสอบการตั้งค่า new_issue_org ของ account
Query String Parameters
Parameter Type คำอธิบาย ตัวอย่าง REQUIRED?
text string คำค้นหาชื่อหน่วยงาน ขั้นต่ำ 3 ไบต์ ใช้ * แทนหลายตัวอักษร หรือ ? แทน 1 ตัวอักษรได้ (เช่น บางเขน, Traffy*, เขตจตุจัก?) Traffy* REQUIRED
cURL Example
curl -X GET 'https://publicapi.traffy.in.th/exchange-api/search-org/v1?text=Traffy*' \
  --header 'Authorization: Bearer YOUR_TOKEN'
Response Example (200 OK)
Response (200 OK)
{
    "status": "success",
    "message": "",
    "exec_time": "1.583s",
    "source": "db",
    "credit_balance": 960,
    "text": "เขตค*",
    "count": 5,
    "results": [
        {
            "org_id": "18055",
            "name": "เขตคลองเตย",
            "photo": "https://storage.googleapis.com/traffy_public_bucket/attachment/2023-12/ef26985e438d6873f8894bbb84cb1ebe09ab563b.png",
            "latitude": 13.70814,
            "longitude": 100.583706,
            "address": "เขตคลองเตย กรุงเทพมหานคร",
            "province": "กรุงเทพมหานคร",
            "is_official": true
        },
        {
            "org_id": "18056",
            "name": "เขตคลองสาน",
            "photo": "https://storage.googleapis.com/traffy_public_bucket/attachment/2023-11/a747aa05395b9c5ea4d2226e1da442c6d55063f2.jpg",
            "latitude": 13.730544,
            "longitude": 100.509252,
            "address": "เขตคลองสาน กรุงเทพมหานคร",
            "province": "กรุงเทพมหานคร",
            "is_official": true
        },
        {
        }
    ],
    "api_log_session_id": 1576633664,
    "api_log_session_id_show_joinforward_from_hierarchy": 538559209
}
JSON Output Parameters
ชื่อ คำอธิบาย ตัวอย่าง
status ผลการทำงาน: success / fail / warning success
message ข้อความอธิบายเพิ่มเติม (ไม่ว่างเมื่อ status เป็น fail หรือ warning) ""
exec_time เวลาที่ใช้ประมวลผล (วินาที) 1.372s
source แหล่งข้อมูล — db เมื่อดึงข้อมูลสดจากฐานข้อมูล หรือข้อความรูปแบบ cache <วันเวลาที่แคชถูกสร้าง> (expire Ns) เมื่อดึงจากแคช db
credit_balance โควต้าคงเหลือ (null = ไม่จำกัด) null
text คำค้นหาที่ส่งมา Traffy*
count จำนวนหน่วยงานที่พบ (ดูหมายเหตุด้านบนเรื่อง new_issue_org) 0
results Array ของข้อมูลหน่วยงานที่พบ []
* ข้อมูลที่อยู่ใน results[] (เมื่อพบผลลัพธ์)
org_id รหัสหน่วยงาน 151
name ชื่อหน่วยงาน Traffy @ ITS Lab2
photo ภาพโลโก้/ภาพประจำหน่วยงาน https://storage.googleapis.com/...
latitude / longitude พิกัด GPS ของหน่วยงาน 13.8663 / 100.5967
address / province ที่อยู่ / จังหวัด กรุงเทพมหานคร
is_official เป็นหน่วยงานที่ยืนยันตัวตนแล้วหรือไม่ true
api_log_session_id หมายเลข API log session สำหรับ debug ร่วมกับทีม Traffy 1085634030
api_log_session_id_show_joinforward_from_hierarchy API log session ของการเรียก internal API show_joinforward_from_hierarchy ที่ใช้กรองผลลัพธ์ — ปรากฏเฉพาะตอน source เป็น db (ดึงข้อมูลสดจริง) เท่านั้น จะไม่ปรากฏเลยเมื่อผลมาจาก cache 689953440
6. /get-org-list ขอผังโครงสร้างหน่วยงานในสังกัด
GET https://publicapi.traffy.in.th/exchange-api/get-org-list/v1 🛡️ Header: Bearer Token

ดึงข้อมูลและรายชื่อหน่วยงานทั้งหมดที่ Account ปัจจุบันมีสิทธิ์เข้าถึง (อ้างอิงจาก get_issue_org ของ Token) หรือใช้สำหรับดึงข้อมูลพิกัด/ที่อยู่ของหน่วยงานตาม org_id ที่ระบุ

Query String Parameters
Parameter Type คำอธิบาย ตัวอย่าง REQUIRED?
org_id string รหัสหน่วยงาน คั่นด้วย comma ได้ (Default: หน่วยงานของ Account) — แนะนำให้ระบุเสมอเพื่อป้องกัน PHP Warning บนเซิร์ฟเวอร์ 151 OPTIONAL
cURL Example
curl -X GET 'https://publicapi.traffy.in.th/exchange-api/get-org-list/v1?org_id=151' \
  --header 'Authorization: Bearer YOUR_TOKEN'
Response Example (200 OK)
Response (200 OK)
{
  "status": "success",
  "message": "",
  "exec_time": "0.943s",
  "source": "db",
  "credit_balance": null,
  "org_id": "151",
  "count": 1,
  "results": [
    {
      "org_id": 151,
      "name": "Traffy @ ITS Lab2",
      "name_en": "Traffy @ ITS Lab2",
      "photo": "https://storage.googleapis.com/traffy_public_bucket/attachment/2022-01/998ce45a17d6fd64b0e35f7fb65c778a63397777.jpg",
      "latitude": 14.077786,
      "longitude": 100.601313,
      "address": "112 อุทยานวิทยาศาสตร์ ถนนพหลโยธิน ตำบลคลองหนึ่ง อำเภอคลองหลวง ปทุมธานี 12120 ประเทศไทย",
      "province": "ปทุมธานี",
      "is_official": true
    }
  ],
  "api_log_session_id": 1800786405
}
JSON Output Parameters
ชื่อ คำอธิบาย ตัวอย่าง
status ผลการทำงาน: success / fail / warning success
message ข้อความอธิบายเพิ่มเติม (ไม่ว่างเมื่อ status เป็น fail หรือ warning) ""
exec_time เวลาที่ใช้ประมวลผล (วินาที) 0.943s
source แหล่งข้อมูล — db เมื่อดึงข้อมูลสดจากฐานข้อมูล หรือข้อความรูปแบบ cache <วันเวลาที่แคชถูกสร้าง> (expire Ns) เมื่อดึงจากแคช db
credit_balance โควต้าคงเหลือ (null = ไม่จำกัด) null
org_id รหัสหน่วยงานตัวแรกที่ใช้กรองผลลัพธ์ — ค่าที่ส่งมา หรือหน่วยงานแรกของ Account หากไม่ได้ส่ง org_id (string ตัวเดียว ไม่ใช่ array) "151"
count จำนวนหน่วยงานทั้งหมดที่พบ (รวมหน่วยงานหลักของ account เองด้วย ไม่ใช่แค่หน่วยงานย่อย) 1
results Array ของข้อมูลหน่วยงาน (Array)
* ข้อมูลที่อยู่ใน results[]
org_id รหัสหน่วยงาน 151
name / name_en ชื่อหน่วยงาน ภาษาไทย / อังกฤษ Traffy @ ITS Lab2
photo ภาพโลโก้/ภาพประจำหน่วยงาน https://storage.googleapis.com/...
latitude / longitude พิกัด GPS ของหน่วยงาน 14.077786 / 100.601313
address / province ที่อยู่ / จังหวัด ปทุมธานี
is_official เป็นหน่วยงานที่ยืนยันตัวตนแล้วหรือไม่ true
api_log_session_id หมายเลข API log session สำหรับ debug ร่วมกับทีม Traffy 1800786405
7. /get-type-list ขอรายการประเภทปัญหา
GET https://publicapi.traffy.in.th/exchange-api/get-type-list/v2 🛡️ Header: Bearer Token

ดึง Master Data รายการประเภทปัญหาและหมวดหมู่ที่หน่วยงานรับผิดชอบ (กรองเฉพาะประเภทเรื่องที่เปิดใช้งาน is_active = true และตัดประเภทเรื่องกลางที่หน่วยงานปิดการใช้งานออก)

Query String Parameters
Parameter Type คำอธิบาย ตัวอย่าง REQUIRED?
org_id integer รหัสหน่วยงาน รับค่าเป็นตัวเลข Integer ตัวเดียวเท่านั้น (ไม่รองรับ Comma-separated list) หากไม่ระบุจะใช้ค่า Default จาก Token 123 OPTIONAL
cURL Example
curl -X GET 'https://publicapi.traffy.in.th/exchange-api/get-type-list/v2?org_id=123' \
  --header 'Authorization: Bearer YOUR_TOKEN'
Response Example (200 OK)
Response (200 OK)
{
    "status": "success",
    "message": "",
    "exec_time": "1.946s",
    "source": "h cache 2026-10-10 17:04:01 (expire 600s), cache 2026-10-10 17:04:01 (expire 3600s)",
    "credit_balance": 973,
    "org_id": 151,
    "count": 38,
    "results": [
        {
            "type": "น้ำท่วม",
            "type_en": "Flood",
            "issue_category_id": 78,
            "org_category_id": null,
            "photo": "https://storage.googleapis.com/traffy_public_bucket/attachment/2021-09/s-1630552986.779968.png",
            "index": 4
        },
        {
            "type": "ความสะอาด",
            "type_en": "Cleanliness",
            "issue_category_id": 5,
            "org_category_id": null,
            "photo": "https://storage.googleapis.com/traffy_public_bucket/attachment/2018-03/s-1520325639.52.png",
            "index": 6
        },
        {
        }
    ],
    "api_log_session_id": 1581207288
}
JSON Output Parameters
ชื่อ คำอธิบาย ตัวอย่าง
status ผลการทำงาน: success / fail / warning success
org_id หมายเลขหน่วยงาน (integer) 123
count จำนวนผลลัพธ์ใน results 2
results Array ของข้อมูลประเภทปัญหา (Array)
message ข้อความอธิบายเพิ่มเติม (ไม่ว่างเมื่อ status เป็น fail หรือ warning) ""
exec_time เวลาที่ใช้ประมวลผล (วินาที) 1.179s
source แหล่งข้อมูล (db หรือ cache) db
credit_balance โควต้าคงเหลือ (null = ไม่จำกัด) null
api_log_session_id หมายเลข API log session สำหรับ debug ร่วมกับทีม Traffy 424355237
* ข้อมูลที่อยู่ใน results[]
type / type_en ชื่อประเภทเรื่อง (ไทย/อังกฤษ) ถนน / Road
issue_category_id รหัสประเภทเรื่องกลาง 1
org_category_id รหัสประเภทเรื่องเฉพาะของหน่วยงาน (null หากใช้ประเภทเรื่องกลาง) 10 / null
photo URL รูปภาพไอคอนประเภทปัญหา https://storage.googleapis.com/...
index ลำดับการเรียงลำดับ 1
api_log_session_id หมายเลข API log session สำหรับ debug ร่วมกับทีม Traffy 424355237
8. /get-status-list ขอรายการสถานะที่ใช้งานได้
GET https://publicapi.traffy.in.th/exchange-api/get-status-list/v2 🛡️ Header: Bearer Token

ดึงรายการสถานะของเรื่องแจ้งที่หน่วยงานสามารถใช้งานได้ (กรองเฉพาะสถานะที่เปิดใช้งาน is_active = true และตัดสถานะกลางที่หน่วยงานปิดการใช้งานออก)

Query String Parameters
Parameter Type คำอธิบาย ตัวอย่าง REQUIRED?
org_id integer รหัสหน่วยงาน รับค่าเป็นตัวเลข Integer ตัวเดียวเท่านั้น (ไม่รองรับ Comma-separated list) หากไม่ระบุจะใช้ค่า Default จาก Token 123 OPTIONAL
cURL Example
curl -X GET 'https://publicapi.traffy.in.th/exchange-api/get-status-list/v2?org_id=123' \
  --header 'Authorization: Bearer YOUR_TOKEN'
Response Example (200 OK)
Response (200 OK)
{
    "status": "success",
    "message": "",
    "exec_time": "0.996s",
    "source": "h cache 2026-10-10 17:04:01 (expire 600s), db",
    "credit_balance": 972,
    "org_id": 151,
    "count": 4,
    "results": [
        {
            "issue_status_id": 1,
            "org_statuses_id": null,
            "status": "รอรับเรื่อง",
            "status_en": "Open",
            "status_type": "start",
            "sort_order": 1,
            "bg_color": "#f98a89",
            "text_color": "#000",
            "border_color": "#ef5d4a",
            "is_active": true
        },
        {
            "issue_status_id": 2,
            "org_statuses_id": null,
            "status": "กำลังดำเนินการ",
            "status_en": "In Progress",
            "status_type": "inprogress",
            "sort_order": 2,
            "bg_color": "#ffeca0",
            "text_color": "#92400E",
            "border_color": "#f4bf00",
            "is_active": true
        },
        {
        }
    ],
    "api_log_session_id": 31630987
}
JSON Output Parameters
ชื่อ คำอธิบาย ตัวอย่าง
status ผลการทำงาน: success / fail / warning success
org_id หมายเลขหน่วยงาน (integer) 123
count จำนวนผลลัพธ์ใน results 2
results Array ของข้อมูลสถานะ (Array)
message ข้อความอธิบายเพิ่มเติม (ไม่ว่างเมื่อ status เป็น fail หรือ warning) ""
exec_time เวลาที่ใช้ประมวลผล (วินาที) 1.121s
source แหล่งข้อมูล (db หรือ cache) db
credit_balance โควต้าคงเหลือ (null = ไม่จำกัด) null
api_log_session_id หมายเลข API log session สำหรับ debug ร่วมกับทีม Traffy 1841962945
* ข้อมูลที่อยู่ใน results[]
issue_status_id รหัสสถานะกลางของระบบ 1
org_statuses_id รหัสสถานะเฉพาะของหน่วยงาน (null หากใช้สถานะกลาง) 15 / null
status ชื่อกลุ่ม/สถานะภาษาไทย (เดิม group_name_th) รอรับเรื่อง
status_en ชื่อกลุ่ม/สถานะภาษาอังกฤษ (เดิม group_name_en) Pending / null
status_type ประเภทสถานะ (ดึงมาจาก legacy_state_type ของ issue_statuses เช่น waiting, inprogress) waiting
sort_order ลำดับการเรียงลำดับ 1
bg_color / text_color / border_color สีพื้นหลัง / ตัวอักษร / ขอบ สำหรับแสดงผล (hex code) #FFA500 / #FFFFFF / #FFA500
is_active สถานะการเปิดใช้งาน คืนค่าเป็น Boolean (true / false) true
api_log_session_id หมายเลข API log session สำหรับ debug ร่วมกับทีม Traffy 1789698051
3

การส่งข้อมูลให้ Fondue (Data Submission)

API สำหรับส่งเรื่องแจ้งใหม่ ปรับสถานะ ให้คะแนนดาว และส่งข้อความ SMS

9. /new-issue ส่งเรื่องแจ้งใหม่เข้า Fondue
POST https://publicapi.traffy.in.th/exchange-api/new-issue/v1 🛡️ Header: Bearer Token

ส่งเรื่องแจ้งเหตุใหม่จากระบบภายนอกเข้าสู่ระบบ Fondue พร้อมระบุพิกัด GPS, รูปภาพ, หมวดหมู่ปัญหา และที่อยู่ — เลือกระบุหมวดหมู่ได้ 1 ทาง (ตัวใหม่หรือตัวเดิม อย่างใดอย่างหนึ่ง ระบบจะแปลงตัวเดิมให้อัตโนมัติ)

Request Body (JSON)
Parameter Type คำอธิบาย ตัวอย่าง REQUIRED?
description string ข้อความรายละเอียดปัญหาที่พบ (มีค่า Default หากไม่ระบุ) พบฝาท่อชำรุด อาจเกิดอันตราย OPTIONAL
latitude / longitude number พิกัด GPS (WGS84) 13.7563 / 100.5018 REQUIRED
issue_category_id integer ใหม่ — เลือกหมวดหมู่กลางตรงๆ 12 OPTIONAL
org_category_id int / null ใหม่ — เลือกหมวดหมู่ custom ของหน่วยงานตรงๆ (ส่ง null/"null" ได้) null OPTIONAL
category_name_th string ใหม่ — เลือกหมวดหมู่จากชื่อไทย ถนน OPTIONAL
type_id / topic_id / topic / type_name int / str Legacy — ระบบแปลงเป็น issue_category_id/org_category_id/category_name_th ให้อัตโนมัติ 12 OPTIONAL
photo array[str] Array URL รูปภาพ (ไม่เกิน 3 รูป) — ทางเลือกแทน photo_base64 ["https://..."] OPTIONAL
photo_base64 array[str] Array รูปภาพแบบ Base64 (ไม่เกิน 3 รูป) — โค้ดไม่ตรวจสอบรูปแบบ ส่งผ่านตรงไปยัง API ภายในตามที่ได้รับมา - OPTIONAL
address string ที่อยู่หรือจุดสังเกต ปากซอยพหลโยธิน 12 OPTIONAL
subdistrict / district / province string ตำบล, อำเภอ, จังหวัด (หากไม่ส่งมาระบบจะทำ Reverse-Geocoding จากพิกัด GPS ให้อัตโนมัติ) บางขุนพรหม / พระนคร / กรุงเทพมหานคร OPTIONAL
org_id int / string / array[int] รหัสหน่วยงาน — ส่งเป็นตัวเลขเดี่ยว, string คั่นด้วย comma, หรือ array ก็ได้ 151 OPTIONAL
reporter_sms / reporter_email string เบอร์/อีเมลผู้แจ้ง — ถ้าส่งมาระบบจะส่ง SMS/อีเมลแจ้งความคืบหน้ากลับให้อัตโนมัติ 0812345678 OPTIONAL
reporter_name / reporter_phone string ชื่อ/เบอร์ติดต่อผู้แจ้งเหตุ — บันทึกไว้ในระบบเฉยๆ ไม่ได้ทริกเกอร์การแจ้งเตือนใดๆ 0812345678 OPTIONAL
client_user_id / client_ticket_id / client_timestamp string ข้อมูลอ้างอิงจากระบบภายนอกของท่าน EXT-2026-001 OPTIONAL
token_secret_key string ทางเลือกสำหรับยืนยันตัวตนแทน Bearer Token YOUR_SECRET_KEY OPTIONAL
line_user_id string ถ้าส่งมา จะแทนที่ตัวตนผู้แจ้ง (ปกติเป็น staff user ของ account) ด้วยค่านี้แทน - OPTIONAL
ai_photo_id / gemini_id integer ข้อมูลเสริมประกอบเรื่องแจ้ง - OPTIONAL
extra_detail object ข้อมูลเสริมประกอบเรื่องแจ้ง (ส่งเป็น JSON object; ถ้าไม่ใช่ object จะถูกละทิ้ง) - OPTIONAL
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/new-issue/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "ทดสอบการแจ้ง 2026-10-10",
    "category_name_th": "ความสะอาด",
    "photo_base64": [
        "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAC0CAMAAABBuyXtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTlGQUFDMjEwQzJEMTFFRTk2OTdFMjY4NkM5ODI5M0QiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTlGQUFDMjAwQzJEMTFFRTk2OTdFMjY4NkM5ODI5M0QiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkIxMTMwQzIwMEMyQzExRUVCNEQ1QUExM0M1RjExMEI2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkIxMTMwQzIxMEMyQzExRUVCNEQ1QUExM0M1RjExMEI2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ShfL/QAAAAxQTFRFcUcn/vz4/6gAnH9owsExJwAABNNJREFUeNrsnIGSsyoMhRPO+7/z/S2KIYQKVSA7V3Z2xlKVz0MSAlqJRQFoWQEkCQkoWlxgYC2HyhQjR1RCsB2LvBRILCJnXOSMauciP3YlucgdFVHE8ka1yUX+xNq4yJ9YbrH+QcEjFsb5ONxhwdMwmwUed4PHiQV3Du4Z65WrM8l8jf6vyrWJ5E8ubDD+5Iow3uTah2lvMeLoO1+9mLIHV3Kdpu7K6MVKi6c1l3MpyJFcyFbL0mIe4IVKhtTV64ycrTMSMTtYa8yplFzLbExRSaNfqFdBVcoFD1SlXPO7ka0CXY/1Uq23rhpVIRc8QJVGDxdU60LqV6hCLriAKuRyAqXkghssnooFcC2G1mMEZsiE7l6ctrzQJxeG9l41QbiSC3OMvFGu0RN/XOVTC+SCmeZ1yjUtn1orF+5gDZzJVrsHS2MEP9OLPAVreYyAT7ngVC5mlzHiMbmmqGXLhbMMlQvfuocUUTFsbXAjjB5tXvZl1Q8jjL4F63q973m5Lqy5cQlydi/23kmYIRc6zzLFFfsaeXwpfCO4CzVkymN1Jdrtfepa5CeML8fCA/Y1jgsubgQoLpgz2dVcVn+6eq7AJRa5hJJcvrDgnQsv11/m8uSOMnH3YvaII+JUd0zTzqKWjto9n5lqXvYTo0dihXO45qlmH6fnWq04KYYAkVhzHomK7W/y7Izx+bVPw3Gyus3dod1x/B2dNFEWv1CKIsZlUAIXrjkhQuLI9qLTnZ34kWn7X/KgRcRKViNs61CMlmJFBxRY0a4WYx19Jjxx3SiTYSHvxDTDWIRFCWL7uPcfJZvzVtjnb7vasR5/UBGy/NoUHo78eGh9YSwW3zmNP6wxauH4gye1Hpp7TMCC5YZGJT6JWotaQK9nX04HceTRqvVzx/SFOB/0drukFla5ZlR5oNSILlI2cW50epWBZTylaUc3cCtW92Ii7BMzp5uD2QwJ0Kz5XUQbS+2J7rhF2S0RKNTzADJ2rGOpS/kZC3Jqn7GcjUH7RBVrr/v8NQYkmA+i6ChZbYyasfpG3oI+r3gEi5dhkU+sPrXoJla/bdGlrj9G+aonWm6Pb1jW0bewzLhVj0bytjQbsS4fX/ETVjXK27Gb8yifIrq0o3PPrnDaNiZejHTHDlZl94ShI4P4nhfUso0fx+rv+RYMeDOLMhILEMxsoy0XRFMqWd0+doSoTnXyFOhKT9/ylre85Yg4eLE6sJy+usnr+7ccYvl8txviXTl/Yjl+QZ8zLpwvf3T3WBg5fK+LuxeLAsXbYeFGqvyltavBYL9LN/8Rxeyi5pLssrxYL9YfwgphLFbYStoqvgnG3v8qs2/0juJjeYY2rLOF/ORBFFEnvyp2LE55HtOJFXRrrK9Sbply6LogDwo/Y+1HZj2jdUuXUHY86/1CptFdtQJfYOn+Vaj8pFrJEIKFFfLa8/qt1gTqbdtKHRIMgwpKw9P8TDWVF9xSK11+A9YRGgpUNlBvqnU01obF2jksy3zAtjLX1lghWFgcyngZhqhlYylHUMazTC3DEczRxXSDR9SyQ3soYlApginMU2pVsLhUy3QOnqlWMKlDoRZPVcuqZTvwDlLL2jJrTbWG2RZ/jwBBBfRyQAr1bO1htcrv68oEM0G9oHpnPi/W/w3rPwEGAJgFLVXEhHMJAAAAAElFTkSuQmCC"
    ],
    "latitude": 14.077761473127232,
    "longitude": 100.60131479506877,
    "address": "112 ถนนพหลโ ยธิน ตำบล คลองหนึ่ง อำเภอคลองหลวง ปทุมธานี 12120",
    "subdistrict": "คลองหนึ่ง",
    "district": "คลองหลวง",
    "province": "ปทุมธานี"
}'
Response Example (200 OK)
Response (200 OK)
{
    "status": "success",
    "message": "",
    "exec_time": "5.433s",
    "credit_balance": 959,
    "api_log_session": 2106821134,
    "org_id": [
        151
    ],
    "api_log_session_id_new-issue": 2103774691,
    "results": {
        "ticket_id": "2026-ABCDEF",
        "password": "1234"
    }
}
JSON Output Parameters
ชื่อ คำอธิบาย ตัวอย่าง
status ผลการทำงาน: success / fail / warning success
message ข้อความอธิบายเพิ่มเติม (ไม่ว่างเมื่อ status เป็น fail หรือ warning) เช่น "Invalid latitude or longitude value | ...", "Duplicate of post #XXXXXX | แจ้งซ้ำกับหมายเลข #XXXXXX" ""
exec_time เวลาที่ใช้ประมวลผล (วินาที) 0.31s
credit_balance โควต้าคงเหลือ (null = ไม่จำกัด) 819
org_id รหัสหน่วยงานที่รับเรื่อง (Array of int) [151]
results ข้อมูลผลลัพธ์ (object) (Object)
* ข้อมูลที่อยู่ใน results
ticket_id หมายเลขเรื่องแจ้งที่สร้างขึ้นใหม่ (หรือหมายเลขเดิม หากตรวจพบว่าซ้ำ) 2026-ABCDEF
password รหัสผ่านสำหรับผู้แจ้งใช้ติดตามเรื่อง 5529
client_ticket_id สะท้อนค่า client_ticket_id กลับ — ปรากฏเฉพาะกรณีตรวจพบว่าแจ้งซ้ำ (ไม่ปรากฏในกรณีสร้างเรื่องแจ้งใหม่สำเร็จตามปกติ) EXT-2026-001
smsStatus สถานะการส่ง SMS แจ้งผู้แจ้ง ค่า "Y" เท่านั้น — ปรากฏเฉพาะเมื่อส่ง reporter_sms มา Y
emailStatus สถานะการส่งอีเมลแจ้งผู้แจ้ง ค่า "Y" เท่านั้น — ปรากฏเฉพาะเมื่อส่ง reporter_email มา Y
api_log_session หมายเลข API log session สำหรับ debug ร่วมกับทีม Traffy (สังเกตว่าไม่มี _id ต่อท้าย ต่างจาก API อื่นๆ) 1234567890
api_log_session_id_new-issue API log session ของการเรียก internal API new-issue/v1 ที่ทำงานจริงเบื้องหลัง — ปรากฏเมื่อ response จาก internal API มี api_log_session_id ส่งกลับมา (ไม่ว่าการเรียกนั้นจะสำเร็จหรือ error) 987654321
10. /update-issue อัปเดตสถานะเรื่องแจ้ง
PATCH https://publicapi.traffy.in.th/exchange-api/update-issue/v1 🛡️ Header: Bearer Token

ปรับปรุงสถานะการดำเนินงานของเรื่องแจ้ง พร้อมแนบภาพถ่ายผลงานและควบคุมการแจ้งเตือนผู้แจ้ง/เจ้าหน้าที่ — เลือกระบุสถานะได้ 1 ทาง (ตัวใหม่หรือตัวเดิม อย่างใดอย่างหนึ่ง ระบบจะแปลงตัวเดิมให้อัตโนมัติ)

Request Body (JSON)
Parameter Type คำอธิบาย ตัวอย่าง REQUIRED?
ticket_id / client_ticket_id string ระบุอย่างใดอย่างหนึ่งเพื่อระบุเรื่องแจ้ง (พร้อมกับหรือแทน message_id) 2026-ABCDEF REQUIRED*
message_id integer ระบุเรื่องแจ้งด้วยรหัสข้อความภายใน (ทางเลือกแทน ticket_id/client_ticket_id) 2162405 REQUIRED*
issue_status_id integer ใหม่ — เลือกสถานะกลางตรงๆ 5 OPTIONAL*
org_status_id int / null ใหม่ — เลือกสถานะ custom ของหน่วยงานตรงๆ (ส่ง null/""/"null" ได้ แต่ต้องไม่เป็น null หากใช้เป็นตัวเลือกหลัก) 1219411 OPTIONAL*
state_name string ใหม่ — เลือกสถานะจากชื่อ (จับคู่ได้ทั้งชื่อ custom ของหน่วยงานและชื่อกลาง) เสร็จสิ้น OPTIONAL*
status_id / state_id / org_state_id integer Legacy — ระบบแปลงเป็นค่าด้านบนให้อัตโนมัติ (*ต้องระบุอย่างน้อย 1 ใน 6 parameter สถานะนี้) 5 OPTIONAL*
note string บันทึกข้อความการดำเนินงาน เจ้าหน้าที่ซ่อมแซมเสร็จสิ้นแล้ว REQUIRED
org_id string รหัสหน่วยงาน 151 OPTIONAL
photo / photo_base64 array[str] / array[str] Array URL รูปภาพหลังแก้ไข หรือ Array รูปภาพแบบ Base64 (ทั้งสองต้องเป็น array แม้มีรูปเดียว) ["https://..."] OPTIONAL
photos array[obj] ใหม่ — ทางเลือกแทน photo ระบุ note แยกรายรูปได้ รูปแบบ {uri หรือ url, note} [{"url":"https://...","note":"เสร็จแล้ว"}] OPTIONAL
noti bool ใหม่ — Shorthand ตั้งค่าทั้ง noti_reporter/noti_staff พร้อมกัน true OPTIONAL
noti_reporter bool ใหม่ — แจ้งเตือนผู้แจ้ง (Default: true) true OPTIONAL
noti_staff bool ใหม่ — แจ้งเตือนเจ้าหน้าที่ (Default: true) true OPTIONAL
skip_timeline bool ใหม่ — ข้ามการบันทึกลง Timeline (Default: false) false OPTIONAL
extra_detail object ข้อมูลเสริมประกอบการอัปเดต (ส่งเป็น JSON object; ถ้าส่งเป็น string ที่ decode เป็น object ไม่ได้จะถูกละทิ้ง) - OPTIONAL
token_secret_key string ทางเลือกสำหรับยืนยันตัวตนแทน Bearer Token YOUR_SECRET_KEY OPTIONAL
cURL Example
curl -X PATCH "https://publicapi.traffy.in.th/exchange-api/update-issue/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ticket_id": "2026-ABCDEF",
    "state_name": "กำลังดำเนินการ",
    "note": "ทดลองปรับสถานะด้วย Exchange API",
    "photo_base64": [
        "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAC0CAMAAABBuyXtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTlGQUFDMjEwQzJEMTFFRTk2OTdFMjY4NkM5ODI5M0QiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTlGQUFDMjAwQzJEMTFFRTk2OTdFMjY4NkM5ODI5M0QiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkIxMTMwQzIwMEMyQzExRUVCNEQ1QUExM0M1RjExMEI2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkIxMTMwQzIxMEMyQzExRUVCNEQ1QUExM0M1RjExMEI2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ShfL/QAAAAxQTFRFcUcn/vz4/6gAnH9owsExJwAABNNJREFUeNrsnIGSsyoMhRPO+7/z/S2KIYQKVSA7V3Z2xlKVz0MSAlqJRQFoWQEkCQkoWlxgYC2HyhQjR1RCsB2LvBRILCJnXOSMauciP3YlucgdFVHE8ka1yUX+xNq4yJ9YbrH+QcEjFsb5ONxhwdMwmwUed4PHiQV3Du4Z65WrM8l8jf6vyrWJ5E8ubDD+5Iow3uTah2lvMeLoO1+9mLIHV3Kdpu7K6MVKi6c1l3MpyJFcyFbL0mIe4IVKhtTV64ycrTMSMTtYa8yplFzLbExRSaNfqFdBVcoFD1SlXPO7ka0CXY/1Uq23rhpVIRc8QJVGDxdU60LqV6hCLriAKuRyAqXkghssnooFcC2G1mMEZsiE7l6ctrzQJxeG9l41QbiSC3OMvFGu0RN/XOVTC+SCmeZ1yjUtn1orF+5gDZzJVrsHS2MEP9OLPAVreYyAT7ngVC5mlzHiMbmmqGXLhbMMlQvfuocUUTFsbXAjjB5tXvZl1Q8jjL4F63q973m5Lqy5cQlydi/23kmYIRc6zzLFFfsaeXwpfCO4CzVkymN1Jdrtfepa5CeML8fCA/Y1jgsubgQoLpgz2dVcVn+6eq7AJRa5hJJcvrDgnQsv11/m8uSOMnH3YvaII+JUd0zTzqKWjto9n5lqXvYTo0dihXO45qlmH6fnWq04KYYAkVhzHomK7W/y7Izx+bVPw3Gyus3dod1x/B2dNFEWv1CKIsZlUAIXrjkhQuLI9qLTnZ34kWn7X/KgRcRKViNs61CMlmJFBxRY0a4WYx19Jjxx3SiTYSHvxDTDWIRFCWL7uPcfJZvzVtjnb7vasR5/UBGy/NoUHo78eGh9YSwW3zmNP6wxauH4gye1Hpp7TMCC5YZGJT6JWotaQK9nX04HceTRqvVzx/SFOB/0drukFla5ZlR5oNSILlI2cW50epWBZTylaUc3cCtW92Ii7BMzp5uD2QwJ0Kz5XUQbS+2J7rhF2S0RKNTzADJ2rGOpS/kZC3Jqn7GcjUH7RBVrr/v8NQYkmA+i6ChZbYyasfpG3oI+r3gEi5dhkU+sPrXoJla/bdGlrj9G+aonWm6Pb1jW0bewzLhVj0bytjQbsS4fX/ETVjXK27Gb8yifIrq0o3PPrnDaNiZejHTHDlZl94ShI4P4nhfUso0fx+rv+RYMeDOLMhILEMxsoy0XRFMqWd0+doSoTnXyFOhKT9/ylre85Yg4eLE6sJy+usnr+7ccYvl8txviXTl/Yjl+QZ8zLpwvf3T3WBg5fK+LuxeLAsXbYeFGqvyltavBYL9LN/8Rxeyi5pLssrxYL9YfwgphLFbYStoqvgnG3v8qs2/0juJjeYY2rLOF/ORBFFEnvyp2LE55HtOJFXRrrK9Sbply6LogDwo/Y+1HZj2jdUuXUHY86/1CptFdtQJfYOn+Vaj8pFrJEIKFFfLa8/qt1gTqbdtKHRIMgwpKw9P8TDWVF9xSK11+A9YRGgpUNlBvqnU01obF2jksy3zAtjLX1lghWFgcyngZhqhlYylHUMazTC3DEczRxXSDR9SyQ3soYlApginMU2pVsLhUy3QOnqlWMKlDoRZPVcuqZTvwDlLL2jJrTbWG2RZ/jwBBBfRyQAr1bO1htcrv68oEM0G9oHpnPi/W/w3rPwEGAJgFLVXEhHMJAAAAAElFTkSuQmCC"
    ]
}'
Response Example (200 OK)
Response (200 OK)
{
    "status": "success",
    "message": "",
    "exec_time": "4.544s",
    "credit_balance": 958,
    "org_id": 151,
    "api_log_session_id": 1318057093,
    "source": "h db",
    "api_log_session_id_update_message": 7604078
}
JSON Output Parameters
ชื่อ คำอธิบาย ตัวอย่าง
status ผลการทำงาน: success / fail / warning success
message ข้อความอธิบายเพิ่มเติม (ไม่ว่างเมื่อ status เป็น fail หรือ warning) ""
exec_time เวลาที่ใช้ประมวลผล (วินาที) 0.22s
credit_balance โควต้าคงเหลือ (null = ไม่จำกัด) 819
org_id รหัสหน่วยงานที่ทำการอัปเดต (int ตัวเดียว ไม่ใช่ array) 151
api_log_session_id หมายเลข API log session สำหรับ debug ร่วมกับทีม Traffy 1234567890
source แหล่งข้อมูลของ org hierarchy lookup — h db เมื่อดึงสดจากฐานข้อมูล หรือ h cache <วันเวลาที่แคชถูกสร้าง> (expire Ns) เมื่อดึงจากแคช — ปรากฏเฉพาะเมื่อ account ตั้งค่า get_issue_org ไว้เท่านั้น h db
api_log_session_id_update_message API log session ของการเรียก internal API update_message/v2 ที่ทำงานจริงเบื้องหลัง — ปรากฏเมื่อ response จาก internal API มี api_log_session_id ส่งกลับมา (ไม่ว่าการเรียกนั้นจะสำเร็จหรือ error) 987654321
results ข้อมูลผลลัพธ์ (object) — ปรากฏเฉพาะเมื่อส่ง noti_reporter=true (หรือไม่ได้ส่ง noti/noti_reporter มาเลย ซึ่งมีค่าเริ่มต้นเป็น true) และ ticket มี reporter_sms/reporter_email บันทึกไว้อยู่แล้วในระบบ (ไม่ใช่ค่าที่ผู้เรียก API ส่งมาตอนนี้) (Object)
* ข้อมูลที่อยู่ใน results
smsStatus สถานะการส่ง SMS แจ้งผู้แจ้ง ค่า "Y" เท่านั้น — ปรากฏเฉพาะเมื่อ ticket มี reporter_sms บันทึกไว้อยู่แล้ว Y
emailStatus สถานะการส่งอีเมลแจ้งผู้แจ้ง ค่า "Y" เท่านั้น — ปรากฏเฉพาะเมื่อ ticket มี reporter_email บันทึกไว้อยู่แล้ว Y
11. /star ประเมินความพึงพอใจ (ดาว)
POST https://publicapi.traffy.in.th/exchange-api/star/v1 🛡️ Header: Bearer Token

บันทึกคะแนนดาวประเมินความพึงพอใจการแก้ไขปัญหา (1 ถึง 5 ดาว)

Request Body (JSON)
Parameter Type คำอธิบาย ตัวอย่าง REQUIRED?
star integer คะแนนความพึงพอใจ (1 - 5, โค้ดไม่ปฏิเสธค่า 0) 5 REQUIRED
ticket_id / client_ticket_id string ระบุอย่างใดอย่างหนึ่ง 2026-ABCDEF REQUIRED*
noti_reporter boolean แจ้งเตือนไปยังผู้แจ้งเรื่องหรือไม่ (ค่าเริ่มต้น: true) true OPTIONAL
noti_staff boolean แจ้งเตือนไปยังเจ้าหน้าที่หรือไม่ (ค่าเริ่มต้น: true) false OPTIONAL
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/star/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ticket_id": "2026-ABCDEF", "star": 5}'
Response Example (200 OK)
Response (200 OK)
{
    "status": "success",
    "message": "",
    "exec_time": "2.019s",
    "credit_balance": 955,
    "api_log_session_id": 1627013755,
    "api_log_session_id_star": 1876745266
}
JSON Output Parameters
ชื่อ คำอธิบาย ตัวอย่าง
status ผลการทำงาน: success / fail / warning success
message ข้อความอธิบายเพิ่มเติม (ไม่ว่างเมื่อ status เป็น fail หรือ warning) ""
exec_time เวลาที่ใช้ประมวลผล (วินาที) 0.04s
credit_balance โควต้าคงเหลือ (null = ไม่จำกัด) 819
api_log_session_id หมายเลข API log session สำหรับ debug ร่วมกับทีม Traffy (ไม่มี results object ใน response นี้) 1234567890
api_log_session_id_star API log session ของการเรียก internal API issue/star/v1 ที่ทำงานจริงเบื้องหลัง — ปรากฏเมื่อ response จาก internal API มี api_log_session_id ส่งกลับมา (ไม่ว่าการเรียกนั้นจะสำเร็จหรือ error) 987654321
12. /comment ส่งความเห็น / ข้อความแชต
POST https://publicapi.traffy.in.th/exchange-api/comment/v1 🛡️ Header: Bearer Token

ส่งความคิดเห็นหลังการประเมิน หรือส่งข้อความแชตไปยังผู้แจ้ง

Request Body (JSON)
Parameter Type คำอธิบาย ตัวอย่าง REQUIRED?
comment string ข้อความความคิดเห็น หรือข้อความสนทนา ขอบคุณสำหรับการแจ้งเหตุครับ REQUIRED
ticket_id / client_ticket_id string ระบุอย่างใดอย่างหนึ่ง 2026-ABCDEF REQUIRED*
comment_type string ค่าที่ส่งมาจะถูกส่งต่อไปยัง API ภายในตามที่ได้รับ โค้ดในไฟล์นี้ตรวจสอบเป็นพิเศษเฉพาะค่า comment เท่านั้น (ค่าอื่นๆ และ default หากไม่ส่งมา ขึ้นกับ API ภายในปลายทาง) comment OPTIONAL
base64comment string ข้อความความคิดเห็นแบบ Base64 4Kaq4Kaw... OPTIONAL
noti_reporter / noti_staff bool รับค่าไว้ แต่ในไฟล์นี้ไม่ได้ถูกส่งต่อหรือใช้งานที่ใดเลย (ปัจจุบันไม่มีผลต่อการทำงาน) true OPTIONAL
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/comment/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ticket_id": "2026-ABCDEF", "comment": "ขอบคุณสำหรับการแจ้งเหตุครับ", "comment_type": "comment"}'
Response Example (200 OK)
Response (200 OK)
{
    "status": "success",
    "message": "",
    "exec_time": "2.364s",
    "credit_balance": 954,
    "api_log_session_id": 318366603,
    "api_log_session_id_messagecomment": 214448439
}
JSON Output Parameters
ชื่อ คำอธิบาย ตัวอย่าง
status ผลการทำงาน: success / fail / warning success
message ข้อความอธิบายเพิ่มเติม (ไม่ว่างเมื่อ status เป็น fail หรือ warning) ""
exec_time เวลาที่ใช้ประมวลผล (วินาที) 0.10s
credit_balance โควต้าคงเหลือ (null = ไม่จำกัด) 819
api_log_session_id หมายเลข API log session สำหรับ debug ร่วมกับทีม Traffy (ไม่มี results object ใน response นี้) 1234567890
api_log_session_id_messagecomment API log session ของการเรียก internal API messagecomment ที่ทำงานจริงเบื้องหลัง — ปรากฏเมื่อการเรียกนั้นสำเร็จและส่ง api_log_session_id กลับมา 987654321
13. /join-forward เชิญร่วม & ส่งต่อเรื่องแจ้ง
POST https://publicapi.traffy.in.th/exchange-api/join-forward/v1 🛡️ Header: Bearer Token

เชิญหน่วยงานอื่นร่วมรับผิดชอบ หรือส่งต่อเรื่องแจ้งไปยังหน่วยงานปลายทางที่รับผิดชอบโดยตรง

Request Body (JSON)
Parameter Type คำอธิบาย ตัวอย่าง REQUIRED?
ticket_id / client_ticket_id / message_id string / integer ระบุอย่างใดอย่างหนึ่งเพื่อระบุเรื่องแจ้ง 2026-ABCDEF REQUIRED*
origin_group integer รหัสหน่วยงานต้นทาง (org_id) หากไม่ระบุจะใช้ค่า Default ของ Account โดยอัตโนมัติ 151 OPTIONAL
destination_group array[int] รหัสหน่วยงานปลายทางที่ต้องการส่งต่อ [151] OPTIONAL
scenario integer 1 = เชิญร่วม, 2 = ส่งต่อ 2 REQUIRED
note string ข้อความบันทึกการส่งต่อ ส่งต่อหน่วยงานที่รับผิดชอบโดยตรง OPTIONAL
noti bool Shorthand ตั้งค่าทั้ง noti_reporter/noti_staff true OPTIONAL
noti_staff bool แจ้งเตือนเจ้าหน้าที่ (Default: true) true OPTIONAL
noti_reporter bool แจ้งเตือนผู้แจ้ง (Default: true) true OPTIONAL
skip_timeline bool ข้ามการบันทึกลง Timeline (Default: false) false OPTIONAL
photo / photo_base64 string / string รูปภาพประกอบการส่งต่อ (ส่งได้เพียงรูปเดียว ไม่ใช่ array) "https://..." OPTIONAL
recursive_counter / timestamp / use_admin int / string / bool พารามิเตอร์ภายในสำหรับการควบคุมการส่งต่อซ้ำและสิทธิ์ Admin - OPTIONAL
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/join-forward/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ticket_id": "2026-ABCDEF",
    "destination_group": [1302],
    "scenario": 2,
    "note": "ทดสอบส่งต่อ"
}'
Response Example (200 OK)
Response (200 OK)
{
    "status": "success",
    "message": "",
    "exec_time": "3.81s",
    "credit_balance": 953,
    "api_log_session_id": 197816176,
    "api_log_session_id_join_forward": 1289237601,
    "results": []
}
JSON Output Parameters
ชื่อ คำอธิบาย ตัวอย่าง
status ผลการทำงาน: success / fail / warning success
message ข้อความอธิบายเพิ่มเติม (ไม่ว่างเมื่อ status เป็น fail หรือ warning) เช่น "Error calling API join_forward : ..." ""
exec_time เวลาที่ใช้ประมวลผล (วินาที) 0.18s
credit_balance โควต้าคงเหลือ (null = ไม่จำกัด) 819
results ส่งผ่านมาจาก internal API join_forward โดยตรง (ไม่มีสัญญา (contract) ที่ตายตัวเปิดเผยต่อสาธารณะ) — ไม่ปรากฏ key นี้เสมอไป (Object, ไม่แน่นอน)
api_log_session_id หมายเลข API log session สำหรับ debug ร่วมกับทีม Traffy 1234567890
api_log_session_id_join_forward API log session ของการเรียก internal API join_forward ที่ทำงานจริงเบื้องหลัง (มีประโยชน์เวลาแจ้งทีม Traffy ตรวจสอบปัญหา) 987654321
4

การส่งข้อมูลแบบ Real-time (Webhooks)

ระบบ Traffy Fondue ยิงข้อมูล Event ไปยัง Endpoint ปลายทางของหน่วยงานท่านทันที

14. Webhook รับเคสใหม่ (เมื่อมีเรื่องแจ้งเข้ามาใหม่)
POST (Webhook) Client Webhook URL ⚡ Non-Quota

ระบบ Traffy Fondue ส่งข้อมูลเคสใหม่ พิกัด GPS รูปภาพ และหมวดหมู่ปัญหา แบบ HTTP POST ทันทีเมื่อมีเรื่องแจ้งใหม่เข้ามาในหน่วยงาน

หมายเหตุ: ห้ามส่งเรื่องแจ้งใหม่ที่ได้รับมาจาก Traffy Fondue webhook วนกลับมาที่ API new-issue เพื่อป้องกันการเกิด loop

Incoming Payload (JSON)
Field Type คำอธิบาย
event string ประเภทของข้อความ
ticket_id string หมายเลขเรื่องแจ้งในระบบ Fondue
description string ข้อความรายละเอียดปัญหา
latitude / longitude number พิกัด GPS (WGS84)
photo array[str] ลิงก์ภาพประกอบการแจ้ง
orgs array[obj] หน่วยงานที่รับผิดชอบ
Incoming Payload Sample (POST)
{
  "event": "new-issue",
  "timestamp": "2026-10-10 19:19:37.389642",
  "ticket_id": "2026-ABCDEF",
  "description": "ทดสอบแจ้งเข้าหน่วยงาน 2026-10-10",
  "type": "อื่นๆ",
  "type_en": "Other",
  "issue_category_id": 12,
  "org_category_id": null,
  "status": "รอรับเรื่อง",
  "status_en": "Open",
  "is_follow": false,
  "is_forward": false,
  "issue_status_id": 1,
  "org_status_id": null,
  "status_type": "start",
  "photo": "https://storage.googleapis.com/traffy_public_bucket/attachment/2026-10/7f3358882698a7d4f1d23d93be009ab2.jpeg",
  "latitude": "14.077771879738362",
  "longitude": "100.60131479546563",
  "address": "112 ถนนพหลโ ยธิน ตำบล คลองหนึ่ง อำเภอคลองหลวง ปทุมธานี 12120",
  "orgs": [
    {
      "org": "Traffy @ ITS Lab2",
      "org_id": 151
    }
  ]
}
15. Webhook รับอัปเดตสถานะ (เมื่อมีการอัปเดตสถานะ)
PATCH (Webhook) Client Webhook URL ⚡ Non-Quota

ระบบ Traffy Fondue ส่งข้อมูลการอัปเดตสถานะ บันทึกการปฏิบัติงาน และภาพถ่ายผลงาน แบบ HTTP PATCH ทันทีที่มีการเปลี่ยนสถานะ

หมายเหตุ: ห้ามส่งการอัปเดตที่ได้รับมาจาก Traffy Fondue webhook วนกลับมาที่ API update-issue เพื่อป้องกันการเกิด loop

Incoming Payload (JSON)
Field Type คำอธิบาย
event string ประเภทของข้อความ
ticket_id string หมายเลขเรื่องแจ้ง Fondue
status string สถานะที่อัปเดต เช่น เสร็จสิ้น
note string คำอธิบายประกอบการอัปเดต
photo array[str] ภาพถ่ายหลังการแก้ไข (ถ้าไม่มีการแนบรูป จะเป็น null)
tl_org_id integer หมายเลขหน่วยงานผู้ดำเนินการ
tl_org string ชื่อหน่วยงานผู้ดำเนินการ
tl_status string สถานะที่ถูกบันทึกลง time line (รวมถึง "ติดตามเรื่อง" และ "ส่งต่อ" ด้วย)
Incoming Payload Sample (PATCH)
{
  "event": "update-issue",
  "timestamp": "2026-10-10 18:00:05.753977+0700",
  "ticket_id": "2026-ABCDEF",
  "client_ticket_id": null,
  "status": "กำลังดำเนินการ",
  "status_en": "In Progress",
  "status_type": "inprogress",
  "is_follow": false,
  "is_forward": false,
  "issue_status_id": 2,
  "org_status_id": null,
  "tl_org_id": 151,
  "tl_org": "Traffy @ ITS Lab2",
  "tl_status": "กำลังดำเนินการ",
  "note": "ทดสอบปรับสถานะ",
  "photo": [
    "https://storage.googleapis.com/traffy_public_bucket/attachment/2026-10/5b2aeca91541bff9d5515e6bb194f40a.jpg"
  ]
}
16. Webhook รับความคิดเห็นและแชท (เมื่อมีการแสดงความคิดเห็นหรือแชท)
POST (Webhook) Client Webhook URL ⚡ Non-Quota

ระบบ Traffy Fondue ส่งข้อมูลความคิดเห็น แชท หรือการให้คะแนนแบบ HTTP POST ทันทีที่มีเหตุการณ์เกิดขึ้น

หมายเหตุ: ห้ามส่งการแสดงความคิดเห็นที่ได้รับมาจาก Traffy Fondue webhook วนกลับมาที่ API messagecomment เพื่อป้องกันการเกิด loop

Incoming Payload (JSON)
Field Type คำอธิบาย
event string ประเภทของเหตุการณ์ เช่น chat, rating, comment, chat_staff_only
message_comment_id integer รหัสความคิดเห็นในระบบ
message_id integer รหัสข้อความในระบบ
ticket_id string หมายเลขเรื่องแจ้ง Fondue
comment string ข้อความแสดงความคิดเห็น
timestamp string วันเวลาที่มีการแสดงความคิดเห็น
sender_org_id integer รหัสหน่วยงานผู้ส่ง (ถ้ามี)
sender_org string ชื่อหน่วยงานผู้ส่ง (ถ้ามี)
sender_user_id integer รหัสผู้ใช้งานผู้ส่ง
sender_username string ชื่อผู้ใช้งานผู้ส่ง
Incoming Payload Sample (POST)
{
  "event": "chat",
  "message_comment_id": 12345678,
  "message_id": 1234567,
  "ticket_id": "2026-ABCDEF",
  "comment": "ทดสอบส่งข้อความจากเจ้าหน้าที่",
  "timestamp": "2026-09-17 15:13:57.662001",
  "sender_org_id": 151,
  "sender_org": "Traffy @ ITS Lab2",
  "sender_user_id": 1234,
  "sender_username": "Traffy staff"
}
5

รหัสข้อผิดพลาดและการแก้ปัญหา (Error Codes)

รายการ Error Message ที่พบบ่อย พร้อมสาเหตุและแนวทางการแก้ไข

Error Message สาเหตุ แนวทางแก้ไข
Invalid user or pass Username หรือ Password ไม่ถูกต้อง ตรวจสอบข้อมูลใน Email ที่ได้รับแจ้งจากทีมงาน
This token has expired JWT Token หมดอายุ เรียก API /get-auth/v1 เพื่อขอรับ Token ชุดใหม่
ERR 1 - Invalid token Token ไม่ถูกต้อง หรือไม่ได้แนบ Header ตรวจสอบ Header: Authorization: Bearer <token>
Running out of API usage quota โควต้าประจำเดือนหมด ติดต่อขอเพิ่มโควต้าผ่านทาง LINE: @fonduehelp
Invalid input JSON format Body ไม่ได้อยู่ในรูปแบบ JSON ที่ถูกต้อง ตรวจสอบ Syntax ของ JSON Payload
[Parameter] is not specified ขาดพารามิเตอร์บังคับ (Required) ตรวจสอบว่าได้ส่งฟิลด์ดังกล่าวมาครบถ้วน
6

ประวัติการเปลี่ยนแปลง (Change Log)

บันทึกประวัติการปรับปรุงและอัปเดตเวอร์ชันของ Exchange API

2026-09-26

v2 Release
  • เปลี่ยนไปใช้ API get-type-list/v2 และ get-status-list/v2
  • ปรับปรุง API get-issues และ download-issues ให้รองรับ parameter type_name_th (และ alias), issue_category_id, org_category_id, is_follow, is_forward และ เพิ่มตัวเลือก 3days สำหรับ parameter duration