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

# Lấy danh sách User Profile

> Lấy tất cả các profile liên kết với primary profile.

export const PlansAvailable = ({plans = [], maxPackRequired}) => {
  let displayPlans = plans;
  if (plans && plans.length === 1) {
    const lowerCasePlan = plans[0].toLowerCase();
    if (lowerCasePlan === "business") {
      displayPlans = ["Launch", "Business", "Enterprise"];
    } else if (lowerCasePlan === "premium") {
      displayPlans = ["Premium", "Launch", "Business", "Enterprise"];
    }
  }
  return <Note>
Available on {displayPlans.length === 1 ? "the " : ""}
{displayPlans.join(", ").replace(/\b\w/g, l => l.toUpperCase())}{" "}
{displayPlans.length > 1 ? "plans" : "plan"}.

{maxPackRequired && <span onClick={() => window.open('https://www.ayrshare.com/docs/additional/maxpack', '_self')} className="flex items-center mt-2 cursor-pointer">
 <span className="px-1.5 py-0.5 rounded text-sm" style={{
    backgroundColor: '#C264B6',
    color: 'white',
    fontSize: '12px'
  }}>
   Max Pack required
 </span>
</span>}
</Note>;
};

export const HeaderAPI = ({noProfileKey, profileKeyRequired}) => <>
    <ParamField header="Authorization" type="string" required>
      <a href="/apis/overview#authorization">API Key</a> of the Primary Profile.
      <br />
      <br />
      Format: <code>Authorization: Bearer API_KEY</code>
    </ParamField>
    {!noProfileKey && (profileKeyRequired ? <ParamField header="Profile-Key" type="string" required>
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField> : <ParamField header="Profile-Key" type="string">
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField>)}
  </>;

<PlansAvailable plans={["business"]} maxPackRequired={false} />

Lấy tất cả các profile liên kết với primary profile. Primary Profile không được trả về trong kết quả.

Vì lý do bảo mật, Profile Key không được trả về qua lệnh gọi GET này. Vui lòng xem [tại đây](/apis/profiles/create-profile) để biết thêm thông tin.

## Tham số Header

<HeaderAPI noProfileKey />

## Tham số Query

<ParamField query="title" type="string">
  Chỉ trả về profile liên kết với tiêu đề được mã hóa URL.
</ParamField>

<ParamField query="refId" type="string">
  Chỉ trả về profile liên kết với `refId` đã cho. refId được trả về trong quá trình tạo
  profile hoặc từ endpoint /user.
</ParamField>

<ParamField query="hasActiveSocialAccounts" type="boolean" default={false}>
  Nếu `true`, chỉ trả về các profile có ít nhất một social account đã kết nối
  (độ dài `activeSocialAccounts` lớn hơn không). Nếu `false`, chỉ trả về các profile có không có
  social account đã kết nối (độ dài `activeSocialAccounts` bằng không).
</ParamField>

<ParamField query="includesActiveSocialAccounts" type="array">
  Lọc các profile để bao gồm những profile có `activeSocialAccounts` chứa tất cả các nền tảng mạng xã hội được chỉ định trong danh sách `includesActiveSocialAccounts`. Các profile có thể có thêm các nền tảng khác trong `activeSocialAccounts` của họ ngoài những nền tảng được liệt kê trong `includesActiveSocialAccounts` và vẫn được bao gồm trong kết quả đã lọc.

  Giá trị: `bluesky`, `facebook`, `gmb`, `instagram`, `linkedin`, `pinterest`, `reddit`, `snapchat`, `telegram`, `threads`, `tiktok`, `twitter`, `youtube`.
</ParamField>

<ParamField query="isByokLinked" type="boolean">
  Lọc profile theo trạng thái di chuyển BYOK (Bring Your Own Key). Nếu `true`, chỉ trả về các profile đã hoàn thành di chuyển BYOK. Nếu `false`, chỉ trả về các profile có nền tảng đủ điều kiện BYOK được kết nối nhưng chưa di chuyển. Các profile không có nền tảng đủ điều kiện BYOK sẽ bị loại trừ khi bộ lọc này được đặt. Khi bị bỏ qua, tất cả các profile được trả về bất kể trạng thái BYOK. Hiện tại áp dụng cho [X/Twitter BYOK](/dashboard/connect-social-accounts/x-twitter-byo-keys).
</ParamField>

