# API Keys

API Keys ช่วยให้เซิร์ฟเวอร์ของคุณยืนยันตัวตนกับ DailyPlay API ได้ สร้างคีย์จากแดชบอร์ดและใช้ในหัวข้อ `x-api-key` เมื่อเรียก API

:::note[ต้องใช้แพ็กเกจ Business ขึ้นไป]
API Keys ใช้ได้เฉพาะองค์กรที่มีแพ็กเกจ **Business** ขึ้นไปเท่านั้น
:::
## การสร้าง API Key

1. ลงชื่อเข้าใช้แดชบอร์ด DailyPlay
2. ไปที่ **Connect → API Keys** ในแถบด้านข้าง
3. คลิก **สร้าง API Key**
4. กรอกชื่อ (เช่น "Production CRM") และคำอธิบาย (ไม่บังคับ)
5. เปิดใช้ **ขอบเขตสิทธิ์ MCP** หากคีย์จะใช้กับเอเจนต์ AI (ดูด้านล่าง)
6. กำหนดวันหมดอายุ (ไม่บังคับ)
7. คลิก **สร้าง**

:::caution
คัดลอกคีย์ที่สร้างทันที — จะแสดงเพียงครั้งเดียวและไม่สามารถเรียกดูภายหลังได้
:::
รูปแบบคีย์คือ `dpk_<อักขระ hex 40 ตัว>` เช่น:

```
dpk_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
```

## ขอบเขตของคีย์

API Keys สามารถกำหนดขอบเขตเพื่อจำกัดทรัพยากรที่เข้าถึงได้:

| ขอบเขต                      | คำอธิบาย                                             |
| --------------------------- | ---------------------------------------------------- |
| **เกมและสตรีมทั้งหมด**      | ค่าเริ่มต้น — สร้างเซสชันได้สำหรับทรัพยากรทั้งหมดในองค์กร |
| **เกมเฉพาะ**               | จำกัดเฉพาะรายการ Game ID                              |
| **สตรีมเฉพาะ**             | จำกัดเฉพาะรายการ Stream ID                            |

การพยายามสร้างเซสชันสำหรับทรัพยากรนอกขอบเขตจะได้รับข้อผิดพลาด `403 Forbidden`

## ขอบเขตสิทธิ์ MCP

นอกจากรายการอนุญาตเกม/สตรีม คีย์สามารถมี**ขอบเขตสิทธิ์ MCP** เพื่อเข้าถึง[เซิร์ฟเวอร์ MCP](/th/api/mcp/) ระยะไกลได้ ขอบเขตปฏิเสธโดยค่าเริ่มต้น:

| ขอบเขต | สิทธิ์ที่ได้รับ |
| --- | --- |
| _(ไม่มี)_ | ออกโทเค็นเซสชันเท่านั้น (พฤติกรรมเดิม / REST) |
| `mcp:templates:read` | ดูรายการและรายละเอียดเทมเพลต |
| `mcp:games:read` / `mcp:games:write` | อ่านหรือสร้าง/อัปเดตเกมและรางวัล |
| `mcp:streams:read` / `mcp:streams:write` | อ่านหรือสร้าง/อัปเดตสตรีม |
| `mcp:connections:read` / `mcp:connections:write` | จัดการอินทิเกรชันขององค์กร |
| `mcp:gallery:read` / `mcp:gallery:write` | ดูรายการสื่อแกลเลอรีหรือลบสินทรัพย์ที่ไม่ได้ใช้ |
| `mcp:vouchers:read` / `mcp:vouchers:write` | อ่านหรือจัดการชุดบัตรกำนัลและรหัส |
| `mcp:reports:read` | อ่านการวิเคราะห์และรายงานขององค์กร |
| `mcp:ai` | ดึงแบรนด์ วิซาร์ดฟันเนล สร้างภาพ |
| `mcp:sessions:write` | ออกเซสชันการเล่นผ่าน MCP |

แก้ไขขอบเขต MCP ทีหลังจากรายการ API Keys ได้โดยไม่ต้องหมุนเวียนคีย์ ดูรายการเครื่องมือทั้งหมดที่[เครื่องมือ MCP](/th/api/mcp-tools/)

## ขีดจำกัดอัตรา

แต่ละ API Key มีขีดจำกัดอัตราที่กำหนดได้:

| ขีดจำกัด | ค่าเริ่มต้น | คำอธิบาย                    |
| -------- | ------------ | --------------------------- |
| ต่อนาที  | 60           | จำนวนคำขอสูงสุดต่อนาที      |
| ต่อวัน   | 10,000       | จำนวนคำขอสูงสุดต่อวัน       |

เมื่อเกินขีดจำกัด API จะตอบกลับ `429 Too Many Requests`

## การเพิกถอนคีย์

เพิกถอน API Key ได้ทุกเมื่อจากแดชบอร์ด:

1. ไปที่ **Connect → API Keys**
2. ค้นหาคีย์ในรายการ (ระบุด้วยคำนำหน้า `dpk_****` และชื่อ)
3. คลิกปุ่มเพิกถอน

ผลของการเพิกถอน:

- บล็อกการเรียก API ทั้งหมดที่ใช้คีย์นั้นทันที
- เซสชันโทเค็นที่สร้างไปแล้ว**ไม่ถูกยกเลิก**
- เก็บบันทึกการตรวจสอบ — บันทึกคีย์ยังคงอยู่แต่ทำเครื่องหมายเป็นไม่ใช้งาน
- สามารถเปิดใช้งานใหม่ได้หากจำเป็น

## ความปลอดภัย

- คีย์ถูก**แฮชด้วย SHA-256** ก่อนจัดเก็บ — ไม่สามารถกู้คืนคีย์ดิบจากฐานข้อมูล
- เก็บเฉพาะ 8 อักขระแรก (`dpk_xxxx`) เป็นข้อความธรรมดาสำหรับการระบุ
- คีย์สามารถตั้งให้**หมดอายุอัตโนมัติ**ในวันที่กำหนด
- การใช้งานคีย์ทั้งหมดถูกบันทึกเพื่อการตรวจสอบ

## การจัดการคีย์ผ่าน API

คุณยังสามารถจัดการ API Keys โดยใช้คำขอที่ยืนยันตัวตน (Clerk Bearer Token):

| เมธอด   | Endpoint                                | คำอธิบาย                    |
| -------- | --------------------------------------- | --------------------------- |
| `GET`    | `/api/org-api-keys?org_id=<id>`         | แสดงรายการ API Keys ทั้งหมด |
| `POST`   | `/api/org-api-keys`                     | สร้าง API Key ใหม่          |
| `PATCH`  | `/api/org-api-keys`                     | อัปเดตหรือเพิกถอน API Key   |
| `DELETE` | `/api/org-api-keys?id=<id>&org_id=<id>` | ลบ API Key ถาวร            |

### การสร้างคีย์ (API)

```bash
curl -X POST https://app.dailyplay.ai/api/org-api-keys \
  -H "Authorization: Bearer <clerk_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "org_id": 1,
    "name": "Production CRM",
    "description": "CRM ใช้สำหรับออกลิงก์เกม",
    "allowed_game_ids": [42, 43],
    "rate_limit_per_minute": 60,
    "rate_limit_per_day": 10000,
    "expires_at": "2027-01-01T00:00:00Z"
  }'
```