החיפוש נטען רק כשמשתמשים בו. עיינו בכל הקטגוריות שלהלן.

ניתוח נתונים ותובנות

חיפוש ב-Threads

ביצוע חיפוש רשמי מוגבל לפי מילת מפתח או תג כאשר לחיבור המדויק יש הרשאה. התוצאות המדורגות אינן ממצות ואינן מעידות על אישור ציבורי לאפליקציה.

POST /analytics-api/threads-reads/keyword-search

החוזה נבדק: · sha256:11debf801a5e6096

סקירה

ביצוע חיפוש רשמי מוגבל לפי מילת מפתח או תג כאשר לחיבור המדויק יש הרשאה. התוצאות המדורגות אינן ממצות ואינן מעידות על אישור ציבורי לאפליקציה.

תגובת HTTP מוצלחת עשויה לציין שבקשה התקבלה, ולא שהושלמה. בעבודת רקע, שמרו את המזהה שהוחזר ובדקו את אותה פעולה עד שתסתיים. פוסט שתוזמן או התקבל נחשב שפורסם רק כשהפלטפורמה מאשרת זאת; חריגה מזמן ההמתנה אצל הלקוח אינה קובעת מה התוצאה.

אימות והרשאות

סוגי אמצעי גישה מתקבלים
user_session, delegated_oauth, personal_access_token
יכולת מואצלת
agent:operate
תפקיד מינימלי בסביבת העבודה
viewer
היקף הגישה
משאבים שהמשתמש הזה מורשה לגשת אליהם
נדרשת הסכמה לכל סביבות העבודה
לא
משנה מצב
לא
מתי הפעולה הושלמה
bounded official data or explicit unavailable; granted scopes do not establish public App Review approval

אסימון יכול להשתמש רק בזכויות שיש לבעליו. כל בקשה בודקת חברות בסביבת העבודה, בעלות על משאבים, סביבות עבודה נבחרות ויכולות שהוענקו. הפרופילים core ו-full משנים אילו כלים מוצגים; הם אינם מעניקים גישה.

שדות הבקשה

שדה חובה נדרש בתוך אובייקט האב והענף הנבחר שלו. צאצא נדרש אינו הופך אב אופציונלי לנדרש. הכללים ושמות השדות שלהלן מועתקים מהחוזה.

שדות הבקשה
שדה / ענףסוג / חובהאילוצים
$objectחובה באובייקט האב
  • additionalProperties: false
workspace_idstringחובה באובייקט האב
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
social_account_idstringחובה באובייקט האב
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
sinceintegerרשות / פריט
  • minimum: 1688540400
  • maximum: 9007199254740991
untilintegerרשות / פריט
  • minimum: 1688540400
  • maximum: 9007199254740991
qstringחובה באובייקט האב
  • minLength: 1
  • maxLength: 200
search_typestringרשות / פריט
  • enum: ["TOP","RECENT"]
  • default: "TOP"
search_modestringרשות / פריט
  • enum: ["KEYWORD","TAG"]
  • default: "KEYWORD"
media_typestringרשות / פריט
  • enum: ["TEXT","IMAGE","VIDEO"]
author_usernamestringרשות / פריט
  • pattern: "^[A-Za-z0-9._]{1,30}$"
limitintegerרשות / פריט
  • minimum: 1
  • maximum: 100
  • default: 25
JSON Schema מלא
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "workspace_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "social_account_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "since": {
      "type": "integer",
      "minimum": 1688540400,
      "maximum": 9007199254740991
    },
    "until": {
      "type": "integer",
      "minimum": 1688540400,
      "maximum": 9007199254740991
    },
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "search_type": {
      "default": "TOP",
      "type": "string",
      "enum": [
        "TOP",
        "RECENT"
      ]
    },
    "search_mode": {
      "default": "KEYWORD",
      "type": "string",
      "enum": [
        "KEYWORD",
        "TAG"
      ]
    },
    "media_type": {
      "type": "string",
      "enum": [
        "TEXT",
        "IMAGE",
        "VIDEO"
      ]
    },
    "author_username": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._]{1,30}$"
    },
    "limit": {
      "default": 25,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "workspace_id",
    "social_account_id",
    "q"
  ],
  "additionalProperties": false
}

תגובה והשלמה

סטטוסי HTTP להצלחה: 200. מתי הפעולה הושלמה: bounded official data or explicit unavailable; granted scopes do not establish public App Review approval.

