API สอบถามการวิเคราะห์ให้คุณสอบถามเกี่ยวกับเมตริกประสบการณ์ที่รวมกันในช่วงวันที่กำหนด API นี้รองรับ:
- การสอบถามจำนวนผู้ใช้งานรายวัน (DAU), รายได้, การรักษา และเมตริกอื่น ๆ สำหรับประสบการณ์ของคุณ
- การกรองและจัดกลุ่มผลลัพธ์ตามมิติต่าง ๆ เช่น แพลตฟอร์ม, ประเทศ และกลุ่มอายุ
- การจัดการคำขอที่ช้าโดยอัตโนมัติในฐานะการดำเนินการที่ใช้เวลานานซึ่งคุณสามารถตรวจสอบผลลัพธ์ได้
ก่อนที่จะใช้ API นี้ คุณต้อง สร้างคีย์ API สำหรับประสบการณ์ของคุณ เมื่อสร้างคีย์ ให้เพิ่มประสบการณ์ของคุณใน สิทธิ์ในการเข้าถึง และมอบสิทธิ์การเข้าถึงการดำเนินการ universe.analytics:read ภายในระบบ universe-analytics รวมคีย์ในหัวข้อการร้องขอ x-api-key ในทุกคำขอ
เอ็นพอยต์ทั้งหมดใช้หมายเลข ID ของจักรวาลของคุณ ซึ่งคุณสามารถค้นหาได้จาก Creator Dashboard โดยการเลือกประสบการณ์ของคุณและคัดลอก หมายเลข ID ของจักรวาล จากหน้าภาพรวม
สอบถามเมตริก
เพื่อสอบถามเมตริกสำหรับประสบการณ์ของคุณ:
- คัดลอกคีย์ API ไปยังหัวข้อการร้องขอ x-api-key
- แทนที่ ${UniverseId} ใน URL ด้วยหมายเลข ID ของจักรวาลของประสบการณ์ของคุณ
- ตั้งค่า metric เป็นเมตริกที่คุณต้องการสอบถาม เช่น DailyActiveUsers
- ตั้งค่า startTime และ endTime เป็นช่วงวันที่ที่คุณต้องการ โดยใช้แท็กเวลาของ RFC 3339 UTC
- ส่งคำขอ
สอบถามจำนวนผู้ใช้งานรายวันcurl --location 'https://apis.roblox.com/analytics-query-api/v1/universes/${UniverseId}/metrics' \--header 'x-api-key: ${ApiKey}' \--header 'Content-Type: application/json' \--data '{"metric": "DailyActiveUsers","granularity": "OneDay","startTime": "2026-01-01T00:00:00Z","endTime": "2026-02-01T00:00:00Z"}'
คำร้องส่วนใหญ่จะเสร็จสิ้นทันทีและคืนค่า 200 OK:
ผลลัพธ์ (200 OK)
{
"path": "v1/universes/1234567890/operations/metrics/abc123",
"done": true,
"metadata": {
"createdTime": "2026-01-15T00:00:00Z"
},
"response": {
"values": [
{
"breakdowns": [],
"dataPoints": [
{ "time": "2026-01-01T00:00:00Z", "value": 10000 },
{ "time": "2026-01-02T00:00:00Z", "value": 10500 }
]
}
]
}
}
สำหรับช่วงวันที่ใหญ่ API อาจส่งคืน 202 Accepted พร้อมกับ "done": false ดู การดำเนินการที่ใช้เวลานาน
ฟิลด์เนื้อหาคำขอ
| ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| metric | string | ใช่ | เมตริกที่ต้องการสอบถาม เช่น DailyActiveUsers สำหรับรายการเต็ม ดู เมตริกที่รองรับ |
| granularity | string | ใช่ | ขนาดเวลาสำหรับแต่ละจุดข้อมูล ดู ตัวเลือกความละเอียด |
| startTime | string | ใช่ | จุดเริ่มต้นของหน้าต่างการสอบถาม เป็นแท็กเวลาของ RFC 3339 รวมถึง ยอมรับการเปลี่ยนแปลง UTC ทุกประเภท ผลลัพธ์จะถูกจัดกลุ่มใน UTC เสมอ |
| endTime | string | ใช่ | จุดสิ้นสุดของหน้าต่างการสอบถาม เป็นแท็กเวลาของ RFC 3339 ไม่รวมอยู่ ตัวอย่างเช่น "2026-02-01T00:00:00Z" รวมข้อมูลถึงวันที่ 31 มกราคม |
| breakdown | string[] | ไม่ | มิติต่าง ๆ ที่จะจัดกลุ่มผลลัพธ์โดยแต่ละช่องคือชื่อมิติ เช่น "Platform" ละเว้นเพื่อไม่ให้มีการจัดกลุ่มดู ใช้การจัดกลุ่ม |
| filter | object[] | ไม่ | ตัวกรองเพื่อลดผลลัพธ์ให้อยู่ในค่ามิติที่เฉพาะเจาะจง แต่ละรายการมี dimension, values, และ operation ละเว้นเพื่อไม่ให้มีการกรอง ดู กรองผลลัพธ์ |
| limit | integer | ไม่ | จำนวนสูงสุดของชุดแบ่งที่ต้องส่งกลับ ซึ่งจัดอันดับตามมูลค่าเมตริกทั้งหมดในลำดับที่ลดลง รองรับเฉพาะเมื่อ granularity เป็น "None" และ breakdown ถูกตั้งค่า หากละเว้นฟิลด์นี้หรือกำหนดค่าเป็น 0 จะใช้ค่าสูงสุดที่ขึ้นอยู่กับเมตริก |
startTime ที่เร็วที่สุดที่คุณสามารถใช้ได้ขึ้นอยู่กับประเภทของเมตริก:
- เมตริกมาตรฐาน (การมีส่วนร่วม, การสร้างรายได้, การจัดหา, การรักษา): ประวัติสูงสุด 4 ปี
- เมตริกด้านประสิทธิภาพ (อัตราการล้มเหลว, อัตราเฟรม ฯลฯ): ประวัติสูงสุด 28 วัน
การสอบถามข้ามระยะเวลาการเก็บข้อมูลจะส่งคืนข้อผิดพลาด 400 รหัส 2001
การดำเนินการที่ใช้เวลานาน
คำร้องส่วนใหญ่จะเสร็จสิ้นทันทีและคืนค่า 200 OK พร้อมกับ "done": true สำหรับคำร้องที่มีช่วงวันที่ใหญ่หรือมีหลายชุดแบ่ง API คืนค่า 202 Accepted พร้อมกับ "done": false และ path เพื่อให้ตรวจสอบได้
รอดำเนินการ (202):
{
"path": "path/to/poll",
"done": false,
"metadata": {
"createdTime": "2026-01-15T00:00:00Z"
}
}
เมื่อ done เป็น false ให้ส่งคำขอ GET ไปที่ https://apis.roblox.com/analytics-query-api/{path} — แทนที่ {path} ด้วยค่า path จากผลลัพธ์ — โดยใช้หัวข้อ x-api-key เดิม ซ้ำจนกว่า done จะเป็น true
เสร็จสิ้น (200):
{
"path": "path/to/poll",
"done": true,
"metadata": {
"createdTime": "2026-01-15T00:00:00Z"
},
"response": {
"values": [
{
"breakdowns": [],
"dataPoints": [
{
"time": "2026-01-01T00:00:00Z",
"value": 10000
}
]
}
]
}
}
อาร์เรย์ breakdowns ที่ว่างเปล่าบ่งชี้ว่าไม่มีการร้องขอการแบ่งกลุ่ม เมื่ใช้การแบ่งกลุ่มจะมีรายการใน response.values สำหรับมิติหนึ่งค่าดู ใช้การจัดกลุ่ม
เมื่อการดำเนินการล้มเหลว ร่างของคำตอบจะมี error แทน response:
{
"path": "path/to/poll",
"done": true,
"metadata": {
"createdTime": "2026-01-15T00:00:00Z"
},
"error": {
"code": 2001,
"message": "ความละเอียดที่ขอไม่ได้รับการสนับสนุนสำหรับเมตริกนี้"
}
}
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
| path | string | เส้นทางการดำเนินการตรงกับค่าที่ได้รับในผลลัพธ์เบื้องต้น |
| done | boolean | เสมอเป็น true เมื่อมีข้อผิดพลาดเกิดขึ้น |
| metadata.createdTime | string | แท็กเวลาของ RFC 3339 เมื่อการดำเนินการถูกสร้างขึ้น |
| error.code | integer | รหัสข้อผิดพลาดเชิงตัวเลข ดู ข้อผิดพลาดทั่วไป |
| error.message | string | คำอธิบายที่อ่านได้ง่ายเกี่ยวกับข้อผิดพลาด |
แต่ละรายการใน response.values แทนซีรีส์หนึ่งซีรีส์หนึ่งต่อค่ามิติเมื่อมีการจัดกลุ่ม หรือรายการเดียวกับ breakdowns: [] เมื่อไม่มีการร้องขอการจัดกลุ่ม แต่ละจุดข้อมูลใน dataPoints จะมี:
| ฟิลด์ | คำอธิบาย |
|---|---|
| time | แท็กเวลาของ UTC สำหรับจุดเริ่มต้นของขนาดเวลาที่กำหนด |
| value | มูลค่าเมตริกเชิงตัวเลข |
| stringValues | ค่าข้อความสำหรับจุดข้อมูลในรูปแบบของอาร์เรย์สตริง มีเพียงเบนการแสดงค่าแบบข้อความเท่านั้น ดู เมตริกค่าข้อความ ด้านล่าง |
| status | ตัวบ่งชี้สถานะสำหรับจุดข้อมูล ถูกละเว้นเมื่อไม่มีสถานะที่ใช้ได้สำหรับซีรีส์ ดู สถานะจุดข้อมูล ด้านล่าง |
เมตริกค่าข้อความ
เมตริกส่วนใหญ่เป็นตัวเลขและรายงานผลลัพธ์ใน value เมตริกบางประเภทจะอธิบายแต่ละจุดข้อมูลด้วยข้อความแทนที่จะเป็นตัวเลข สำหรับสิ่งเหล่านี้ ข้อมูลจะถูกส่งกลับในอาร์เรย์ stringValues และ value ไม่มีความหมาย ฟิลด์ stringValues ถูกละเว้นโดยสิ้นเชิงสำหรับเมตริกเชิงตัวเลข
ตัวอย่างเช่น ThumbnailWinningSegments รายงานส่วนที่ชนะในรูปภาพขนาดเล็กสำหรับแต่ละขนาดเวลาที่เป็นรายการของสตริง:
{
"time": "2026-01-01T00:00:00Z",
"value": 0,
"stringValues": ["TopEngagement", "HighCTR"]
}
สถานะจุดข้อมูล
| สถานะ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| Valid | จุดข้อมูลครบถ้วนและครอบคลุมช่วงเวลาทั้งหมด | การจ่ายรางวัลผู้สร้างที่เสร็จสมบูรณ์ |
| Projected | มูลค่าเป็นการประมาณและอาจเปลี่ยนแปลงได้ | การประมาณการจ่ายรางวัลผู้สร้างสำหรับช่วงเวลาที่ยังไม่ได้เสร็จสิ้น |
| NotStatisticallySignificant | ขนาดของตัวอย่างไม่เพียงพอในการผลิตมูลค่าที่เชื่อถือได้ | อัตราการล้มเหลวสำหรับประเทศขนาดเล็กซึ่งมูลค่าที่มีเสียงดังอาจถูกเข้าใจผิดว่าเป็นการถดถอยที่แท้จริง |
ตัวเลือกความละเอียด
ฟิลด์ granularity ควบคุมขนาดของแต่ละขนาดเวลาในผลลัพธ์ ขอบเขตของบอลลูนจะถูกจัดเรียงตาม UTC ตัวอย่างเช่น บอลลูน OneDay จะทำงานตั้งแต่เที่ยงคืน UTC ถึงเที่ยงคืน UTC ดังนั้นการเปลี่ยนแปลง UTC ใด ๆ ใน startTime หรือ endTime จะถูกปรับให้เป็น UTC ก่อนที่จะจัดกลุ่ม
ไม่ใช่ทุกเมตริกรองรับความละเอียดทุกระดับ ดู เมตริกที่รองรับ สำหรับรายละเอียด
| ความละเอียด | คำอธิบาย | หมายเหตุ |
|---|---|---|
| OneMinute | บอลลูน 1 นาที | เมตริกด้านประสิทธิภาพเท่านั้น |
| HalfHour | บอลลูน 30 นาที | เมตริกด้านประสิทธิภาพเท่านั้น |
| OneHour | บอลลูน 1 ชั่วโมง | เมตริกด้านประสิทธิภาพ รวมถึงบางเมตริกด้านการสร้างรายได้และเหตุการณ์แนะนำ |
| OneDay | บอลลูน 1 วัน | รองรับโดยเมตริกทั้งหมด |
| OneWeek | บอลลูน 1 สัปดาห์ | เมตริกด้านการมีส่วนร่วม, การสร้างรายได้ และการจัดหา ส่วนใหญ่ |
| OneMonth | บอลลูน 1 เดือน | เมตริกด้านการมีส่วนร่วม, การสร้างรายได้ และการจัดหา ส่วนใหญ่ |
| None | จุดข้อมูลเดียวสำหรับช่วงเวลาทั้งหมด | เมตริกด้านการมีส่วนร่วม, การสร้างรายได้ และการจัดหา ส่วนใหญ่ |
ใช้การจัดกลุ่ม
ไม่ใช่ทุกเมตริกรองรับการจัดกลุ่มทุกแบบ ดู เมตริกที่รองรับ สำหรับการจัดกลุ่มที่มีอยู่สำหรับแต่ละเมตริก
การจัดกลุ่มจะจัดกลุ่มผลลัพธ์ของเมตริกตามมิติ โดยคืนซีรีส์หนึ่งซีรีส์สำหรับแต่ละค่ามิติที่ไม่ซ้ำกัน เพิ่มอาร์เรย์ breakdown ซึ่งประกอบไปด้วยชื่อมิติหนึ่งหรือหลายชื่อไปยังคำขอของคุณ
สอบถามรายได้โดยแยกตามแพลตฟอร์มcurl --location 'https://apis.roblox.com/analytics-query-api/v1/universes/${UniverseId}/metrics' \--header 'x-api-key: ${ApiKey}' \--header 'Content-Type: application/json' \--data '{"metric": "DailyRevenue","granularity": "OneDay","breakdown": ["Platform"],"startTime": "2026-01-01T00:00:00Z","endTime": "2026-02-01T00:00:00Z"}'
แต่ละรายการใน response.values รวมถึงอาร์เรย์ breakdowns ที่ระบุค่ามิติสำหรับซีรีส์นั้น:
{
"response": {
"values": [
{
"breakdowns": [{ "dimension": "Platform", "value": "Computer" }],
"dataPoints": [{ "time": "2026-01-01T00:00:00Z", "value": 8200 }]
},
{
"breakdowns": [{ "dimension": "Platform", "value": "Phone" }],
"dataPoints": [{ "time": "2026-01-01T00:00:00Z", "value": 3400 }]
}
]
}
}
แต่ละวัตถุใน breakdowns จะมี:
| ฟิลด์ | คำอธิบาย |
|---|---|
| dimension | ชื่อมิติที่ตรงกันกับรายการในฟิลด์คำขอ breakdown |
| value | ค่ามิติที่เป็นดิบ ใช้สิ่งนี้เมื่อสร้างคำร้องขอ filter |
| displayValue | ป้ายชื่อที่อ่านได้ง่ายสำหรับค่ามิติ ถูกละเว้นเมื่อไม่มีป้ายชื่อแสดงอยู่ อาจแตกต่างจาก value สำหรับมิติ เช่น ID ผลิตภัณฑ์หรือชื่อขั้นตอนในช่องทาง |
กรองผลลัพธ์
ตัวกรองลดผลลัพธ์ของการสอบถามให้อยู่ในค่ามิติที่เฉพาะเจาะจง เพิ่มอาร์เรย์ filter ไปยังคำขอของคุณซึ่งแต่ละรายการระบุ dimension, values ที่จะตรงกัน และ operation ที่จะใช้
สอบถาม DAU สำหรับอุปกรณ์มือถือเท่านั้นcurl --location 'https://apis.roblox.com/analytics-query-api/v1/universes/${UniverseId}/metrics' \--header 'x-api-key: ${ApiKey}' \--header 'Content-Type: application/json' \--data '{"metric": "DailyActiveUsers","granularity": "OneDay","filter": [{"dimension": "Platform","values": ["Phone", "Tablet"],"operation": "In"}],"startTime": "2026-01-01T00:00:00Z","endTime": "2026-02-01T00:00:00Z"}'
การดำเนินการกรอง
| การดำเนินการ | คำอธิบาย |
|---|---|
| In | รวมผลลัพธ์ที่ค่ามิติอยู่ในชุดที่ให้ไว้ |
| NotIn | ไม่รวมผลลัพธ์ที่ค่ามิติอยู่ในชุดที่ให้ไว้ |
| GreaterThan | รวมผลลัพธ์ที่ค่ามิติเป็นตัวเลขมากกว่าค่าที่ให้ไว้ |
| GreaterThanOrEqual | รวมผลลัพธ์ที่ค่ามิติเป็นตัวเลขมากกว่าหรือเท่ากับค่าที่ให้ไว้ |
| LessThan | รวมผลลัพธ์ที่ค่ามิติเป็นตัวเลขน้อยกว่าค่าที่ให้ไว้ |
| LessThanOrEqual | รวมผลลัพธ์ที่ค่ามิติเป็นตัวเลขน้อยกว่าหรือเท่ากับค่าที่ให้ไว้ |
| Match | รวมผลลัพธ์ที่ค่ามิติตรงกับรูปแบบสตริงที่ให้ไว้ |
คุณสามารถรวมฟิลเตอร์กับการจัดกลุ่มในคำขอเดียวกันได้
ค้นหาค่ามิติ
เอ็นพอยต์ค่ามิติคือรายการค่าที่มีอยู่สำหรับหนึ่งหรือหลายมิติของเมตริกตามช่วงวันที่ โดยไม่คำนวณเมตริกเอง ใช้เพื่อค้นหาค่าที่ถูกต้องสำหรับคำขอ filter และ breakdown — ตัวอย่างเช่น ประเทศ, รหัสผลิตภัณฑ์ หรือหมายเลข ID ขั้นตอนในช่องทาง
เพื่อสอบถามค่ามิติสำหรับประสบการณ์ของคุณ:
- คัดลอกคีย์ API ไปยังหัวข้อการร้องขอ x-api-key
- แทนที่ ${UniverseId} ใน URL ด้วยหมายเลข ID ของจักรวาลของประสบการณ์ของคุณ
- ตั้งค่า metric เป็นเมตริกที่จะให้บริบทสำหรับมิติ
- ตั้งค่า dimensions เป็นชื่อมิติที่คุณต้องการค่า
- ตั้งค่า startTime และ endTime ให้เป็นช่วงวันที่ที่คุณต้องการ โดยใช้แท็กเวลาของ RFC 3339 UTC
- ส่งคำขอ
ค้นหาค่าประเทศสำหรับ DAUcurl --location 'https://apis.roblox.com/analytics-query-api/v1/universes/${UniverseId}/dimension-values' \--header 'x-api-key: ${ApiKey}' \--header 'Content-Type: application/json' \--data '{"metric": "DailyActiveUsers","dimensions": ["Country"],"startTime": "2026-01-01T00:00:00Z","endTime": "2026-02-01T00:00:00Z"}'
ฟิลด์เนื้อหาคำขอ
| ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| metric | string | ใช่ | เมตริกที่มิติจะถูกแก้ไข ให้บริบทของชื่อเนมสเปซสำหรับการค้นหามิติ |
| dimensions | string[] | ใช่ | ชื่อมิติที่ต้องการดึงค่าข้อมูล สำหรับแต่ละรายการจะเป็นชื่อมิติเดียว เช่น "Country" |
| startTime | string | ใช่ | จุดเริ่มต้นของหน้าต่างการสอบถาม เป็นแท็กเวลาของ RFC 3339 รวมถึง ยอมรับการเปลี่ยนแปลง UTC ทุกประเภท ผลลัพธ์จะถูกจัดกลุ่มใน UTC เสมอ |
| endTime | string | ใช่ | จุดสิ้นสุดของหน้าต่างการสอบถาม เป็นแท็กเวลาของ RFC 3339 ไม่รวมอยู่ ตัวอย่างเช่น "2026-02-01T00:00:00Z" รวมข้อมูลถึงวันที่ 31 มกราคม |
| filter | object[] | ไม่ | ตัวกรองเพื่อลดผลลัพธ์ให้อยู่ในค่ามิติที่เฉพาะเจาะจง แต่ละรายการมี dimension, values, และ operation ละเว้นเพื่อไม่ให้มีการกรอง ดู กรองผลลัพธ์ |
| granularity | string | ไม่ | ขนาดเวลาของชิ้น ขนาดของชิ้นนี้เป็นออฟชั่นสำหรับจุดสิ้นสุด เมื่อเปรียบเทียบกับค่าใน metrics ดู ตัวเลือกความละเอียด |
| limit | integer | ไม่ | จำนวนสูงสุดของค่าที่จะส่งคืนต่อมิติ โดยเรียงลำดับตามมูลค่าเมตริกทั้งหมดที่ลดลง รองรับเฉพาะเมื่อ granularity ถูกละเว้นหรือเป็น "None" การละเว้นฟิลด์นี้หรือกำนหนดเป็น 0 จะใช้ค่าควบคุมที่ขึ้นอยู่กับเมตริกอย่างเหมาะสม |
คำร้องส่วนใหญ่จะเสร็จสิ้นทันทีและคืนค่า 200 OK พร้อมกับ "done": true สำหรับคำร้องที่มีช่วงวันที่ใหญ่ API คืนค่า 202 Accepted พร้อมกับ "done": false และ path เพื่อให้ตรวจสอบได้ ดู การดำเนินการที่ใช้เวลานาน สำหรับกระบวนการตรวจสอบ ในการตรวจสอบ ใช้ค่า path จากผลลัพธ์ — จะชี้ไปที่ v1/universes/{universeId}/operations/dimension-values/{operationId} ซึ่งแตกต่างจากเส้นทางตรวจสอบเมตริก
เสร็จสิ้น (200):
{
"path": "path/to/poll",
"done": true,
"metadata": {
"createdTime": "2026-01-15T00:00:00Z"
},
"response": {
"values": [
{
"dimension": "Country",
"values": [{ "value": "US" }, { "value": "GB" }]
}
]
}
}
แต่ละรายการใน response.values แทนมิติที่ร้องขอแต่ละตัว แต่ละวัตถุภายใน values ประกอบด้วย:
| ฟิลด์ | คำอธิบาย |
|---|---|
| value | ค่ามิติที่เป็นดิบ ใช้สิ่งนี้เมื่อสร้างคำร้องขอ filter |
| displayValue | ป้ายชื่อที่อ่านได้ง่ายสำหรับค่ามิติ อาจไม่มีอยู่สำหรับมิติประเภท ID เช่นรหัสผลิตภัณฑ์ จะไม่มีเมื่อทำการร้องขอด้วยมิติที่ส่วนใหญ่ เช่น "Country" อาจแตกต่างกันระหว่าง value สำหรับมิติที่มี ID หรือชื่อขั้นตอนในช่องทาง |
ข้อผิดพลาดใช้ done: true และโครงสร้าง error เช่นเดียวกับในการเปิดเมตริก มิติที่ไม่ได้รับการสนับสนุนสำหรับเมตริกที่ระบุจะส่งคืน 400 พร้อมรหัส 2001 ดู ข้อผิดพลาดทั่วไป
คำร้องทั่วไป
ตัวอย่างต่อไปนี้แสดงคำร้องทั่วไป รวมถึงเมตริกที่มีอยู่บนหน้า Creator Dashboard รายงานการวิเคราะห์
รายได้
สอบถามรายได้รายวันใน Robuxcurl --location 'https://apis.roblox.com/analytics-query-api/v1/universes/${UniverseId}/metrics' \--header 'x-api-key: ${ApiKey}' \--header 'Content-Type: application/json' \--data '{"metric": "DailyRevenue","granularity": "OneDay","startTime": "2026-01-01T00:00:00Z","endTime": "2026-02-01T00:00:00Z"}'
การเก็บรักษา D1
สอบถามการเก็บรักษา D1curl --location 'https://apis.roblox.com/analytics-query-api/v1/universes/${UniverseId}/metrics' \--header 'x-api-key: ${ApiKey}' \--header 'Content-Type: application/json' \--data '{"metric": "ForwardD1Retention","granularity": "OneDay","startTime": "2026-01-01T00:00:00Z","endTime": "2026-02-01T00:00:00Z"}'
ผู้ใช้งานใหม่กับผู้ใช้งานที่กลับมา
สอบถาม DAU โดยแยกประเภทใหม่กับผู้ใช้งานที่กลับมาcurl --location 'https://apis.roblox.com/analytics-query-api/v1/universes/${UniverseId}/metrics' \--header 'x-api-key: ${ApiKey}' \--header 'Content-Type: application/json' \--data '{"metric": "DailyActiveUsers","granularity": "OneDay","breakdown": ["IsNewUser"],"startTime": "2026-01-01T00:00:00Z","endTime": "2026-02-01T00:00:00Z"}'
การรวมรายสัปดาห์
ใช้ความละเอียดที่หยาบกว่าสำหรับการมองเห็นที่มีช่วงเวลากว้างขึ้นซึ่งมีจุดข้อมูลน้อยลง ที่ความละเอียด OneWeek แต่ละบอลลูนจะนับผู้ใช้งานที่โดดเด่นในช่วงระยะเวลาเจ็ดวัน — ไม่ใช่จำนวนค่ารายวัน
สอบถาม DAU ที่ความละเอียดรายสัปดาห์curl --location 'https://apis.roblox.com/analytics-query-api/v1/universes/${UniverseId}/metrics' \--header 'x-api-key: ${ApiKey}' \--header 'Content-Type: application/json' \--data '{"metric": "DailyActiveUsers","granularity": "OneWeek","startTime": "2026-01-01T00:00:00Z","endTime": "2026-04-01T00:00:00Z"}'
การจัดอันดับ Top-N
เพื่อจัดอันดับตามเมตริกหนึ่งและแสดงเมตริกอื่นสำหรับค่าชุดเดียวกัน ใช้คำร้องสองรายการ ตัวอย่างเช่น เพื่อดูการแปลงผู้ใช้งานที่ชำระเงินสำหรับ 5 ประเทศชั้นนำตาม DAU:
ขั้นตอนที่ 1: ค้นหาค่ามิติที่ดีที่สุด ใช้ granularity: "None" เพื่อให้ได้รับผลรวมที่รวมกันเพียงหนึ่งรายการและ limit เพื่อจำกัดจำนวนซีรีส์ที่ส่งกลับ:
ค้นหาประเทศ 5 อันดับแรกตาม DAUcurl --location 'https://apis.roblox.com/analytics-query-api/v1/universes/${UniverseId}/metrics' \--header 'x-api-key: ${ApiKey}' \--header 'Content-Type: application/json' \--data '{"metric": "DailyActiveUsers","granularity": "None","breakdown": ["Country"],"startTime": "2026-01-01T00:00:00Z","endTime": "2026-02-01T00:00:00Z","limit": 5}'
ขั้นตอนที่ 2: สอบถามผลเมตริกที่แสดงผล โดยกรองค่าที่ส่งคืนในขั้นตอนที่ 1:
การแปลงผู้ใช้งานที่ชำระเงินสำหรับ 5 ประเทศชั้นนำcurl --location 'https://apis.roblox.com/analytics-query-api/v1/universes/${UniverseId}/metrics' \--header 'x-api-key: ${ApiKey}' \--header 'Content-Type: application/json' \--data '{"metric": "PayingUsersCVR","granularity": "OneDay","breakdown": ["Country"],"filter": [{"dimension": "Country","values": ["US", "GB", "PH", "VN", "DE"],"operation": "In"}],"startTime": "2026-01-01T00:00:00Z","endTime": "2026-02-01T00:00:00Z"}'
ขั้นตอนในช่องทาง
ช่องทางจะแสดงให้ผู้ใช้งานเห็นว่าพวกเขาเข้าสู่ระบบขั้นตอนในประสบการณ์ที่กำหนด ผ่านการสอบถามเมตริกช่องทางจำเป็นต้องใช้สองคำร้อง เพราะ ID ขั้นตอนเป็นแบบไดนามิก
ขั้นตอนที่ 1: ค้นหาขั้นตอนในช่องทาง ขั้นตอนในช่องทางจะปรากฏในผลลัพธ์เฉพาะวันใดก็ตามที่ผู้ใช้งานหนึ่งคนเข้าถึงขั้นตอนนั้น ใช้การมองย้อนกลับที่ยาวนานขึ้น (90 วันเป็นค่าเริ่มต้นที่ปลอดภัย) เพื่อให้แน่ใจว่าขั้นตอนที่เข้าถึงได้ยากยังคงปรากฏในการตอบสนองการค้นหา ใช้ granularity: "None" เพื่อรับผลรวมที่รวมกันในแต่ละขั้นตอน:
ค้นหาขั้นตอนในช่องทางสำหรับช่องทาง Levelscurl --location 'https://apis.roblox.com/analytics-query-api/v1/universes/${UniverseId}/metrics' \--header 'x-api-key: ${ApiKey}' \--header 'Content-Type: application/json' \--data '{"metric": "FunnelUserTotalCount","granularity": "None","breakdown": ["FunnelStep"],"filter": [{"dimension": "FunnelName","values": ["Levels"],"operation": "In"}],"startTime": "2025-11-01T00:00:00Z","endTime": "2026-02-01T00:00:00Z"}'
ขั้นตอนที่ 2: สอบถามเมตริกช่องทางสำหรับแต่ละขั้นตอน โดยกรองไปยัง ID ขั้นตอนที่ส่งคืนในขั้นตอนที่ 1:
อัตราการลดลงของผู้ใช้งานตามขั้นตอนสำหรับช่องทาง Levelscurl --location 'https://apis.roblox.com/analytics-query-api/v1/universes/${UniverseId}/metrics' \--header 'x-api-key: ${ApiKey}' \--header 'Content-Type: application/json' \--data '{"metric": "FunnelUserChurnRate","granularity": "None","breakdown": ["FunnelStep"],"filter": [{"dimension": "FunnelStep","values": ["1", "2", "3", "4", "5"],"operation": "In"},{"dimension": "FunnelName","values": ["Levels"],"operation": "In"}],"startTime": "2026-01-01T00:00:00Z","endTime": "2026-02-01T00:00:00Z"}'
ข้อผิดพลาดทั่วไป
ข้อผิดพลาดส่วนใหญ่จะถูกส่งคืนเป็นข้อผิดพลาดจากการดำเนินการสอบถาม: ร่างการตอบสนองจะประกอบไปด้วย "done": true และวัตถุ error พร้อมรหัสเชิงตัวเลข code และสตริง message ข้อผิดพลาดด้านการตรวจสอบและทรัพยากร (401, 404) เป็นการตอบสนอง HTTP แบบเรียบง่ายโดยไม่มีร่าง ดังนั้นตารางด้านล่างจึงแสดง — สำหรับรหัสข้อผิดพลาดของพวกเขา
| สถานะ | รหัส | สาเหตุ | การแก้ไข |
|---|---|---|---|
| 400 | 2001 | ฟิลด์ที่จำเป็นขาดหายไปหรือค่าฟิลด์ไม่ถูกต้อง (เช่น ไม่สามารถระบุ metric หรือ granularity) | ตรวจสอบตาราง ฟิลด์เนื้อหาคำขอ และตรวจสอบว่าค่าทั้งหมดสะกดถูกต้อง |
| 400 | 2001 | ความละเอียดที่ร้องขอไม่ได้รับการสนับสนุนสำหรับเมตริกหรือช่วงวันที่ที่กำหนด | ดู ตัวเลือกความละเอียด สำหรับช่วงวันที่ที่ยาวนานกว่า 2 ปีนั้นจะใช้ OneWeek, OneMonth, หรือ None |
| 400 | 2001 | มิติใน filter หรือ breakdown ไม่ได้รับการสนับสนุนสำหรับเมตริกที่ระบุ | ดู เมตริกที่รองรับ |
| 400 | 2001 | startTime เกินระยะเวลาการเก็บข้อมูลสำหรับเมตริก | เมตริกมาตรฐานเก็บข้อมูลได้นานถึง 4 ปี เมตริกด้านประสิทธิภาพเก็บข้อมูลได้นาน 28 วัน |
| 401 | — | หัวข้อ x-api-key ขาดหายไป ไม่ถูกต้อง หรือถูกเพิกถอน หรือกุญแจไม่มีสิทธิ์การวิเคราะห์จักรวาลสำหรับจักรวาลนี้ | ตรวจสอบค่าของกุญแจและยืนยันว่าคีย์ API มีสิทธิ์ที่ถูกต้องบน Creator Dashboard |
| 404 | — | รหัสการดำเนินการไม่มีอยู่ | ยืนยันหมายเลข ID ของการดำเนินการที่ได้รับในผลลัพธ์เบื้องต้น และตรวจสอบว่าหมายเลข ID ของจักรวาลถูกต้อง |
| 429 | 3000 | คำร้องเกินงบประมาณจุดข้อมูล | ลดช่วงวันที่ ใช้ความละเอียดที่หยาบกว่า หรือ ลดจำนวนชุดการแบ่งโดยใช้ limit |
| 500 | 2000 | เกิดข้อผิดพลาดของเซิร์ฟเวอร์ที่ไม่คาดคิด | ทดลองส่งคำขออีกครั้ง หากข้อผิดพลาดยังคงปรากฏอยู่ ให้สร้างโพสต์ใหม่ใน DevForum |
| 503 | 2002 | เกิดข้อผิดพลาดชั่วคราว | ทดลองส่งคำขออีกครั้งหลังจากผ่านไปสักครู่ |
| 504 | 1000 | คำร้องหมดเวลา หลังจากจำนวนครั้งที่พยายามเกินจำนวนสูงสุด | ลองช่วงวันที่สั้นลง การแบ่งที่น้อยลง หรือ ความละเอียดที่หยาบกว่า |