Source: https://ailoot.ai/docs/th/cabinet/keys/
Canonical: https://ailoot.ai/docs/th/cabinet/keys/
Language: th

[API แผงควบคุม](https://ailoot.ai/docs/th/) 

# คีย์ API

[Markdown](https://ailoot.ai/docs/th/cabinet/keys/index.md)

เมธอด ฟิลด์คำขอ และคำตอบ

ส่วนนี้มี 5 เมธอด เปิดเมธอดเพื่อดูเงื่อนไขการเข้าถึง ฟิลด์คำขอ และคำตอบ

| เมธอดและพาธ | คำอธิบาย | การเข้าถึง |
| --- | --- | --- |
| `GET /api/v1/keys` | รายการ — คีย์ API | โทเคนแดชบอร์ด |
| `POST /api/v1/keys` | สร้างคีย์ API | โทเคนแดชบอร์ด |
| `DELETE /api/v1/keys/:id` | ลบ — คีย์ API | โทเคนแดชบอร์ด |
| `GET /api/v1/keys/:id` | ดึงข้อมูลตามรหัส — คีย์ API | โทเคนแดชบอร์ด |
| `PUT /api/v1/keys/:id` | แก้ไขคีย์ API | โทเคนแดชบอร์ด |

**GET /api/v1/keys** — รายการ — คีย์ API

การเข้าถึง: โทเคนแดชบอร์ด

GET`/api/v1/keys`

การอ่าน; ใช้ ID จากคำตอบก่อนหน้าของคุณ

```bash
curl --fail-with-body "https://ailoot.ai/api/v1/keys" \
  -H "Authorization: Bearer $TOKEN"
```

## พารามิเตอร์ Query

| ฟิลด์ | ชนิด | จำเป็น | การตรวจ⁠สอบ / คำอธิบาย |
| --- | --- | --- | --- |
| `sort_by` | `string` | ไม่ | ; ค่าเริ่มต้น: created\_at |
| `sort_order` | `string` | ไม่ | ; ค่าเริ่มต้น: desc |
| `search` | `string` | ไม่ |  |
| `status` | `string` | ไม่ |  |
| `page` | `integer` | ไม่ | ; ค่าเริ่มต้น: 1; positive; page\_size/limit \<=1000 |
| `page_size` | `integer` | ไม่ | ; ค่าเริ่มต้น: 20; positive; page\_size/limit \<=1000 |
| `limit` | `integer` | ไม่ | ; ค่าเริ่มต้น: 20; positive; page\_size/limit \<=1000 |

ไม่ต้องส่งเนื้อหาคำขอ ให้ส่งพารามิเตอร์ที่ระบุไว้ด้านบนใน URL

## คำตอบ

คำตอบ JSON มี code, message และ data เนื้อหาของ data อธิบายไว้ในสคีมาด้านล่าง

สคีมาข้อมูลคำตอบ: `APIKey`. ดูฟิลด์และชนิดข้อมูลได้ในหน้า “โครงสร้างข้อมูล”

สคีมาคำตอบ โดยค่าเป็นเพียงตัวอย่าง

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "items": [
      {
        "id": "PLACEHOLDER_ID (integer)",
        "user_id": "PLACEHOLDER_USER_ID (integer)",
        "key": "PLACEHOLDER_KEY (string)",
        "name": "PLACEHOLDER_NAME (string)",
        "status": "PLACEHOLDER_STATUS (string)",
        "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
        "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
        "last_used_at": "PLACEHOLDER_LAST_USED_AT (string)",
        "last_used_ip": "PLACEHOLDER_LAST_USED_IP (string)",
        "quota": "PLACEHOLDER_QUOTA (number)",
        "quota_used": "PLACEHOLDER_QUOTA_USED (number)",
        "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
        "created_at": "PLACEHOLDER_CREATED_AT (string)",
        "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
        "current_concurrency": "PLACEHOLDER_CURRENT_CONCURRENCY (integer)",
        "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
        "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
        "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
        "usage_5h": "PLACEHOLDER_USAGE_5H (number)",
        "usage_1d": "PLACEHOLDER_USAGE_1D (number)",
        "usage_7d": "PLACEHOLDER_USAGE_7D (number)",
        "window_5h_start": "PLACEHOLDER_WINDOW_5H_START (string)",
        "window_1d_start": "PLACEHOLDER_WINDOW_1D_START (string)",
        "window_7d_start": "PLACEHOLDER_WINDOW_7D_START (string)",
        "reset_5h_at": "PLACEHOLDER_RESET_5H_AT (string)",
        "reset_1d_at": "PLACEHOLDER_RESET_1D_AT (string)",
        "reset_7d_at": "PLACEHOLDER_RESET_7D_AT (string)",
        "user": "PLACEHOLDER_USER (object)"
      }
    ],
    "total": "PLACEHOLDER_TOTAL (integer)",
    "page": "PLACEHOLDER_PAGE (integer)",
    "page_size": "PLACEHOLDER_PAGE_SIZE (integer)",
    "pages": "PLACEHOLDER_PAGES (integer)"
  }
}
```

ข้อควรทราบ: ข้อมูลส่วนบุคคลและออบเจ็กต์ทั้งหมดจำกัดขอบเขตตามตัวตนที่ระบุใน JWT

ข้อควรทราบ: คำตอบมี key ที่เป็นความลับ อย่าเผยแพร่ค่าจริง

**POST /api/v1/keys** — สร้างคีย์ API

การเข้าถึง: โทเคนแดชบอร์ด

POST`/api/v1/keys`

## ฟิลด์ JSON / ฟอร์ม

| ฟิลด์ | ชนิด | จำเป็น | การตรวจ⁠สอบ / คำอธิบาย |
| --- | --- | --- | --- |
| `name` | `string` | ใช่ | required |
| `custom_key` | `string` | ไม่ | ; ไม่จำเป็น: กำหนดค่าคีย์ด้วยตนเอง; อาจเป็น null |
| `ip_whitelist` | `array` | ไม่ | ; รายการ IP ที่อนุญาต |
| `ip_blacklist` | `array` | ไม่ | ; รายการ IP ที่ไม่อนุญาต |
| `quota` | `number` | ไม่ | ; วงเงินค่าใช้จ่ายของคีย์ในหน่วย USD; อาจเป็น null |
| `expires_in_days` | `integer` | ไม่ | ; อายุการใช้งานเป็นวัน; อาจเป็น null |
| `rate_limit_5h` | `number` | ไม่ | ; อาจเป็น null |
| `rate_limit_1d` | `number` | ไม่ | ; อาจเป็น null |
| `rate_limit_7d` | `number` | ไม่ | ; อาจเป็น null |

เทมเพลตเนื้อหาคำขอ

```json
{
  "name": "PLACEHOLDER_NAME (string)",
  "custom_key": "PLACEHOLDER_CUSTOM_KEY (string)",
  "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
  "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
  "quota": "PLACEHOLDER_QUOTA (number)",
  "expires_in_days": "PLACEHOLDER_EXPIRES_IN_DAYS (integer)",
  "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
  "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
  "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)"
}
```

PLACEHOLDER ระบุข้อมูลที่คุณต้องป้อนและชนิดข้อมูล ให้แทนค่าต่าง ๆ และคงไว้เฉพาะฟิลด์ที่ไม่จำเป็นแต่ต้องการใช้ อย่าส่งข้อความตัวแทนค่าแทนตัวเลข boolean ออบเจ็กต์ หรืออาร์เรย์

สคีมาคำขอ: `CreateAPIKeyRequest`

## คำตอบ

คำตอบ JSON มี code, message และ data เนื้อหาของ data อธิบายไว้ในสคีมาด้านล่าง

สคีมาข้อมูลคำตอบ: `APIKey`. ดูฟิลด์และชนิดข้อมูลได้ในหน้า “โครงสร้างข้อมูล”

สคีมาคำตอบ โดยค่าเป็นเพียงตัวอย่าง

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "user_id": "PLACEHOLDER_USER_ID (integer)",
    "key": "PLACEHOLDER_KEY (string)",
    "name": "PLACEHOLDER_NAME (string)",
    "status": "PLACEHOLDER_STATUS (string)",
    "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
    "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
    "last_used_at": "PLACEHOLDER_LAST_USED_AT (string)",
    "last_used_ip": "PLACEHOLDER_LAST_USED_IP (string)",
    "quota": "PLACEHOLDER_QUOTA (number)",
    "quota_used": "PLACEHOLDER_QUOTA_USED (number)",
    "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
    "current_concurrency": "PLACEHOLDER_CURRENT_CONCURRENCY (integer)",
    "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
    "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
    "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
    "usage_5h": "PLACEHOLDER_USAGE_5H (number)",
    "usage_1d": "PLACEHOLDER_USAGE_1D (number)",
    "usage_7d": "PLACEHOLDER_USAGE_7D (number)",
    "window_5h_start": "PLACEHOLDER_WINDOW_5H_START (string)",
    "window_1d_start": "PLACEHOLDER_WINDOW_1D_START (string)",
    "window_7d_start": "PLACEHOLDER_WINDOW_7D_START (string)",
    "reset_5h_at": "PLACEHOLDER_RESET_5H_AT (string)",
    "reset_1d_at": "PLACEHOLDER_RESET_1D_AT (string)",
    "reset_7d_at": "PLACEHOLDER_RESET_7D_AT (string)",
    "user": "PLACEHOLDER_USER (object)"
  }
}
```

