Die Suche lädt erst bei Nutzung. Durchsuche unten alle Kategorien.

Analysen und Insights

Eine Threads-Unterhaltung lesen

Eine eigene Graph-Wurzel bestätigen, dann eine abgeflachte Antwortseite lesen; Beziehungen zu fremden Wurzeln auslassen.

POST /analytics-api/threads-reads/conversation/query

Vertrag geprüft: · sha256:11debf801a5e6096

Überblick

Eine eigene Graph-Wurzel bestätigen, dann eine abgeflachte Antwortseite lesen; Beziehungen zu fremden Wurzeln auslassen.

Eine erfolgreiche HTTP-Antwort kann Annahme statt Abschluss bedeuten. Speichere bei Hintergrundarbeit die ID und prüfe dieselbe Operation bis zum Abschluss. Geplante oder angenommene Beiträge gelten erst nach Plattformbestätigung als veröffentlicht; ein Client-Timeout klärt das Ergebnis nicht.

Authentifizierung und Berechtigungen

Akzeptierte Zugangsdatenklassen
user_session, delegated_oauth, personal_access_token
Delegierte Funktion
agent:operate
Minimale Workspace-Rolle
viewer
Zugriffsumfang
Ressourcen, auf die dieser Nutzer zugreifen darf
Zustimmung für alle Workspaces erforderlich
Nein
Ändert Zustand
Nein
Nach Abschluss der Operation
bounded official data or explicit unavailable; granted scopes do not establish public App Review approval

Ein Token nutzt nur Eigentümerrechte. Jede Anfrage prüft Workspace-Mitgliedschaft, Ressourceneigentum, gewählte Workspaces und Funktionen. core und full ändern sichtbare Tools; sie erteilen keinen Zugriff.

Anfragefelder

Erforderlich bedeutet innerhalb des übergeordneten Objekts und gewählten Zweigs erforderlich. Ein erforderliches Kind macht kein optionales Elternobjekt erforderlich. Regeln und Feldnamen unten stammen aus dem Vertrag.

Anfragefelder
Feld / VarianteTyp / erforderlichEinschränkungen
$objectIm Elternobjekt erforderlich
  • additionalProperties: false
workspace_idstringIm Elternobjekt erforderlich
  • 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_idstringIm Elternobjekt erforderlich
  • 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)$"
root_post_idstringIm Elternobjekt erforderlich
  • pattern: "^\\d{2,20}$"
limitintegerOptional / Element
  • minimum: 1
  • maximum: 100
  • default: 25
afterstringOptional / Element
  • minLength: 1
  • maxLength: 4096
reversebooleanOptional / Element
  • default: true
Vollständiges 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)$"
    },
    "root_post_id": {
      "type": "string",
      "pattern": "^\\d{2,20}$"
    },
    "limit": {
      "default": 25,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "after": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096
    },
    "reverse": {
      "default": true,
      "type": "boolean"
    }
  },
  "required": [
    "workspace_id",
    "social_account_id",
    "root_post_id"
  ],
  "additionalProperties": false
}

Antwort und Abschluss

HTTP-Erfolgsstatus: 200. Wenn die Operation abgeschlossen ist: bounded official data or explicit unavailable; granted scopes do not establish public App Review approval.

Eine erfolgreiche HTTP-Antwort kann Annahme statt Abschluss bedeuten. Speichere bei Hintergrundarbeit die ID und prüfe dieselbe Operation bis zum Abschluss. Geplante oder angenommene Beiträge gelten erst nach Plattformbestätigung als veröffentlicht; ein Client-Timeout klärt das Ergebnis nicht.

Erforderlich bedeutet innerhalb des übergeordneten Objekts und gewählten Zweigs erforderlich. Ein erforderliches Kind macht kein optionales Elternobjekt erforderlich. Regeln und Feldnamen unten stammen aus dem Vertrag.

Antwort und Abschluss
Feld / VarianteTyp / erforderlichEinschränkungen
$objectIm Elternobjekt erforderlich—
contract_versionstringIm Elternobjekt erforderlich
  • const: "threads-reads/v1"
operationstringIm Elternobjekt erforderlich
  • const: "conversation"
sourcestringIm Elternobjekt erforderlich
  • const: "official_threads_api"
workspace_idstringIm Elternobjekt erforderlich
  • 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_idstringIm Elternobjekt erforderlich
  • 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_idstringIm Elternobjekt erforderlich
  • pattern: "^\\d{2,20}$"
provider_app_identitystring | nullIm Elternobjekt erforderlich—
provider_app_identityanyOf 1stringIm Elternobjekt erforderlich
  • minLength: 1
  • maxLength: 100
provider_app_identityanyOf 2nullIm Elternobjekt erforderlich—
oauth_snapshot_idstring | nullIm Elternobjekt erforderlich—
oauth_snapshot_idanyOf 1stringIm Elternobjekt erforderlich
  • 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 2nullIm Elternobjekt erforderlich—
fetched_atstringIm Elternobjekt erforderlich
  • 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)))$"