<ParamField query="actionLog" type="boolean" default={false}>
  Trả về nhật ký hành động tạo và xóa User Profile trong 60 ngày qua và số lượng người dùng đang hoạt động được sử dụng để tính hóa đơn cho 60 ngày qua. Lưu ý:

  <ul className="custom-bullets">
    <li>
      Action Log: Tiêu đề và tags sẽ không được trả về cho lịch sử action log trước tháng 3 năm 2025.
    </li>

    <li>
      Báo cáo User Profile: Khoảng thời gian có thể không tương ứng với chu kỳ thanh toán của bạn. Ví dụ, chu kỳ thanh toán của bạn có thể bắt đầu và kết thúc vào ngày 10 mỗi tháng.
      Vui lòng xem các hóa đơn của bạn để biết chu kỳ thanh toán và các chi tiết khác.
    </li>
  </ul>

  Bạn có thể chỉ định khoảng thời gian khác bằng cách đặt actionLog thành số ngày. Ví dụ,
  tham số truy vấn `actionLog=10` sẽ trả về action log trong 10 ngày qua và số lượng người dùng đang hoạt động được báo cáo
  cho 10 ngày qua. Khoảng thời gian cho phép là 1 ngày đến 365 ngày.
</ParamField>

<ParamField query="limit" type="number" default={5000}>
  Giới hạn số lượng profile được trả về. Mặc định và tối đa là 5000.
</ParamField>

<ParamField query="cursor" type="string">
  Nếu có thêm profile để trả về và cờ `hasMore` là `true`, `nextCursor` sẽ được trả về trong phản hồi.
  Truyền con trỏ này vào tham số truy vấn `cursor` để trả về bộ profile tiếp theo.
</ParamField>

<ParamField query="include" type="string | array">
  Trả về dữ liệu profile mở rộng để khắc phục sự cố. Yêu cầu tham số `refId` (tra cứu một profile).

  Giá trị (chuỗi phân tách bằng dấu phẩy hoặc mảng): `suspension`, `socialHealth`, `linkingErrors`, `activity`, `quota`, `unlinkHistory`, `actionLog`.

  <ul className="custom-bullets">
    <li>`suspension` - isSuspended, reason, suspendedAt, unsuspendAt, suspensionCount</li>
    <li>`socialHealth` - Theo từng nền tảng: linked, linkedAt, relinkRecommended, messagingEnabled, tokenExpiresAt</li>
    <li>`linkingErrors` - Theo từng nền tảng: code, message, details, createdAt</li>
    <li>`activity` - Dấu thời gian lastApiCall, lastPost</li>
    <li>`quota` - used, limit</li>
    <li>`unlinkHistory` - Lần hủy liên kết cuối cùng: platform, source (user/system), details, createdAt</li>
    <li>`actionLog` - Lịch sử hành động profile (create/update/delete)</li>
  </ul>
</ParamField>