ข้อควรทราบ: ข้อมูลส่วนบุคคลและออบเจ็กต์ทั้งหมดจำกัดขอบเขตตามตัวตนที่ระบุใน JWT

ข้อควรทราบ: การดำเนินการนี้เปลี่ยนสถานะหรือดำเนินขั้นตอนยืนยันสิทธิ์แบบใช้ครั้งเดียวต่อ ตัวอย่างอธิบายสัญญาการทำงานและไม่ได้ถูกเรียกใช้จริง

ข้อควรทราบ: รองรับ Idempotency-Key การส่งซ้ำจะได้คำตอบที่บันทึกไว้พร้อม X-Idempotency-Replayed

ข้อควรทราบ: คำตอบมี key ที่เป็นความลับ อย่าเผยแพร่ค่าจริง

เมธอดนี้เปลี่ยนข้อมูล การส่งซ้ำจะปลอดภัยเฉพาะเมธอดที่ระบุ Idempotency-Key หากคำตอบสูญหาย ให้ตรวจ⁠สอบผลลัพธ์ก่อน (เช่น รายการคีย์) แล้วจึงตัดสินใจว่าจะส่งคำขอซ้ำหรือไม่

**DELETE /api/v1/keys/:id** — ลบ — คีย์ API

การเข้าถึง: โทเคนแดชบอร์ด