statusstringIm Elternobjekt erforderlich
  • enum: ["available","partial","unavailable"]
unavailable_reasonstring | nullIm Elternobjekt erforderlich—
unavailable_reasonanyOf 1stringIm Elternobjekt erforderlich
  • 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 2nullIm Elternobjekt erforderlich—
accessobjectIm Elternobjekt erforderlich—
access.required_permissionsarrayIm Elternobjekt erforderlich
  • maxItems: 4
access.required_permissions[]stringOptional / Element
  • pattern: "^[a-z][a-z0-9_]{0,99}$"
access.missing_permissionsarrayIm Elternobjekt erforderlich
  • maxItems: 4
access.missing_permissions[]stringOptional / Element
  • pattern: "^[a-z][a-z0-9_]{0,99}$"
access.permission_statestringIm Elternobjekt erforderlich
  • enum: ["granted","missing","unknown"]
access.grant_evidencestringIm Elternobjekt erforderlich
  • enum: ["exact","unknown"]
access.app_accessstringIm Elternobjekt erforderlich
  • const: "unverified"
dataarrayIm Elternobjekt erforderlich
  • maxItems: 100
data[]objectOptional / Element—
data[].idstringIm Elternobjekt erforderlich
  • pattern: "^\\d{2,20}$"
data[].textstring | nullIm Elternobjekt erforderlich—
data[].textanyOf 1stringIm Elternobjekt erforderlich
  • maxLength: 30000
data[].textanyOf 2nullIm Elternobjekt erforderlich—
data[].usernamestring | nullIm Elternobjekt erforderlich—
data[].usernameanyOf 1stringIm Elternobjekt erforderlich
  • pattern: "^[A-Za-z0-9._]{1,30}$"
data[].usernameanyOf 2nullIm Elternobjekt erforderlich—
data[].permalinkstring | nullIm Elternobjekt erforderlich—
data[].permalinkanyOf 1stringIm Elternobjekt erforderlich
  • format: "uri"
data[].permalinkanyOf 2nullIm Elternobjekt erforderlich—
data[].timestampstring | nullIm Elternobjekt erforderlich—
data[].timestampanyOf 1stringIm Elternobjekt erforderlich
  • 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 2nullIm Elternobjekt erforderlich—
data[].media_typestring | nullIm Elternobjekt erforderlich—
data[].media_typeanyOf 1stringIm Elternobjekt erforderlich
  • enum: ["TEXT","TEXT_POST","IMAGE","VIDEO","CAROUSEL_ALBUM","AUDIO","REPOST_FACADE"]
data[].media_typeanyOf 2nullIm Elternobjekt erforderlich—
data[].is_replyboolean | nullIm Elternobjekt erforderlich—
data[].is_quote_postboolean | nullIm Elternobjekt erforderlich—
data[].has_repliesboolean | nullIm Elternobjekt erforderlich—
data[].root_post_idstring | nullOptional / Element—
data[].root_post_idanyOf 1stringOptional / Element
  • pattern: "^\\d{2,20}$"
data[].root_post_idanyOf 2nullOptional / Element—
data[].replied_to_idstring | nullOptional / Element—
data[].replied_to_idanyOf 1stringOptional / Element
  • pattern: "^\\d{2,20}$"
data[].replied_to_idanyOf 2nullOptional / Element—
profileobject | nullIm Elternobjekt erforderlich—
profileanyOf 1objectIm Elternobjekt erforderlich—
profile.usernameanyOf 1stringIm Elternobjekt erforderlich
  • pattern: "^[A-Za-z0-9._]{1,30}$"
profile.nameanyOf 1string | nullIm Elternobjekt erforderlich—
profile.nameanyOf 1 / anyOf 1stringIm Elternobjekt erforderlich
  • maxLength: 200
profile.nameanyOf 1 / anyOf 2nullIm Elternobjekt erforderlich—
profile.biographyanyOf 1string | nullIm Elternobjekt erforderlich—
profile.biographyanyOf 1 / anyOf 1stringIm Elternobjekt erforderlich
  • maxLength: 2000
profile.biographyanyOf 1 / anyOf 2nullIm Elternobjekt erforderlich—
profile.is_verifiedanyOf 1boolean | nullIm Elternobjekt erforderlich—
profile.follower_countanyOf 1integer | nullIm Elternobjekt erforderlich—
profile.follower_countanyOf 1 / anyOf 1integerIm Elternobjekt erforderlich
  • minimum: 0
  • maximum: 9007199254740991
profile.follower_countanyOf 1 / anyOf 2nullIm Elternobjekt erforderlich—
profileanyOf 2nullIm Elternobjekt erforderlich—
locationsarrayOptional / Element
  • maxItems: 100
locations[]objectOptional / Element—
locations[].idstringIm Elternobjekt erforderlich
  • pattern: "^\\d{2,20}$"
locations[].namestring | nullIm Elternobjekt erforderlich—
locations[].nameanyOf 1stringIm Elternobjekt erforderlich
  • maxLength: 200
