> ## 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.

# Thiết lập X API Key của riêng bạn

> Hướng dẫn từng bước để kết nối thông tin xác thực X (Twitter) API của bạn với Ayrshare

Vào ngày 31 tháng 3 năm 2026, X đã thay đổi cách các nền tảng bên thứ ba truy cập API của mình. Do đó, mọi tài khoản Ayrshare đăng bài lên X thông qua Ayrshare đều phải đăng ký X Developer App của riêng mình và sử dụng API Key cùng API Secret của app đó trên mọi request.

Đây là thay đổi trên toàn nền tảng bắt buộc bởi X và ảnh hưởng đến tất cả các công cụ bên thứ ba.

<Info>
  **BYO keys được thiết lập một lần cho mỗi nền tảng (áp dụng cho toàn bộ tài khoản), không phải cho từng khách hàng hoặc sub-profile.** Bạn tạo **một X Developer App** dưới tài khoản X của mình, và cùng một **API Key + API Secret** sẽ được áp dụng cho toàn bộ tài khoản X — chúng được sử dụng cho **mọi** sub-profile / end-user liên kết X dưới tài khoản Ayrshare của bạn. Nếu bạn có gói Business hoặc Enterprise với hàng trăm sub-profile, bạn **không** cần lặp lại thiết lập này cho từng cái. Bạn thiết lập một lần cho nền tảng X, sau đó truyền cùng hai header trong mỗi request.
</Info>

Chúng tôi đã đơn giản hoá quy trình thiết lập để bạn thực hiện dễ dàng nhất có thể, và việc này chỉ mất chưa đến 10 phút. Làm theo hướng dẫn từng bước dưới đây, và nếu bạn cần trợ giúp, đội ngũ của chúng tôi luôn sẵn sàng hỗ trợ.

## Bước 1: Tạo tài khoản X Developer