DELETE`/api/v1/keys/:id`

## พารามิเตอร์พาธ

| ฟิลด์ | ชนิด | จำเป็น | การตรวจ⁠สอบ / คำอธิบาย |
| --- | --- | --- | --- |
| `id` | `integer` | ใช่ |  |

ไม่ต้องส่งเนื้อหาคำขอ

## คำตอบ

คำตอบ JSON มี code, message และ data เนื้อหาของ data อธิบายไว้ในสคีมาด้านล่าง

สคีมาคำตอบ โดยค่าเป็นเพียงตัวอย่าง

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "VALUE_FROM_RESPONSE"
  }
}
```

ข้อควรทราบ: ข้อมูลส่วนบุคคลและออบเจ็กต์ทั้งหมดจำกัดขอบเขตตามตัวตนที่ระบุใน JWT

ข้อควรทราบ: การดำเนินการนี้เปลี่ยนสถานะหรือดำเนินขั้นตอนยืนยันสิทธิ์แบบใช้ครั้งเดียวต่อ ตัวอย่างอธิบายสัญญาการทำงานและไม่ได้ถูกเรียกใช้จริง

ข้อควรทราบ: คำตอบมี key ที่เป็นความลับ อย่าเผยแพร่ค่าจริง

เมธอดนี้เปลี่ยนข้อมูล การส่งซ้ำจะปลอดภัยเฉพาะเมธอดที่ระบุ Idempotency-Key หากคำตอบสูญหาย ให้ตรวจ⁠สอบผลลัพธ์ก่อน (เช่น รายการคีย์) แล้วจึงตัดสินใจว่าจะส่งคำขอซ้ำหรือไม่

**GET /api/v1/keys/:id** — ดึงข้อมูลตามรหัส — คีย์ API

การเข้าถึง: โทเคนแดชบอร์ด

GET`/api/v1/keys/:id`

การอ่าน; ใช้ ID จากคำตอบก่อนหน้าของคุณ

```bash
curl --fail-with-body "https://ailoot.ai/api/v1/keys/$ID" \
  -H "Authorization: Bearer $TOKEN"