<RequestExample>
  ```javascript cURL theme={"system"}
  curl \
  -H "Authorization: Bearer API_KEY" \
  -X GET https://api.ayrshare.com/api/profiles
  ```

  ```javascript cURL (with include) theme={"system"}
  curl \
  -H "Authorization: Bearer API_KEY" \
  -X GET "https://api.ayrshare.com/api/profiles?refId=160c8700bd6ade&include=suspension,socialHealth,activity,quota"
  ```

  ```javascript JavaScript theme={"system"}
  const API_KEY = "API_KEY";

  fetch("https://api.ayrshare.com/api/profiles", {
        method: "GET",
        headers: {
          "Authorization": `Bearer ${API_KEY}`
        }
      })
        .then((res) => res.json())
        .then((json) => console.log(json))
        .catch(console.error);
  ```

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

  headers = {'Authorization': 'Bearer API_KEY'}

  r = requests.get('https://api.ayrshare.com/api/profiles', headers=headers)

  print(r.json())
  ```

  ```php PHP theme={"system"}
  <?php

  $url = 'https://api.ayrshare.com/api/profiles';
  $apiKey = 'API_KEY'; // Replace with your actual API key

  $curl = curl_init();

  curl_setopt_array($curl, [
      CURLOPT_URL => $url,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_HTTPGET => true,
      CURLOPT_HTTPHEADER => [
          'Content-Type: application/json',
          'Authorization: Bearer ' . $apiKey
      ],
  ]);

  $response = curl_exec($curl);

  if (curl_errno($curl)) {
      echo 'Error:' . curl_error($curl);
  } else {
      echo json_encode(json_decode($response), JSON_PRETTY_PRINT);
  }

  curl_close($curl);

  ```

  ```csharp C# theme={"system"}
  using System;
  using System.Net.Http;
  using System.Threading.Tasks;

  namespace ProfilesGETRequest_csharp
  {
  class Profiles
  {
      static async Task Main(string[] args)
      {
          string API_KEY = "API_KEY";
          string url = "https://api.ayrshare.com/api/profiles";

          using (var client = new HttpClient())
          {
              client.DefaultRequestHeaders.Add("Authorization", "Bearer " + API_KEY);

              try
              {
                  HttpResponseMessage response = await client.GetAsync(url);
                  response.EnsureSuccessStatusCode();
                  string responseBody = await response.Content.ReadAsStringAsync();
                  Console.WriteLine(responseBody);
              }
              catch (HttpRequestException e)
              {
                  Console.WriteLine($"Error: {e.Message}");
              }
          }
      }
  }
  }
  ```
</RequestExample>

<ResponseExample>
  ```javascript 200: Success theme={"system"}
  {
      "profiles": [
          {
              "status": "active",
              "title": "Digg It Title",
              "displayTitle": "Your title",
              "created": {
                  "_seconds": 1604094099,
                  "_nanoseconds": 530000000
              },
              "createdUTC": "2022-03-02T16:11:00.839Z",
              "refId": "160c8700bd6ade099b242d845e268fb986130c53",
              "activeSocialAccounts": [
                  "twitter",
                  "facebook",
                  "linkedin",
                  "instagram"
              ],
              "isByokLinked": true
          },
          {
              "status": "active",
              "title": "Super Profile",
              "created": {
                  "_seconds": 1604377627,
                  "_nanoseconds": 252000000
              },
              "createdUTC": "2022-03-02T16:11:00.839Z",
              "refId": "170a8700bd6ade099b242d845e268fb986130c53"
          },
          {
              "status": "suspended",
              "title": "Good Fun Title",
              "created": {
                  "_seconds": 1605107864,
                  "_nanoseconds": 96000000
              },
              "createdUTC": "2022-03-02T16:11:00.839Z",
              "refId": "180s8700bd6ade099b242d845e268fb986130c53",
              "activeSocialAccounts": [
                  "facebook",
                  "linkedin",
                  "youtube"
              ],
              "suspended": true
          }
      ],
      "count": 100,
      "lastUpdated": "2025-06-14T15:53:26.016Z",
      "nextUpdate": "2025-06-14T15:58:26.016Z",
      "pagination": {
          "hasMore": true,
          "nextCursor": "eyJjcmVhdGVkIjoiMjAyNS0wNi0xNFQwMjo1",
          "limit": 100
      }
  }
  ```

  ```json 200: Action Log theme={"system"}
  {
    "profiles": {
      "actionLog": [
          {
              "action": "create",
              "refId": "2d83hd839282ehd892d2999912d1dsdgldfkepw",
              "title": "Profile 1",
              "created": "2025-05-29T14:10:33.709Z"
          },
          {
              "action": "create",
              "refId": "fmm02nd9c3nm9djjffdfsfshfihvp848jcsf222s",
              "title": "Profile 2",
              "created": "2025-05-28T20:33:32.186Z"
          }
      ],
      "userProfilesReport": [
              {
                  "reported": "2025-03-31T08:00:22.651Z",
                  "userProfileCount": 135
              },
              {
                  "reported": "2025-04-01T08:00:16.632Z",
                  "userProfileCount": 135
              }
      ],
      "lastUpdated": "2025-06-14T15:56:02.260Z",
      "nextUpdate": "2025-06-14T16:01:02.260Z"
  }
  ```

  ```json 200: Include Extended Data theme={"system"}
  {
      "profiles": [
          {
              "title": "Brand Marketing",
              "refId": "160c8700bd6ade099b242d845e268fb986130c53",
              "status": "suspended",
              "activeSocialAccounts": ["twitter", "instagram"],
              "suspension": {
                  "isSuspended": true,
                  "reason": "Too many duplicate posts",
                  "suspendedAt": "2026-03-01T10:00:00.000Z",
                  "unsuspendAt": "2026-03-03T10:00:00.000Z",
                  "suspensionCount": 2
              },
              "socialHealth": {
                  "twitter": {
                      "linked": true,
                      "linkedAt": "2026-01-15T10:30:00.000Z",
                      "relinkRecommended": false,
                      "messagingEnabled": true,
                      "tokenExpiresAt": null
                  },
                  "instagram": {
                      "linked": true,
                      "linkedAt": "2026-02-01T08:00:00.000Z",
                      "relinkRecommended": true,
                      "messagingEnabled": false,
                      "tokenExpiresAt": "2026-04-01T08:00:00.000Z"
                  }
              },
              "activity": {
                  "lastApiCall": "2026-03-05T09:15:00.000Z",
                  "lastPost": "2026-03-04T14:30:00.000Z"
              },
              "quota": {
                  "used": 450,
                  "limit": 1000
              }
          }
      ],
      "count": 1,
      "pagination": {
          "hasMore": false,
          "nextCursor": null,
          "limit": 5000
      }
  }
  ```
</ResponseExample>