תגובת HTTP מוצלחת עשויה לציין שבקשה התקבלה, ולא שהושלמה. בעבודת רקע, שמרו את המזהה שהוחזר ובדקו את אותה פעולה עד שתסתיים. פוסט שתוזמן או התקבל נחשב שפורסם רק כשהפלטפורמה מאשרת זאת; חריגה מזמן ההמתנה אצל הלקוח אינה קובעת מה התוצאה.

שדה חובה נדרש בתוך אובייקט האב והענף הנבחר שלו. צאצא נדרש אינו הופך אב אופציונלי לנדרש. הכללים ושמות השדות שלהלן מועתקים מהחוזה.

תגובה והשלמה
שדה / ענףסוג / חובהאילוצים
$objectחובה באובייקט האב—
contract_versionstringחובה באובייקט האב
  • const: "threads-reads/v1"
operationstringחובה באובייקט האב
  • const: "keyword_search"
sourcestringחובה באובייקט האב
  • const: "official_threads_api"
workspace_idstringחובה באובייקט האב
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
social_account_idstringחובה באובייקט האב
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
provider_account_idstringחובה באובייקט האב
  • pattern: "^\\d{2,20}$"
provider_app_identitystring | nullחובה באובייקט האב—
provider_app_identityanyOf 1stringחובה באובייקט האב
  • minLength: 1
  • maxLength: 100
provider_app_identityanyOf 2nullחובה באובייקט האב—
oauth_snapshot_idstring | nullחובה באובייקט האב—
oauth_snapshot_idanyOf 1stringחובה באובייקט האב
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
oauth_snapshot_idanyOf 2nullחובה באובייקט האב—
fetched_atstringחובה באובייקט האב
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
statusstringחובה באובייקט האב
  • enum: ["available","partial","unavailable"]
unavailable_reasonstring | nullחובה באובייקט האב—
unavailable_reasonanyOf 1stringחובה באובייקט האב
  • enum: ["grant_inventory_unknown","missing_permissions","issuing_app_unknown","credential_unavailable","credential_expired","account_unhealthy","provider_denied","provider_rate_limited","provider_unavailable","provider_response_invalid"]
unavailable_reasonanyOf 2nullחובה באובייקט האב—
accessobjectחובה באובייקט האב—
access.required_permissionsarrayחובה באובייקט האב
  • maxItems: 4
access.required_permissions[]stringרשות / פריט
  • pattern: "^[a-z][a-z0-9_]{0,99}$"
access.missing_permissionsarrayחובה באובייקט האב
  • maxItems: 4
access.missing_permissions[]stringרשות / פריט
  • pattern: "^[a-z][a-z0-9_]{0,99}$"
access.permission_statestringחובה באובייקט האב
  • enum: ["granted","missing","unknown"]
access.grant_evidencestringחובה באובייקט האב
  • enum: ["exact","unknown"]
access.app_accessstringחובה באובייקט האב
  • const: "unverified"
dataarrayחובה באובייקט האב
  • maxItems: 100
data[]objectרשות / פריט—
data[].idstringחובה באובייקט האב
  • pattern: "^\\d{2,20}$"
data[].textstring | nullחובה באובייקט האב—
data[].textanyOf 1stringחובה באובייקט האב
  • maxLength: 30000
data[].textanyOf 2nullחובה באובייקט האב—
data[].usernamestring | nullחובה באובייקט האב—
data[].usernameanyOf 1stringחובה באובייקט האב
  • pattern: "^[A-Za-z0-9._]{1,30}$"
data[].usernameanyOf 2nullחובה באובייקט האב—
data[].permalinkstring | nullחובה באובייקט האב—
data[].permalinkanyOf 1stringחובה באובייקט האב
  • format: "uri"
data[].permalinkanyOf 2nullחובה באובייקט האב—
data[].timestampstring | nullחובה באובייקט האב—
data[].timestampanyOf 1stringחובה באובייקט האב
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
data[].timestampanyOf 2nullחובה באובייקט האב—
data[].media_typestring | nullחובה באובייקט האב—
data[].media_typeanyOf 1stringחובה באובייקט האב
  • enum: ["TEXT","TEXT_POST","IMAGE","VIDEO","CAROUSEL_ALBUM","AUDIO","REPOST_FACADE"]