```

## พารามิเตอร์พาธ

| ฟิลด์ | ชนิด | จำเป็น | การตรวจ⁠สอบ / คำอธิบาย |
| --- | --- | --- | --- |
| `id` | `integer` | ใช่ |  |

ไม่ต้องส่งเนื้อหาคำขอ ให้ส่งพารามิเตอร์ที่ระบุไว้ด้านบนใน URL

## คำตอบ

คำตอบ JSON มี code, message และ data เนื้อหาของ data อธิบายไว้ในสคีมาด้านล่าง

สคีมาข้อมูลคำตอบ: `APIKey`. ดูฟิลด์และชนิดข้อมูลได้ในหน้า “โครงสร้างข้อมูล”

สคีมาคำตอบ โดยค่าเป็นเพียงตัวอย่าง

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "user_id": "PLACEHOLDER_USER_ID (integer)",
    "key": "PLACEHOLDER_KEY (string)",
    "name": "PLACEHOLDER_NAME (string)",
    "status": "PLACEHOLDER_STATUS (string)",
    "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
    "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
    "last_used_at": "PLACEHOLDER_LAST_USED_AT (string)",
    "last_used_ip": "PLACEHOLDER_LAST_USED_IP (string)",
    "quota": "PLACEHOLDER_QUOTA (number)",
    "quota_used": "PLACEHOLDER_QUOTA_USED (number)",
    "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
    "current_concurrency": "PLACEHOLDER_CURRENT_CONCURRENCY (integer)",
    "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
    "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
    "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
    "usage_5h": "PLACEHOLDER_USAGE_5H (number)",
    "usage_1d": "PLACEHOLDER_USAGE_1D (number)",
    "usage_7d": "PLACEHOLDER_USAGE_7D (number)",
    "window_5h_start": "PLACEHOLDER_WINDOW_5H_START (string)",
    "window_1d_start": "PLACEHOLDER_WINDOW_1D_START (string)",
    "window_7d_start": "PLACEHOLDER_WINDOW_7D_START (string)",
    "reset_5h_at": "PLACEHOLDER_RESET_5H_AT (string)",
    "reset_1d_at": "PLACEHOLDER_RESET_1D_AT (string)",
    "reset_7d_at": "PLACEHOLDER_RESET_7D_AT (string)",
    "user": "PLACEHOLDER_USER (object)"
  }
}
```

ข้อควรทราบ: ข้อมูลส่วนบุคคลและออบเจ็กต์ทั้งหมดจำกัดขอบเขตตามตัวตนที่ระบุใน JWT

ข้อควรทราบ: คำตอบมี key ที่เป็นความลับ อย่าเผยแพร่ค่าจริง

**PUT /api/v1/keys/:id** — แก้ไขคีย์ API

การเข้าถึง: โทเคนแดชบอร์ด

PUT`/api/v1/keys/:id`

## พารามิเตอร์พาธ

| ฟิลด์ | ชนิด | จำเป็น | การตรวจ⁠สอบ / คำอธิบาย |
| --- | --- | --- | --- |
| `id` | `integer` | ใช่ |  |

## ฟิลด์ JSON / ฟอร์ม

| ฟิลด์ | ชนิด | จำเป็น | การตรวจ⁠สอบ / คำอธิบาย |
| --- | --- | --- | --- |
| `name` | `string` | ไม่ |  |
| `status` | `string` | ไม่ | omitempty,oneof=active inactive |
| `ip_whitelist` | `array` | ไม่ | ; IP ที่อนุญาต: null จะไม่เปลี่ยนรายการ ส่วนอาร์เรย์ว่างจะล้างรายการ; อาจเป็น null |
| `ip_blacklist` | `array` | ไม่ | ; IP ที่ไม่อนุญาต: null จะไม่เปลี่ยนรายการ ส่วนอาร์เรย์ว่างจะล้างรายการ; อาจเป็น null |
| `quota` | `number` | ไม่ | ; วงเงินค่าใช้จ่ายของคีย์ในหน่วย USD; 0 หมายถึงไม่จำกัด; อาจเป็น null |
| `expires_at` | `string` | ไม่ | ; เวลาหมดอายุในรูปแบบ ISO 8601; อาจเป็น null |
| `reset_quota` | `boolean` | ไม่ | ; รีเซ็ตจำนวนเงินที่ใช้ไปแล้วจากวงเงินค่าใช้จ่าย; อาจเป็น null |
| `rate_limit_5h` | `number` | ไม่ | ; อาจเป็น null |
| `rate_limit_1d` | `number` | ไม่ | ; อาจเป็น null |
| `rate_limit_7d` | `number` | ไม่ | ; อาจเป็น null |
| `reset_rate_limit_usage` | `boolean` | ไม่ | ; รีเซ็ตค่าใช้จ่ายที่นับในขีดจำกัดตามช่วงเวลา; อาจเป็น null |

เทมเพลตเนื้อหาคำขอ

```json
{
  "name": "PLACEHOLDER_NAME (string)",
  "status": "PLACEHOLDER_STATUS (string)",
  "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
  "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
  "quota": "PLACEHOLDER_QUOTA (number)",
  "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
  "reset_quota": "PLACEHOLDER_RESET_QUOTA (boolean)",
  "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
  "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
  "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
  "reset_rate_limit_usage": "PLACEHOLDER_RESET_RATE_LIMIT_USAGE (boolean)"
}
```