<Steps>
  <Step title="Đăng nhập vào Developer Console">
    Truy cập [console.x.com](https://console.x.com) và đăng nhập bằng tài khoản X của bạn. Xem [hướng dẫn bắt đầu của X](https://docs.x.com/x-api/getting-started/getting-access) nếu bạn cần trợ giúp.

    <img class="center" width="700" src="https://mintcdn.com/ayrshare-docs/qVYhhKC6hYCwYmRp/images/dashboard/x-byo-setup/step1-developer-console.webp?fit=max&auto=format&n=qVYhhKC6hYCwYmRp&q=85&s=58a00543db365d4d889722070643a070" alt="X Developer Console sign-in page" data-path="images/dashboard/x-byo-setup/step1-developer-console.webp" />
  </Step>

  <Step title="Hoàn tất onboarding">
    Hoàn tất onboarding cho developer và chấp nhận Developer Agreement cùng các chính sách.
  </Step>

  <Step title="Truy cập console">
    Bạn hiện đã ở trong X Developer Console.
  </Step>
</Steps>

## Bước 2: Tạo một App

<Info>
  Bạn chỉ tạo **một X Developer App cho mỗi tài khoản Ayrshare**. Cùng một app với API Key + API Secret sẽ được tái sử dụng cho mọi sub-profile / end-user mà sau này bạn liên kết dưới tài khoản Ayrshare của mình. Bạn không tạo app mới cho từng khách hàng.
</Info>

<Steps>
  <Step title="Điều hướng đến Apps">
    Trong Developer Console, điều hướng đến **Apps**.

    <img class="center" width="700" src="https://mintcdn.com/ayrshare-docs/qVYhhKC6hYCwYmRp/images/dashboard/x-byo-setup/step2-apps-page.webp?fit=max&auto=format&n=qVYhhKC6hYCwYmRp&q=85&s=36076b8577cb46f4713cad41933bae2f" alt="Apps page in X Developer Console" data-path="images/dashboard/x-byo-setup/step2-apps-page.webp" />
  </Step>

  <Step title="Tạo app">
    Trong App dashboard, nhấp **Create App** (xem [tài liệu thiết lập App của X](https://docs.x.com/fundamentals/developer-apps) để biết chi tiết). Nhập tên app (thường là tên thương hiệu của bạn). Tên này sẽ xuất hiện trên màn hình uỷ quyền OAuth khi người dùng kết nối tài khoản X của họ.

    <img class="center" width="700" src="https://mintcdn.com/ayrshare-docs/qVYhhKC6hYCwYmRp/images/dashboard/x-byo-setup/step2-create-app.webp?fit=max&auto=format&n=qVYhhKC6hYCwYmRp&q=85&s=dd9627eeb7e58c80f6249dd5cbfb0d4e" alt="Create App button in the X Developer Console" data-path="images/dashboard/x-byo-setup/step2-create-app.webp" />
  </Step>

  <Step title="Chọn môi trường">
    Chọn môi trường **Production** trong menu thả xuống.

    <img class="center" width="700" src="https://mintcdn.com/ayrshare-docs/qVYhhKC6hYCwYmRp/images/dashboard/x-byo-setup/step2-credentials-popup.webp?fit=max&auto=format&n=qVYhhKC6hYCwYmRp&q=85&s=2b111d840665b0b7eb96fc0d9df99f0e" alt="Production environment selection and credentials popup" data-path="images/dashboard/x-byo-setup/step2-credentials-popup.webp" />
  </Step>

  <Step title="Đóng cửa sổ pop-up credentials ban đầu">
    X sẽ tạo một số credential. **Bỏ qua các credential này và đóng cửa sổ này lại.**
  </Step>
</Steps>

## Bước 3: Cấu hình quyền cho App

<Steps>
  <Step title="Mở cài đặt app của bạn">
    Trong "Apps," tìm app mới (làm mới trang nếu app không xuất hiện), sau đó nhấp vào nó để xem chi tiết.

    <img class="center" width="700" src="https://mintcdn.com/ayrshare-docs/qVYhhKC6hYCwYmRp/images/dashboard/x-byo-setup/step3-app-details.webp?fit=max&auto=format&n=qVYhhKC6hYCwYmRp&q=85&s=41f185aa2ffb4d90f0f9f174597cc4f1" alt="App details page in the X Developer Console" data-path="images/dashboard/x-byo-setup/step3-app-details.webp" />

    Trong **User authentication settings**, nhấp **Set up**.

    <img class="center" width="700" src="https://mintcdn.com/ayrshare-docs/qVYhhKC6hYCwYmRp/images/dashboard/x-byo-setup/step3-user-auth-settings.webp?fit=max&auto=format&n=qVYhhKC6hYCwYmRp&q=85&s=4faad9d5bc061f442ee0cc605e0aad6a" alt="User authentication settings, click Set up" data-path="images/dashboard/x-byo-setup/step3-user-auth-settings.webp" />
  </Step>

  <Step title="Thiết lập quyền cho app">
    Trong **App permissions**, chọn **Read and write and Direct message**. Điều này bắt buộc để hỗ trợ đầy đủ tính năng, bao gồm cả đăng bài và DM.

    <img class="center" width="700" src="https://mintcdn.com/ayrshare-docs/qVYhhKC6hYCwYmRp/images/dashboard/x-byo-setup/step3-app-permissions.webp?fit=max&auto=format&n=qVYhhKC6hYCwYmRp&q=85&s=57549ea060507af5b99552b6952ef95a" alt="App permissions set to Read and write and Direct message" data-path="images/dashboard/x-byo-setup/step3-app-permissions.webp" />
  </Step>

  <Step title="Thiết lập loại app">
    Trong **Type of App**, chọn **Web App, Automated App or Bot**. Đây là lựa chọn đúng cho các tích hợp phía server như Ayrshare.

    <img class="center" width="700" src="https://mintcdn.com/ayrshare-docs/qVYhhKC6hYCwYmRp/images/dashboard/x-byo-setup/step3-app-type.webp?fit=max&auto=format&n=qVYhhKC6hYCwYmRp&q=85&s=8609d048548432862ad801113e7b7b8e" alt="Type of App set to Web App, Automated App or Bot" data-path="images/dashboard/x-byo-setup/step3-app-type.webp" />
  </Step>

  <Step title="Thiết lập callback và website URL">
    Trong **App info**:

    * **Callback URL:** Thêm cả hai callback URL sau:
      * `https://profile.ayrshare.com/social-accounts`
      * `https://app.ayrshare.com/social-accounts`
    * **Website URL:** `https://app.ayrshare.com`

    <Warning>
      **Đừng bỏ qua bước này.** Các callback URL này bắt buộc cho luồng liên kết OAuth. Khi người dùng cuối uỷ quyền kết nối X, X sẽ chuyển hướng họ về một trong các URL này để hoàn tất quy trình liên kết. Nếu thiếu, luồng OAuth sẽ thất bại với lỗi `403 Callback URL not approved`.
    </Warning>

    <img class="center" width="700" src="https://mintcdn.com/ayrshare-docs/itktiDewCYTaymFN/images/dashboard/x-byo-setup/step3-app-info-urls.webp?fit=max&auto=format&n=itktiDewCYTaymFN&q=85&s=09d7254aa2d183e2899f95412e97316b" alt="App info form with callback URL and website URL filled in" data-path="images/dashboard/x-byo-setup/step3-app-info-urls.webp" />
  </Step>

  <Step title="Lưu cài đặt">
    Nhấp **Save**. Bạn có thể bỏ qua cửa sổ pop-up OAuth 2.0, vì bạn chỉ sử dụng 2 khoá của OAuth 1.0 (API Key và API Secret).
  </Step>
</Steps>

<Warning>
  **Quan trọng: Thiết lập quyền trước khi liên kết.** Các quyền bạn chọn ở đây quyết định app của bạn có thể làm gì. Nếu bạn thay đổi quyền sau khi đã liên kết tài khoản X qua OAuth, bạn sẽ cần liên kết lại để Access Token mới kế thừa quyền đã cập nhật.

  <img class="center" width="700" src="https://mintcdn.com/ayrshare-docs/qVYhhKC6hYCwYmRp/images/dashboard/x-byo-setup/step3-keys-and-tokens.webp?fit=max&auto=format&n=qVYhhKC6hYCwYmRp&q=85&s=761423c4c27f0c90b480d00f1ff253f7" alt="Keys and tokens page showing OAuth 1.0 keys with permission level" data-path="images/dashboard/x-byo-setup/step3-keys-and-tokens.webp" />
</Warning>

Hãy đảm bảo bạn lưu lại 2 khoá này:

1. **API Key** (còn gọi là Consumer Key, định danh của X app)
2. **API Secret** (còn gọi là Consumer Secret)

<Info>
  Bạn **KHÔNG** cần tạo Access Token thủ công. Ayrshare xử lý việc này tự động khi bạn liên kết tài khoản X qua OAuth.
</Info>

## Bước 4: Mua X API Credits

X hiện dùng hệ thống thanh toán API dựa trên credit, được mua thông qua developer console.

<Steps>
  <Step title="Điều hướng đến billing">
    Trong Developer Console, nhấp **Billing → Credits** ở thanh bên trái.

    <img class="center" width="700" src="https://mintcdn.com/ayrshare-docs/qVYhhKC6hYCwYmRp/images/dashboard/x-byo-setup/step4-billing-credits.webp?fit=max&auto=format&n=qVYhhKC6hYCwYmRp&q=85&s=b104e991f726ec2ecb8cc8274d1889d2" alt="Billing Credits page in X Developer Console" data-path="images/dashboard/x-byo-setup/step4-billing-credits.webp" />
  </Step>

  <Step title="Mua credits">
    Mua credits (mức tối thiểu là \$5, đủ cho hàng trăm lệnh API). Mỗi lệnh gọi API chỉ tốn một phần nhỏ của một cent, vì vậy chi phí sẽ tối thiểu đối với hầu hết người dùng.

    <img class="center" width="700" src="https://mintcdn.com/ayrshare-docs/qVYhhKC6hYCwYmRp/images/dashboard/x-byo-setup/step4-purchase-credits.webp?fit=max&auto=format&n=qVYhhKC6hYCwYmRp&q=85&s=ae555dc44bcfdfb0d7e4f55237b248ef" alt="Credit purchase page in the X Developer Console" data-path="images/dashboard/x-byo-setup/step4-purchase-credits.webp" />
  </Step>

  <Step title="Bật tự động nạp lại">
    Bạn có thể bật **auto-recharge** để tránh gián đoạn dịch vụ và quản lý giới hạn chi tiêu bằng cách đặt mức tối đa bạn có thể chi trong chu kỳ thanh toán.

    <img class="center" width="700" src="https://mintcdn.com/ayrshare-docs/qVYhhKC6hYCwYmRp/images/dashboard/x-byo-setup/step4-auto-recharge.webp?fit=max&auto=format&n=qVYhhKC6hYCwYmRp&q=85&s=c9e0f36c379bbd5c47c8b242213eaa6a" alt="Auto-recharge and spend cap settings in X Developer Console" data-path="images/dashboard/x-byo-setup/step4-auto-recharge.webp" />
  </Step>
</Steps>

<Warning>
  **Các lệnh gọi API của bạn sẽ thất bại nếu không có credits.** API của X là pay-per-use. Nếu số dư credit của bạn bằng 0, mọi request API sẽ trả về lỗi `402 CreditsDepleted` với thông báo "Your enrolled account does not have any credits to fulfill this request." Điều này bao gồm cả đăng bài, đọc tweet và tra cứu người dùng. Hãy nạp credits trước khi kiểm thử tích hợp của bạn. Xem [Cách định giá X API hoạt động](#how-x-api-pricing-works) để biết cập nhật đầy đủ về giá của X.
</Warning>

## Bước 5: Cập nhật các lệnh gọi API Ayrshare của bạn

Ở Bước 3, bạn đã lưu 2 mục sau một cách an toàn trong env, config hoặc secrets manager của riêng bạn:

1. **API Key** (còn gọi là Consumer Key, định danh của X app)
2. **API Secret** (còn gọi là Consumer Secret)

Bây giờ, hãy thêm thông tin xác thực X vào header của các lệnh gọi API Ayrshare.

<Info>
  **Các khoá của bạn được giữ riêng tư.** API Key và API Secret của bạn không được Ayrshare lưu trữ.
</Info>

### Tham chiếu Header

| Header                        | Giá trị                          |
| ----------------------------- | -------------------------------- |
| `X-Twitter-OAuth1-Api-Key`    | API Key (Consumer Key)           |
| `X-Twitter-OAuth1-Api-Secret` | API Key Secret (Consumer Secret) |

<Warning>
  **Cách nhận biết nếu quyền của bạn bị sai:**

  * Nếu quyền của app bị cấu hình sai, request API có thể trả về lỗi `403 Forbidden` với thông báo: "Your client app is not configured with the appropriate OAuth1 app permissions."

  Nếu bạn thấy lỗi này, hãy cập nhật quyền của app thành **Read and write and Direct message** trong X Developer Console, sau đó liên kết lại tài khoản X qua OAuth để Access Token mới kế thừa quyền đã cập nhật.
</Warning>

### Ví dụ mã

<CodeGroup>
  ```bash cURL theme={"system"}
  curl -X POST https://api.ayrshare.com/api/post \
    -H "Authorization: Bearer YOUR_AYRSHARE_API_KEY" \
    -H "X-Twitter-OAuth1-Api-Key: your_api_key" \
    -H "X-Twitter-OAuth1-Api-Secret: your_api_secret" \
    -H "Content-Type: application/json" \
    -d '{"post": "Hello from my own X App!", "platforms": ["twitter"]}'
  ```

  ```javascript Node.js theme={"system"}
  const response = await fetch("https://api.ayrshare.com/api/post", {
    method: "POST",
    headers: {
      "Authorization": "Bearer YOUR_AYRSHARE_API_KEY",
      "Content-Type": "application/json",
      "X-Twitter-OAuth1-Api-Key": process.env.X_API_KEY,
      "X-Twitter-OAuth1-Api-Secret": process.env.X_API_SECRET,
    },
    body: JSON.stringify({
      post: "Hello from my own X App!",
      platforms: ["twitter"],
    }),
  });
  ```

  ```python Python theme={"system"}
  import os
  import requests

  headers = {
      "Authorization": "Bearer YOUR_AYRSHARE_API_KEY",
      "Content-Type": "application/json",
      "X-Twitter-OAuth1-Api-Key": os.environ["X_API_KEY"],
      "X-Twitter-OAuth1-Api-Secret": os.environ["X_API_SECRET"],
  }

  response = requests.post(
      "https://api.ayrshare.com/api/post",
      headers=headers,
      json={"post": "Hello from my own X App!", "platforms": ["twitter"]},
  )
  ```
</CodeGroup>

Các quy trình tự động và workflow hiện có của bạn sẽ tiếp tục hoạt động miễn là bạn đưa header API Key và API Secret vào mọi request tới X.

### Chuyển đổi các profile hiện có (Business & Enterprise)

Nếu bạn có sub-profile đã được liên kết với X thông qua Ayrshare, các profile đó cần liên kết lại tài khoản X sau khi bạn chuyển sang BYO keys. Điều này là vì access token hiện có đã được cấp dưới X app của Ayrshare và không thể sử dụng với consumer key của bạn (chữ ký OAuth 1.0a bị ràng buộc với app cấp token).

<Steps>
  <Step title="Đưa các khoá của bạn vào generateJWT">
    Thêm `twitterApiKey` và `twitterApiSecret` vào body lệnh gọi [generateJWT](/apis/profiles/generate-jwt#body-parameters-13). Chúng được mã hoá trước khi được nhúng vào JWT và không bị lộ cho end-user.

    ```json theme={"system"}
    {
      "domain": "your-domain",
      "profileKey": "...",
      "privateKey": "...",
      "twitterApiKey": "YOUR_X_CONSUMER_KEY",
      "twitterApiSecret": "YOUR_X_CONSUMER_SECRET"
    }
    ```

    Đây là request duy nhất mà consumer key của bạn được đặt trong body. Tất cả các request X khác sử dụng các header đã mô tả ở trên.
  </Step>

  <Step title="Yêu cầu người dùng liên kết lại X">
    Sau khi tạo JWT với các khoá được đưa vào, người dùng của bạn cần kết nối lại tài khoản X thông qua trang liên kết profile. Màn hình chấp thuận OAuth giờ sẽ hiển thị tên app của bạn thay vì của Ayrshare.

    Để làm mọi việc đơn giản hơn, bạn có thể:

    * Huỷ liên kết tài khoản theo cách lập trình qua [Unlink API](/apis/profiles/unlink-social-network#unlink-a-social-network), sau đó yêu cầu người dùng uỷ quyền lại
    * Sử dụng [`logout` parameter](/apis/profiles/generate-jwt#param-logout) trong generateJWT để buộc đăng nhập mới
    * Sử dụng [`allowedSocial`](/apis/profiles/generate-jwt#param-allowed-social) để chỉ hiển thị X trên trang liên kết trong luồng chuyển đổi
  </Step>

  <Step title="Tiếp tục gửi header trên tất cả các lệnh gọi API">
    Sau khi liên kết lại, tiếp tục đưa các header `X-Twitter-OAuth1-Api-Key` và `X-Twitter-OAuth1-Api-Secret` vào mọi lệnh gọi API (đăng bài, analytics, comments, v.v.).
  </Step>
</Steps>

<Info>
  Sau khi một profile đã liên kết lại dưới X app của bạn, tất cả các bài đăng tiếp theo cho profile đó sẽ sử dụng thông tin xác thực của bạn. Bạn có thể xác minh điều này bằng cách kiểm tra trang Usage trong [X Developer Console](https://console.x.com) của bạn.
</Info>

### Kiểm tra thiết lập của bạn

Thực hiện một lệnh gọi thử qua Ayrshare API với các header mới để xác nhận mọi thứ đang hoạt động. Endpoint [/analytics/social](/apis/analytics/social) là một bài kiểm tra nhẹ tốt, vì nó không tạo bài đăng nào.

## Cách định giá X API hoạt động

Trước đây, Ayrshare chi trả cho việc sử dụng API của X thay bạn. Theo mô hình hiện tại của X, mỗi khách hàng Ayrshare duy trì tài khoản X Developer của riêng mình và trả tiền trực tiếp cho X cho các request API mà ứng dụng của họ thực hiện. (Một tài khoản X Developer trên mỗi tài khoản Ayrshare, không phải trên mỗi end-user. Tất cả sub-profile của bạn dùng chung một tài khoản X Developer và số dư credit.)

Mô hình định giá của X là pay-per-use: bạn mua credit trong X Developer Console, và chúng bị trừ khi các request API được thực hiện. Không cần hợp đồng hay đăng ký gói.

Các tác vụ điển hình có chi phí thấp. Ví dụ:

| Tác vụ                                    | Chi phí xấp xỉ                                                            |
| ----------------------------------------- | ------------------------------------------------------------------------- |
| Tạo bài đăng (chỉ văn bản)                | \~\$0.01 mỗi bài                                                          |
| Tạo bài đăng có media                     | \~\$0.02 mỗi bài (upload media và tạo bài đăng là các request riêng biệt) |
| Đọc một bài đăng                          | \~\$0.005 mỗi lượt đọc                                                    |
| Tra cứu người dùng                        | \~\$0.01 mỗi lượt tra cứu                                                 |
| Gửi DM                                    | \~\$0.01 mỗi tin nhắn                                                     |
| Đọc sự kiện DM                            | \~\$0.01 mỗi sự kiện                                                      |
| Tương tác người dùng (follow, like, v.v.) | \~\$0.015 mỗi request                                                     |

Để tham khảo, nếu bạn đăng khoảng 100 lần mỗi tháng, chi phí trực tiếp cho X sẽ vào khoảng \$1, và các bài đăng có media sẽ khoảng \$2 mỗi tháng.

<Note>
  Định giá pay-per-use của X hiện đang trong giai đoạn thử nghiệm. Tỷ giá có thể thay đổi và có thể có chi phí bổ sung. Luôn kiểm tra Developer Console để biết định giá mới nhất. Xem [phân tích thông tin định giá của X](https://docs.x.com/x-api/fundamentals/pricing).
</Note>

Chúng tôi biết điều này giới thiệu một khoản chi phí chưa từng tồn tại trước đây, và chúng tôi muốn minh bạch về điều đó. Đồng thời, mô hình này cũng mở ra một số lợi ích không thể có trong thiết lập chia sẻ khoá trước đây.

## Lợi ích của việc dùng X API Key của riêng bạn

Việc sử dụng thông tin xác thực X API của riêng bạn cung cấp khả năng kiểm soát và độ tin cậy tốt hơn so với mô hình chia sẻ khoá trước đây. Bao gồm:

* **Trải nghiệm OAuth có thương hiệu:** Người dùng thấy tên app và thương hiệu của bạn khi uỷ quyền truy cập X.
* **Giới hạn tốc độ riêng:** Việc sử dụng API của bạn được điều chỉnh bởi giới hạn của tài khoản X Developer của riêng bạn, tách biệt khỏi các người dùng Ayrshare khác. Bạn có thể theo dõi sử dụng của mình trong [X Developer Console](https://console.x.com) và xem [tài liệu về giới hạn tốc độ API của X](https://developer.x.com/en/docs/x-api/rate-limits).
* **Kiểm soát thông tin xác thực:** API Key và Secret của bạn nằm trong tài khoản X Developer của riêng bạn. Ayrshare không lưu trữ khoá bí mật của bạn.
* **Tính di động:** Vì người dùng xác thực với X App của bạn, tích hợp của bạn vẫn hoàn toàn nằm dưới sự kiểm soát của bạn.
* **Khả năng hiển thị sử dụng:** Dashboard X Developer của bạn hiển thị các request API, giới hạn tốc độ và mức sử dụng credit.

X là nền tảng đầu tiên yêu cầu mô hình này, nhưng ngày càng nhiều nền tảng đang hướng tới "bring your own API key." Chúng tôi đang mở rộng khả năng này trên toàn Ayrshare, để các developer có cùng khả năng kiểm soát và độc lập trên tất cả các nền tảng mạng xã hội.

## Bảo mật

* API Key và API Secret của bạn không được Ayrshare lưu trữ.
* Đối với các thực hành bảo mật chung, xem [hướng dẫn bảo mật xác thực của X](https://docs.x.com/resources/fundamentals/authentication).

## Câu hỏi thường gặp

<AccordionGroup>
  <Accordion title="Tôi có cần thiết lập điều này cho mỗi khách hàng / sub-profile không?">
    **Không.** Bạn thiết lập **một** X Developer App dưới tài khoản X của mình, và cùng một **API Key + API Secret** được tái sử dụng cho mọi sub-profile / end-user bạn liên kết dưới tài khoản Ayrshare của mình.

    * Bạn tạo X Developer App **một lần**.
    * Bạn truyền cùng hai header (`X-Twitter-OAuth1-Api-Key` và `X-Twitter-OAuth1-Api-Secret`) trong mỗi lệnh gọi API Ayrshare, bất kể lệnh gọi đó dành cho sub-profile nào.
    * Các end-user của bạn vẫn phải trải qua luồng liên kết OAuth để uỷ quyền tài khoản X của họ, nhưng họ **không** cần X Developer App hay API key của riêng họ. Họ kết nối thông qua app của bạn.
    * Tất cả sub-profile chia sẻ cùng một tài khoản X Developer, cùng giới hạn tốc độ và cùng số dư credit.

    Lần duy nhất bạn xử lý khoá cho từng profile là trong body [generateJWT](/apis/profiles/generate-jwt) trong quá trình chuyển đổi, và đó vẫn là cùng hai khoá của bạn, chỉ được gửi đến trang liên kết để end-user có thể uỷ quyền lại dưới app của bạn.
  </Accordion>

  <Accordion title="Yêu cầu về X API key đã có hiệu lực chưa?">
    Có. Từ ngày 31 tháng 3 năm 2026, tất cả các hoạt động X thông qua Ayrshare đều yêu cầu thông tin xác thực X API của riêng bạn. Nếu bạn chưa thiết lập tài khoản X Developer, hãy làm theo các bước trên.
  </Accordion>

  <Accordion title="Điều gì xảy ra nếu tôi không thêm X API key vào Ayrshare?">
    Việc đăng bài lên X thông qua Ayrshare yêu cầu thông tin xác thực X API của riêng bạn. Các request không có thông tin BYO hợp lệ sẽ bị từ chối. Việc đăng bài lên các nền tảng khác (Instagram, LinkedIn, Facebook, TikTok, v.v.) không bị ảnh hưởng.
  </Accordion>

  <Accordion title="X API có giá bao nhiêu?">
    X tính phí cho mỗi lệnh gọi API. Tạo một bài đăng tốn khoảng \$0.01, và đọc một bài đăng tốn khoảng \$0.005. Ví dụ, xuất bản 100 bài đăng mỗi tháng sẽ tốn khoảng \$1. Xem [trang định giá của X](https://docs.x.com/x-api/fundamentals/pricing) để biết chi tiết đầy đủ.
  </Accordion>

  <Accordion title="Điều này có thay đổi giá gói đăng ký Ayrshare của tôi không?">
    Không. Giá gói đăng ký Ayrshare của bạn không đổi. Chi phí bổ sung duy nhất là phí sử dụng X API được X tính trực tiếp qua tài khoản developer của bạn.
  </Accordion>

  <Accordion title="Ayrshare có lưu trữ thông tin xác thực X API của tôi không?">
    Không. API Key và API Secret của bạn không được Ayrshare lưu trữ. Đối với các thực hành bảo mật chung, xem [hướng dẫn bảo mật xác thực của X](https://docs.x.com/resources/fundamentals/authentication).
  </Accordion>

  <Accordion title="Tôi đã có tài khoản X Developer. Tôi có thể dùng khoá hiện có không?">
    Có. Bạn có thể sử dụng X App hiện có miễn là nó đã bật quyền "Read and write" (và Direct Messages nếu bạn sử dụng tính năng DM).

    Bạn sẽ cần API Key (Consumer Key) và API Secret (Consumer Secret) từ phần Keys and tokens của X Developer Console. Liên kết tài khoản X qua OAuth, sau đó đưa 2 header này vào các request API Ayrshare.

    Nếu bạn đã thay đổi quyền của app kể từ lúc thiết lập ban đầu, hãy liên kết lại tài khoản X để Access Token kế thừa quyền đã cập nhật.
  </Accordion>

  <Accordion title="X Developer Portal hiển thị nhiều thông tin xác thực. Tôi thực sự cần cái nào?">
    Bạn cần API Key (Consumer Key) và API Secret (Consumer Secret). Xem [bảng tham chiếu header](#header-reference) ở trên để biết chính xác mỗi cái ánh xạ đến header nào của Ayrshare. Bạn có thể bỏ qua Client ID, Client Secret, Bearer Token, Access Token và Access Token Secret.
  </Accordion>

  <Accordion title="Sự khác biệt giữa 'API Key' và 'Client ID' là gì?">
    Chúng là các thông tin xác thực hoàn toàn khác nhau cho các phương thức xác thực khác nhau:

    * **API Key** (còn gọi là "Consumer Key") dành cho OAuth 1.0a. API Key (Consumer Key) + API Secret là những gì Ayrshare sử dụng. Nó hoạt động với tất cả tính năng của X, token không hết hạn và không cần logic refresh.
    * **Client ID** dành cho OAuth 2.0. Bạn KHÔNG cần cái này cho Ayrshare. Token OAuth 2.0 hết hạn sau một thời gian ngắn và yêu cầu quản lý refresh token.

    Đối với Ayrshare, bạn chỉ cần API Key và API Secret. Bạn có thể bỏ qua Client ID, Client Secret và Bearer Token.
  </Accordion>

  <Accordion title="Tại sao là OAuth 1.0a mà không phải OAuth 2.0?">
    Access token OAuth 2.0 hết hạn sau mỗi 2 giờ và refresh token của X chỉ dùng được một lần (mỗi lần refresh vô hiệu hoá token cũ). Điều này khiến không thể hỗ trợ mô hình BYO stateless, đặc biệt là cho các bài đăng đã lên lịch. Token OAuth 1.0a không hết hạn, hoạt động với tất cả tính năng của X và không cần quản lý token.
  </Accordion>

  <Accordion title="Người dùng hiện có của tôi có cần liên kết lại tài khoản X không?">
    Có. Nếu người dùng của bạn đã liên kết X qua Ayrshare trước khi bạn thiết lập BYO keys, họ sẽ cần kết nối lại. Access token hiện có đã được cấp dưới X app của Ayrshare và sẽ không hoạt động với consumer key của bạn. Xem [Chuyển đổi các profile hiện có](#migrating-existing-profiles-business--enterprise) ở trên để biết quy trình từng bước.
  </Accordion>

  <Accordion title="Thay đổi này có ảnh hưởng đến việc đăng bài lên Instagram, LinkedIn hoặc các nền tảng khác không?">
    Không. Thay đổi này chỉ ảnh hưởng đến việc đăng bài lên X. Tất cả các tích hợp nền tảng khác trong Ayrshare tiếp tục hoạt động như thường lệ.
  </Accordion>

  <Accordion title="Còn tự động đăng RSS/Feed lên X thì sao?">
    Không còn hỗ trợ tự động đăng RSS lên X. Nguồn cấp RSS chạy tự động theo lịch, nhưng mô hình bring-your-own API key yêu cầu thông tin xác thực phải được cung cấp với mỗi request API. Vì vậy, các nguồn cấp RSS không thể xác thực khi bài đăng được gửi.

    Nếu bạn trước đây đã dùng RSS để đăng lên X, chúng tôi khuyến nghị chuyển sang [bài đăng đã lên lịch](/apis/post/overview#schedule-posts) hoặc các lệnh gọi API trực tiếp có bao gồm thông tin xác thực của bạn. Tự động đăng RSS lên tất cả các nền tảng khác không thay đổi.
  </Accordion>

  <Accordion title="Tại sao tôi nhận được lỗi 402 &#x22;CreditsDepleted&#x22;?">
    Điều này có nghĩa là tài khoản X Developer của bạn không còn credit API nào. Đi tới [console.x.com](https://console.x.com) → **Billing → Credits** và mua credit. Ngay cả \$5 cũng đủ cho hàng trăm lệnh gọi API. Khi credit đã được nạp, hãy thử lại request của bạn.
  </Accordion>

  <Accordion title="Tại sao tôi nhận được lỗi 403 &#x22;Forbidden: OAuth1 App Permissions&#x22;?">
    Access Token của bạn không có quyền phù hợp. Điều này thường có nghĩa là một trong hai điều:

    1. **Quyền của app được thiết lập là "Read" thay vì "Read and write."** Đi tới Settings của app trong Developer Console và đổi thành **Read and write and Direct message**.
    2. **Bạn đã thay đổi quyền sau khi liên kết tài khoản X.** Access Token giữ quyền tại thời điểm được tạo. Liên kết lại tài khoản X qua OAuth để token mới kế thừa quyền đã cập nhật.
  </Accordion>

  <Accordion title="Nếu tôi cần trợ giúp thiết lập thì sao?">
    Đội ngũ hỗ trợ của chúng tôi rất sẵn lòng giúp đỡ. Nếu bạn có câu hỏi hoặc gặp vấn đề trong quá trình thiết lập, vui lòng liên hệ qua [support@ayrshare.com](mailto:support@ayrshare.com), và chúng tôi sẽ hướng dẫn bạn qua từng bước.
  </Accordion>
</AccordionGroup>

## Xử lý sự cố

<AccordionGroup>
  <Accordion title="Tôi gặp lỗi 400 về việc thiếu header">
    Hãy chắc chắn bạn đang gửi cả hai header bắt buộc:

    * `X-Twitter-OAuth1-Api-Key`
    * `X-Twitter-OAuth1-Api-Secret`

    Nếu bạn thấy lỗi thiếu cặp (ví dụ: "You provided Api-Key but not Api-Secret"), điều đó có nghĩa là một trong hai bị thiếu. Cả hai luôn bắt buộc.

    Thông báo lỗi sẽ cho bạn biết header cụ thể nào bị thiếu.
  </Accordion>

  <Accordion title={'Tôi gặp lỗi 403: "Callback URL not approved"'}>
    Nếu bạn thấy lỗi này khi cố gắng liên kết tài khoản X, hãy chắc chắn bạn đã thêm các callback URL bắt buộc vào cài đặt X Developer App của bạn (trong Authentication settings > Callback URI / Redirect URL):

    * `https://profile.ayrshare.com/social-accounts`
    * `https://app.ayrshare.com/social-accounts`

    Xem [bước thiết lập Callback URL](#step-3-configure-app-permissions) ở trên.
  </Accordion>

  <Accordion title={'Tôi gặp lỗi 402: "CreditsDepleted"'}>
    Tài khoản X Developer của bạn không có credit API nào được nạp. Đi tới [console.x.com](https://console.x.com) → **Billing → Credits** và mua credit. Ngay cả \$5 cũng đủ cho hàng trăm lệnh gọi API.
  </Accordion>

  <Accordion title={'Tôi gặp lỗi 403: "oauth1 app permissions"'}>
    Access Token của bạn không có quyền phù hợp. Điều này thường có nghĩa là:

    1. **Quyền của app được thiết lập là "Read" thay vì "Read and write."** Đi tới Settings của app trong Developer Console và đổi thành **Read and write and Direct message**.
    2. **Bạn đã thay đổi quyền sau khi liên kết tài khoản X.** Access Token giữ quyền tại thời điểm được tạo. Liên kết lại tài khoản X qua OAuth để token mới kế thừa quyền đã cập nhật.
  </Accordion>
</AccordionGroup>

## Cần trợ giúp?

Nếu bạn có câu hỏi hoặc gặp vấn đề khi thiết lập X API key, đội ngũ kỹ thuật của chúng tôi rất sẵn lòng giúp đỡ. Bạn có thể liên hệ với chúng tôi bất cứ lúc nào tại [support@ayrshare.com](mailto:support@ayrshare.com).