locations[].nameanyOf 2nullIm Elternobjekt erforderlich—
locations[].addressstring | nullIm Elternobjekt erforderlich—
locations[].addressanyOf 1stringIm Elternobjekt erforderlich
  • maxLength: 500
locations[].addressanyOf 2nullIm Elternobjekt erforderlich—
locations[].citystring | nullIm Elternobjekt erforderlich—
locations[].cityanyOf 1stringIm Elternobjekt erforderlich
  • maxLength: 200
locations[].cityanyOf 2nullIm Elternobjekt erforderlich—
locations[].countrystring | nullIm Elternobjekt erforderlich—
locations[].countryanyOf 1stringIm Elternobjekt erforderlich
  • maxLength: 200
locations[].countryanyOf 2nullIm Elternobjekt erforderlich—
locations[].postal_codestring | nullIm Elternobjekt erforderlich—
locations[].postal_codeanyOf 1stringIm Elternobjekt erforderlich
  • maxLength: 100
locations[].postal_codeanyOf 2nullIm Elternobjekt erforderlich—
root_post_idstringIm Elternobjekt erforderlich
  • pattern: "^\\d{2,20}$"
target_usernamestringOptional / Element
  • pattern: "^[A-Za-z0-9._]{1,30}$"
coverageobjectIm Elternobjekt erforderlich—
coverage.completebooleanIm Elternobjekt erforderlich
  • const: false
coverage.next_cursorstring | nullIm Elternobjekt erforderlich—
coverage.next_cursoranyOf 1stringIm Elternobjekt erforderlich
  • minLength: 1
  • maxLength: 4096
coverage.next_cursoranyOf 2nullIm Elternobjekt erforderlich—
coverage.omitted_rowsintegerIm Elternobjekt erforderlich
  • minimum: 0
  • maximum: 9007199254740991
coverage.reasonsarrayIm Elternobjekt erforderlich
  • maxItems: 8
coverage.reasons[]stringOptional / Element
  • maxLength: 400
quotaarrayIm Elternobjekt erforderlich
  • maxItems: 1
quota[]objectOptional / Element—
quota[].providerstringIm Elternobjekt erforderlich
  • const: "meta"
quota[].usageobjectIm Elternobjekt erforderlich—
quota[].usage.call_countnumberOptional / Element—
quota[].usage.total_cputimenumberOptional / Element—
quota[].usage.total_timenumberOptional / Element—
quota[].usage.estimated_time_to_regain_accessnumberOptional / Element—
quota[].sourcesarrayIm Elternobjekt erforderlich
  • maxItems: 2
quota[].sources[]stringOptional / Element
  • enum: ["x-app-usage","x-business-use-case-usage"]
Vollständiges 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": "conversation"
    },
    "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",
    "root_post_id",
    "coverage",
    "quota"
  ]
}

Fehler und sichere Wiederholungen

Prüfe HTTP-Status und Antwortinhalt. Ein 400-Validierungsfehler kann einen ZodError enthalten; Handler-Fehler verwenden die Felder error, message und code. Bewahre request_id oder x-request-id zur Diagnose ohne Zugangsdaten auf. Behebe 401/403-Zugriffsfehler vor einem erneuten Versuch und beachte Retry-After bei 429. Ist ein Schreibvorgang ungewiss oder liefert 5xx, lies zuerst das bestehende Ergebnis. Verwende einen Idempotenzschlüssel nur wieder, wo dies unterstützt wird; Wiederholungen unterscheiden sich je nach Operation und garantieren keine genau einmalige Zustellung.

Anleitung zur Fehlerbehebung

Beispiele

Diese Beispiele nutzen anhand der Schemas geprüfte fiktive Werte. Ersetze IDs durch autorisierte IDs, Medien durch bereite Assets und Daten durch bestätigte Veröffentlichungszeiten. Prüfe Kontoeignung vor Schreibvorgängen. Diese Seite sendet keine API-Anfragen.

Setze SOSOAPI_ACCESS_TOKEN auf deinem Server auf akzeptierte Zugangsdaten dieser Operation und halte es aus Browsercode heraus. Für KI-Agenten nutze sosoapi auth login zur Browseranmeldung und lass die CLI Zugangsdaten erneuern.

request.json

{
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "social_account_id": "22222222-2222-4222-8222-222222222222",
  "root_post_id": "54321",
  "limit": 25,
  "reverse": true
}

cURL

curl --request POST \
  "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/analytics-api/threads-reads/conversation/query" \
  -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/conversation/query", {
  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",
  "root_post_id": "54321",
  "limit": 25,
  "reverse": true
})
});
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/conversation/query < request.json

Synthetisches Antwortbeispiel

{
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "social_account_id": "22222222-2222-4222-8222-222222222222",
  "contract_version": "threads-reads/v1",
  "operation": "conversation",
  "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_read_replies"
    ],
    "missing_permissions": [],
    "permission_state": "unknown",
    "grant_evidence": "unknown",
    "app_access": "unverified"
  },
  "data": [],
  "profile": null,
  "root_post_id": "54321",
  "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_query_threads_conversation