data[].media_typeanyOf 2nullחובה באובייקט האב—
data[].is_replyboolean | nullחובה באובייקט האב—
data[].is_quote_postboolean | nullחובה באובייקט האב—
data[].has_repliesboolean | nullחובה באובייקט האב—
data[].root_post_idstring | nullרשות / פריט—
data[].root_post_idanyOf 1stringרשות / פריט
  • pattern: "^\\d{2,20}$"
data[].root_post_idanyOf 2nullרשות / פריט—
data[].replied_to_idstring | nullרשות / פריט—
data[].replied_to_idanyOf 1stringרשות / פריט
  • pattern: "^\\d{2,20}$"
data[].replied_to_idanyOf 2nullרשות / פריט—
profileobject | nullחובה באובייקט האב—
profileanyOf 1objectחובה באובייקט האב—
profile.usernameanyOf 1stringחובה באובייקט האב
  • pattern: "^[A-Za-z0-9._]{1,30}$"
profile.nameanyOf 1string | nullחובה באובייקט האב—
profile.nameanyOf 1 / anyOf 1stringחובה באובייקט האב
  • maxLength: 200
profile.nameanyOf 1 / anyOf 2nullחובה באובייקט האב—
profile.biographyanyOf 1string | nullחובה באובייקט האב—
profile.biographyanyOf 1 / anyOf 1stringחובה באובייקט האב
  • maxLength: 2000
profile.biographyanyOf 1 / anyOf 2nullחובה באובייקט האב—
profile.is_verifiedanyOf 1boolean | nullחובה באובייקט האב—
profile.follower_countanyOf 1integer | nullחובה באובייקט האב—
profile.follower_countanyOf 1 / anyOf 1integerחובה באובייקט האב
  • minimum: 0
  • maximum: 9007199254740991
profile.follower_countanyOf 1 / anyOf 2nullחובה באובייקט האב—
profileanyOf 2nullחובה באובייקט האב—
locationsarrayרשות / פריט
  • maxItems: 100
locations[]objectרשות / פריט—
locations[].idstringחובה באובייקט האב
  • pattern: "^\\d{2,20}$"
locations[].namestring | nullחובה באובייקט האב—
locations[].nameanyOf 1stringחובה באובייקט האב
  • maxLength: 200
locations[].nameanyOf 2nullחובה באובייקט האב—
locations[].addressstring | nullחובה באובייקט האב—
locations[].addressanyOf 1stringחובה באובייקט האב
  • maxLength: 500
locations[].addressanyOf 2nullחובה באובייקט האב—
locations[].citystring | nullחובה באובייקט האב—
locations[].cityanyOf 1stringחובה באובייקט האב
  • maxLength: 200
locations[].cityanyOf 2nullחובה באובייקט האב—
locations[].countrystring | nullחובה באובייקט האב—
locations[].countryanyOf 1stringחובה באובייקט האב
  • maxLength: 200
locations[].countryanyOf 2nullחובה באובייקט האב—
locations[].postal_codestring | nullחובה באובייקט האב—
locations[].postal_codeanyOf 1stringחובה באובייקט האב
  • maxLength: 100
locations[].postal_codeanyOf 2nullחובה באובייקט האב—
root_post_idstringרשות / פריט
  • pattern: "^\\d{2,20}$"
target_usernamestringרשות / פריט
  • pattern: "^[A-Za-z0-9._]{1,30}$"
coverageobjectחובה באובייקט האב—
coverage.completebooleanחובה באובייקט האב
  • const: false
coverage.next_cursorstring | nullחובה באובייקט האב—
coverage.next_cursoranyOf 1stringחובה באובייקט האב
  • minLength: 1
  • maxLength: 4096
coverage.next_cursoranyOf 2nullחובה באובייקט האב—
coverage.omitted_rowsintegerחובה באובייקט האב
  • minimum: 0
  • maximum: 9007199254740991
coverage.reasonsarrayחובה באובייקט האב
  • maxItems: 8
coverage.reasons[]stringרשות / פריט
  • maxLength: 400
quotaarrayחובה באובייקט האב
  • maxItems: 1
quota[]objectרשות / פריט—
quota[].providerstringחובה באובייקט האב
  • const: "meta"