PLACEHOLDER ระบุข้อมูลที่คุณต้องป้อนและชนิดข้อมูล ให้แทนค่าต่าง ๆ และคงไว้เฉพาะฟิลด์ที่ไม่จำเป็นแต่ต้องการใช้ อย่าส่งข้อความตัวแทนค่าแทนตัวเลข boolean ออบเจ็กต์ หรืออาร์เรย์

สคีมาคำขอ: `UpdateAPIKeyRequest`

## คำตอบ

คำตอบ JSON มี code, message และ data เนื้อหาของ data อธิบายไว้ในสคีมาด้านล่าง

สคีมาข้อมูลคำตอบ: `APIKey`. ดูฟิลด์และชนิดข้อมูลได้ในหน้า “โครงสร้างข้อมูล”

สคีมาคำตอบ โดยค่าเป็นเพียงตัวอย่าง

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "user_id": "PLACEHOLDER_USER_ID (integer)",
    "key": "PLACEHOLDER_KEY (string)",
    "name": "PLACEHOLDER_NAME (string)",
    "status": "PLACEHOLDER_STATUS (string)",
    "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
    "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
    "last_used_at": "PLACEHOLDER_LAST_USED_AT (string)",
    "last_used_ip": "PLACEHOLDER_LAST_USED_IP (string)",
    "quota": "PLACEHOLDER_QUOTA (number)",
    "quota_used": "PLACEHOLDER_QUOTA_USED (number)",
    "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
    "current_concurrency": "PLACEHOLDER_CURRENT_CONCURRENCY (integer)",
    "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
    "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
    "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
    "usage_5h": "PLACEHOLDER_USAGE_5H (number)",
    "usage_1d": "PLACEHOLDER_USAGE_1D (number)",
    "usage_7d": "PLACEHOLDER_USAGE_7D (number)",
    "window_5h_start": "PLACEHOLDER_WINDOW_5H_START (string)",
    "window_1d_start": "PLACEHOLDER_WINDOW_1D_START (string)",
    "window_7d_start": "PLACEHOLDER_WINDOW_7D_START (string)",
    "reset_5h_at": "PLACEHOLDER_RESET_5H_AT (string)",
    "reset_1d_at": "PLACEHOLDER_RESET_1D_AT (string)",
    "reset_7d_at": "PLACEHOLDER_RESET_7D_AT (string)",
    "user": "PLACEHOLDER_USER (object)"
  }
}
```

ข้อควรทราบ: ข้อมูลส่วนบุคคลและออบเจ็กต์ทั้งหมดจำกัดขอบเขตตามตัวตนที่ระบุใน JWT

ข้อควรทราบ: การดำเนินการนี้เปลี่ยนสถานะหรือดำเนินขั้นตอนยืนยันสิทธิ์แบบใช้ครั้งเดียวต่อ ตัวอย่างอธิบายสัญญาการทำงานและไม่ได้ถูกเรียกใช้จริง

ข้อควรทราบ: คำตอบมี key ที่เป็นความลับ อย่าเผยแพร่ค่าจริง

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

เมธอดนี้เปลี่ยนข้อมูล การส่งซ้ำจะปลอดภัยเฉพาะเมธอดที่ระบุ Idempotency-Key หากคำตอบสูญหาย ให้ตรวจ⁠สอบผลลัพธ์ก่อน (เช่น รายการคีย์) แล้วจึงตัดสินใจว่าจะส่งคำขอซ้ำหรือไม่

ยังมีคำถามอยู่ใช่ไหม ส่ง Request ID และรายละเอียดมาให้เรา เราจะช่วยตรวจ⁠สอบ[ติดต่อฝ่ายสนับสนุน](mailto:support@ailoot.ai)

## Ailoot · บริษัทและพอร์ตโฟลิโอโครงการของบริษัท





Ailoot อาศัยประสบการณ์การดำเนินงานที่สั่งสม ฐานลูกค้าขนาดใหญ่ บริการที่เสถียร และการติดตาม KPI อย่างต่อเนื่อง





บริษัทและพอร์ตโฟลิโอโครงการของบริษัท: ลูกค้าหลายล้านราย; ยอดขายระดับหลายพันล้านต่อเดือน.





Ailoot นำประสบการณ์การดำเนินงานนี้มาใช้เพื่อให้เข้าถึงฟังก์ชัน AI ผ่าน API ในผลิตภัณฑ์ของลูกค้า เอเจนต์ แอปพลิเคชัน และระบบอัตโนมัติ
