> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Giới hạn và Tính phí GraphQL

> Cách Ayrshare tính các request GraphQL vào hạn mức API của bạn, cùng các giới hạn về độ sâu truy vấn, số trường, alias, directive và kích thước request.

<h2 id="how-requests-are-counted">
  Cách tính số request
</h2>

**Mỗi trường thao tác gốc được thực thi là một lệnh gọi API.** Một request GraphQL yêu cầu bốn trường gốc sẽ được tính phí là bốn lệnh gọi API, giống hệt như khi bạn thực hiện bốn request REST. Các alias ở cấp gốc được tính riêng vì mỗi alias gửi đi một thao tác. Các trường lồng nhau được chọn từ một phản hồi có kiểu không làm tăng số lệnh gọi API.

```graphql theme={"system"}
{
  history: postHistory(lastDays: 7)
  accounts: user
  comments: comments(id: "abc123")
  analytics: socialAnalytics(platforms: [INSTAGRAM])
}
```

Một request HTTP, **bốn lệnh gọi API** được tính vào hạn mức và giới hạn tốc độ của gói của bạn.

Điều này là có chủ đích và đó là mô hình minh bạch: mỗi trường gốc thực hiện cùng khối lượng công việc ở phía chúng tôi như lệnh gọi REST tương đương, nên có cùng chi phí. GraphQL giúp bạn tiết kiệm các lượt round trip và cho phép bạn lấy chính xác những gì bạn cần ở một nơi; nó không phải là cách để có nhiều lệnh gọi API hơn mức gói của bạn bao gồm.

Các hệ quả thực tế:

<ul class="custom-bullets">
  <li>Các giới hạn gói hiện tại của bạn vẫn áp dụng không thay đổi. Xem <a href="/docs/apis/overview">giới hạn API</a> để biết mức cho phép của gói của bạn.</li>
  <li>Yêu cầu một thao tác gốc mà bạn không cần có chi phí giống như gọi nó qua REST. Việc chọn các trường phản hồi lồng nhau mà bạn cần không làm tăng số lệnh gọi.</li>
  <li>Một request có thể bị giới hạn tốc độ <em>giữa chừng</em>. Các trường gốc đã hoàn tất vẫn giữ dữ liệu của chúng, và chỉ các trường gốc bị giới hạn mới trả về lỗi — xem <a href="/docs/apis/graphql/errors#partial-success">Thành công một phần</a>.</li>
</ul>

<h2 id="query-limits">
  Giới hạn truy vấn
</h2>

Endpoint áp dụng một vài giới hạn về cấu trúc và kích thước của truy vấn. Chúng tồn tại để một request đơn lẻ không thể tiêu tốn quá nhiều năng lực xử lý của chúng tôi, và được đặt cao hơn nhiều so với nhu cầu sử dụng thông thường — nếu bạn chạm tới một giới hạn, đó thường là dấu hiệu của một truy vấn được tạo ra ngoài ý muốn chứ không phải nhu cầu thực sự.

| Giới hạn | Giá trị | Cách bạn phát hiện |
| - | - | - |
| Số lệnh gọi API mỗi request | 5 | `extensions.status` 429 trên mỗi trường gốc vượt quá |
| Độ sâu lồng nhau của truy vấn | 15 | Truy vấn bị từ chối trước khi chạy |
| Số trường mỗi request | 300 | Truy vấn bị từ chối trước khi chạy |
| Số alias mỗi request | 25 | Truy vấn bị từ chối trước khi chạy |
| Số directive mỗi request | 50 | Truy vấn bị từ chối trước khi chạy |
| Kích thước body request | 64 KB | HTTP 413 |

Một truy vấn bị từ chối trả về HTTP 400 nếu bạn gửi `Accept: application/graphql-response+json`, và HTTP 200 trong các trường hợp khác, kèm một mảng `errors` và không có `data` trong cả hai trường hợp. Xem [Lỗi](/docs/apis/graphql/errors).

<h3 id="api-calls-per-request">
  Số lệnh gọi API mỗi request
</h3>

Đây là giới hạn quan trọng. Một request đơn lẻ có thể kích hoạt tối đa **5** lệnh gọi API, vì vậy ví dụ bốn trường gốc ở trên là ổn nhưng một request với hai mươi trường gốc thì không. Khi năm lần dispatch đã bắt đầu, các trường gốc bổ sung sẽ trả về lỗi 429 giải thích giới hạn; các trường đã được dispatch vẫn có thể trả về dữ liệu của chúng.

Nếu bạn cần nhiều hơn, hãy chia truy vấn thành nhiều request. Nếu bạn thấy mình thường xuyên phải làm vậy cho một khối lượng công việc hợp lệ, hãy [liên hệ với chúng tôi](/docs/help-center/overview) — giới hạn này được cố ý đặt thận trọng khi ra mắt và việc nâng nó lên rất đơn giản, trong khi hạ nó xuống sau này sẽ làm hỏng các tích hợp, vì vậy nó bắt đầu ở mức nhỏ.

<h3 id="depth-fields-and-aliases">
  Độ sâu, số trường, alias và directive
</h3>

Các giới hạn này được kiểm tra trước khi bất cứ thứ gì chạy, vì vậy vượt quá một giới hạn không tốn của bạn lệnh gọi API nào.

Chúng cũng vượt xa một truy vấn introspection đầy đủ, vốn có khoảng 180 trường và sâu 12 cấp mà không có alias hay directive, vì vậy một client lấy toàn bộ schema khi khởi động vẫn hoạt động bình thường.

<h3 id="request-body-size">
  Kích thước body request
</h3>

64 KB, rộng rãi đối với một truy vấn và quá nhỏ đối với một tệp. Đây là lý do media không thể được tải lên thông qua GraphQL — xem [Tải media lên](/docs/apis/graphql/using-the-api#uploading-media) để biết cách được hỗ trợ.

<h2 id="timeouts">
  Thời gian chờ
</h2>

Một request được cho phép tổng cộng tối đa 120 giây. Các trường gốc trong một **query có thể chạy đồng thời**, vì vậy thời lượng của nó thường phụ thuộc vào phần phụ thuộc chậm nhất. Các trường gốc trong một **mutation chạy tuần tự**, vì vậy nhiều mutation chậm có thể cộng dồn đến mức chạm thời gian chờ. Cả hai dạng vẫn có thể tạo ra tải tương đương tối đa năm lần dispatch đồng thời hoặc tuần tự lên backend; hãy tách riêng các công việc đã biết là chậm khi phù hợp.

<h2 id="what-is-not-limited">
  Những gì không bị giới hạn
</h2>

<ul class="custom-bullets">
  <li><strong>Đọc schema.</strong> Introspection không cần xác thực và không bị tính phí. Duyệt những gì hiện có là miễn phí; chạy một thao tác thì không.</li>
  <li><strong>Truy vấn sai định dạng.</strong> Một truy vấn bị GraphQL từ chối — trường không xác định, sai kiểu, giá trị enum không hợp lệ — không bao giờ đến được API của chúng tôi và không bao giờ bị tính phí.</li>
</ul>

Các giới hạn này được xem xét dựa trên mức sử dụng thực tế. Nếu một trong số chúng không phù hợp với một tích hợp hợp lệ, hãy cho chúng tôi biết — phản hồi đó hữu ích hơn một giải pháp tạm thời.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.