quota[].usageobjectחובה באובייקט האב—
quota[].usage.call_countnumberרשות / פריט—
quota[].usage.total_cputimenumberרשות / פריט—
quota[].usage.total_timenumberרשות / פריט—
quota[].usage.estimated_time_to_regain_accessnumberרשות / פריט—
quota[].sourcesarrayחובה באובייקט האב
  • maxItems: 2
quota[].sources[]stringרשות / פריט
  • enum: ["x-app-usage","x-business-use-case-usage"]
JSON Schema מלא
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "contract_version": {
      "type": "string",
      "const": "threads-reads/v1"
    },
    "operation": {
      "type": "string",
      "const": "keyword_search"
    },
    "source": {
      "type": "string",
      "const": "official_threads_api"
    },
    "workspace_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "social_account_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "provider_account_id": {
      "type": "string",
      "pattern": "^\\d{2,20}$"
    },
    "provider_app_identity": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ]
    },
    "oauth_snapshot_id": {
      "anyOf": [
        {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        {
          "type": "null"
        }
      ]
    },
    "fetched_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "status": {
      "type": "string",
      "enum": [
        "available",
        "partial",
        "unavailable"
      ]
    },
    "unavailable_reason": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "grant_inventory_unknown",
            "missing_permissions",
            "issuing_app_unknown",
            "credential_unavailable",
            "credential_expired",
            "account_unhealthy",
            "provider_denied",
            "provider_rate_limited",
            "provider_unavailable",
            "provider_response_invalid"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "access": {
      "type": "object",
      "properties": {
        "required_permissions": {
          "maxItems": 4,
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]{0,99}$"
          }
        },
        "missing_permissions": {
          "maxItems": 4,
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]{0,99}$"
          }
        },
        "permission_state": {
          "type": "string",
          "enum": [
            "granted",
            "missing",
            "unknown"
          ]
        },
        "grant_evidence": {
          "type": "string",
          "enum": [
            "exact",
            "unknown"
          ]
        },
        "app_access": {
          "type": "string",
          "const": "unverified"
        }
      },
      "required": [
        "required_permissions",
        "missing_permissions",
        "permission_state",
        "grant_evidence",
        "app_access"
      ]
    },
    "data": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^\\d{2,20}$"
          },
          "text": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 30000
              },
              {
                "type": "null"
              }
            ]
          },
          "username": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[A-Za-z0-9._]{1,30}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "permalink": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "timestamp": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "media_type": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "TEXT",
                  "TEXT_POST",
                  "IMAGE",
                  "VIDEO",
                  "CAROUSEL_ALBUM",
                  "AUDIO",
                  "REPOST_FACADE"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "is_reply": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "is_quote_post": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "has_replies": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "root_post_id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{2,20}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "replied_to_id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{2,20}$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "text",
          "username",
          "permalink",
          "timestamp",
          "media_type",
          "is_reply",
          "is_quote_post",
          "has_replies"
        ]
      }
    },
    "profile": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "username": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._]{1,30}$"
            },
            "name": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "biography": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2000
                },
                {
                  "type": "null"
                }
              ]
            },
            "is_verified": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "follower_count": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "username",
            "name",
            "biography",
            "is_verified",
            "follower_count"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "locations": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^\\d{2,20}$"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "address": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          },
          "city": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "country": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "postal_code": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "address",
          "city",
          "country",
          "postal_code"
        ]
      }
    },
    "root_post_id": {
      "type": "string",
      "pattern": "^\\d{2,20}$"
    },
    "target_username": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._]{1,30}$"
    },
    "coverage": {
      "type": "object",
      "properties": {
        "complete": {
          "type": "boolean",
          "const": false
        },
        "next_cursor": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 4096
            },
            {
              "type": "null"
            }
          ]
        },
        "omitted_rows": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "reasons": {
          "maxItems": 8,
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 400
          }
        }
      },
      "required": [
        "complete",
        "next_cursor",
        "omitted_rows",
        "reasons"
      ]
    },
    "quota": {
      "maxItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "const": "meta"
          },
          "usage": {
            "type": "object",
            "properties": {
              "call_count": {
                "type": "number"
              },
              "total_cputime": {
                "type": "number"
              },
              "total_time": {
                "type": "number"
              },
              "estimated_time_to_regain_access": {
                "type": "number"
              }
            }
          },
          "sources": {
            "maxItems": 2,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "x-app-usage",
                "x-business-use-case-usage"
              ]
            }
          }
        },
        "required": [
          "provider",
          "usage",
          "sources"
        ]
      }
    }
  },
  "required": [
    "contract_version",
    "operation",
    "source",
    "workspace_id",
    "social_account_id",
    "provider_account_id",
    "provider_app_identity",
    "oauth_snapshot_id",
    "fetched_at",
    "status",
    "unavailable_reason",
    "access",
    "data",
    "profile",
    "coverage",
    "quota"
  ]
}

שגיאות וניסיונות חוזרים בטוחים

בדקו את סטטוס ה-HTTP ואת גוף התגובה. שגיאת אימות 400 עשויה להכיל ZodError; שגיאות מטפל משתמשות בשדות error, ‏message ו-code. שמרו request_id או x-request-id לאבחון, ללא אמצעי גישה. תקנו שגיאות גישה 401/403 לפני ניסיון חוזר, ופעלו לפי Retry-After עבור 429. אם תוצאת כתיבה אינה ודאית או שמוחזר 5xx, קראו תחילה את התוצאה הקיימת. השתמשו שוב במפתח אידמפוטנטיות רק במקומות הנתמכים; התנהגות הניסיון החוזר משתנה בין פעולות ואינה מבטיחה מסירה בדיוק פעם אחת.

מדריך לפתרון בעיות

דוגמאות

הדוגמאות משתמשות בערכים בדויים שנבדקו מול הסכמות. החליפו את המזהים בכאלה שאתם מורשים להשתמש בהם, את המדיה בנכסים מוכנים ואת התאריכים במועד הפרסום שאישרתם. בדקו את התאמת החשבון לפני שליחת כתיבה. העמוד הזה אינו שולח בקשות API.

הגדירו בשרת שלכם SOSOAPI_ACCESS_TOKEN לאמצעי גישה שהפעולה הזו מקבלת, והשאירו אותו מחוץ לקוד הדפדפן. עבור סוכן AI, השתמשו ב-sosoapi auth login כדי להיכנס דרך הדפדפן ולאפשר ל-CLI לרענן את אמצעי הגישה שלו.

request.json

{
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "social_account_id": "22222222-2222-4222-8222-222222222222",
  "q": "fictional example",
  "search_type": "RECENT",
  "search_mode": "KEYWORD",
  "limit": 25
}

cURL

curl --request POST \
  "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/analytics-api/threads-reads/keyword-search" \
  -H "Authorization: Bearer $SOSOAPI_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @request.json

JavaScript

// Server-side JavaScript. Do not print tokens or credential-bearing responses.
const token = process.env.SOSOAPI_ACCESS_TOKEN;
if (!token) throw new Error("Set an accepted credential for this operation");
const response = await fetch("https://gqeshlawtcexsapabaui.supabase.co/functions/v1/analytics-api/threads-reads/keyword-search", {
  method: "POST",
  headers: { "Content-Type": "application/json", Authorization: "Bearer " + token },
  body: JSON.stringify({
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "social_account_id": "22222222-2222-4222-8222-222222222222",
  "q": "fictional example",
  "search_type": "RECENT",
  "search_mode": "KEYWORD",
  "limit": 25
})
});
const result = await response.json();
// Check response.ok, the operation-specific body and completion state before continuing.

CLI

npx sosoapi api post /analytics-api/threads-reads/keyword-search < request.json

דוגמת תגובה סינתטית

{
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "social_account_id": "22222222-2222-4222-8222-222222222222",
  "contract_version": "threads-reads/v1",
  "operation": "keyword_search",
  "source": "official_threads_api",
  "provider_account_id": "12345",
  "provider_app_identity": null,
  "oauth_snapshot_id": null,
  "fetched_at": "2099-01-15T09:00:00Z",
  "status": "unavailable",
  "unavailable_reason": "issuing_app_unknown",
  "access": {
    "required_permissions": [
      "threads_basic",
      "threads_keyword_search"
    ],
    "missing_permissions": [],
    "permission_state": "unknown",
    "grant_evidence": "unknown",
    "app_access": "unverified"
  },
  "data": [],
  "profile": null,
  "quota": [],
  "coverage": {
    "complete": false,
    "next_cursor": null,
    "omitted_rows": 0,
    "reasons": [
      "Fictional documentation example: no provider request was made and no account data was read.",
      "App access and any pending permission review remain unverified; this is not successful provider or public-access evidence."
    ]
  }
}

MCP: sosoapi_search_threads