Sökningen laddas först när du använder den. Bläddra bland alla kategorier nedan.

Analys och insikter

Läs en Threads-konversation

Verifiera en egen Graph-rot och läs sedan en utplattad svarssida; utelämna relationer till andras rötter.

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

Kontrakt granskat: · sha256:11debf801a5e6096

Översikt

Verifiera en egen Graph-rot och läs sedan en utplattad svarssida; utelämna relationer till andras rötter.

Ett lyckat HTTP-svar kan betyda att en begäran accepterats snarare än slutförts. Spara returnerat ID för bakgrundsarbete och kontrollera samma åtgärd tills den är klar. Ett schemalagt eller accepterat inlägg är publicerat först när plattformen bekräftar det; en klienttimeout fastställer inte resultatet.

Autentisering och behörigheter

Godtagna typer av autentiseringsuppgifter
user_session, delegated_oauth, personal_access_token
Delegerad funktion
agent:operate
Lägsta arbetsyteroll
viewer
Åtkomstomfång
Resurser som denna användare har behörighet att komma åt
Samtycke för alla arbetsytor krävs
Nej
Ändrar tillstånd
Nej
När åtgärden är klar
bounded official data or explicit unavailable; granted scopes do not establish public App Review approval

En token får endast använda ägarens rättigheter. Varje anrop kontrollerar arbetsytemedlemskap, resursägarskap, valda arbetsytor och beviljade funktioner. Profilerna core och full ändrar vilka verktyg som visas; de ger ingen åtkomst.

Anropsfält

Obligatoriskt betyder obligatoriskt inom sitt överordnade objekt och vald gren. Ett obligatoriskt underfält gör inte ett valfritt överordnat objekt obligatoriskt. Regler och fältnamn nedan kopieras från kontraktet.

Anropsfält
Fält / grenTyp / obligatorisktBegränsningar
$objectObligatoriskt i överordnat objekt
  • additionalProperties: false
workspace_idstringObligatoriskt i överordnat objekt
  • 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_idstringObligatoriskt i överordnat objekt
  • 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_idstringObligatoriskt i överordnat objekt
  • pattern: "^\\d{2,20}$"
limitintegerValfritt / objekt
  • minimum: 1
  • maximum: 100
  • default: 25
afterstringValfritt / objekt
  • minLength: 1
  • maxLength: 4096
reversebooleanValfritt / objekt
  • default: true
Fullständigt 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
}

Svar och slutförande

HTTP-status vid framgång: 200. När åtgärden är klar: bounded official data or explicit unavailable; granted scopes do not establish public App Review approval.

Ett lyckat HTTP-svar kan betyda att en begäran accepterats snarare än slutförts. Spara returnerat ID för bakgrundsarbete och kontrollera samma åtgärd tills den är klar. Ett schemalagt eller accepterat inlägg är publicerat först när plattformen bekräftar det; en klienttimeout fastställer inte resultatet.

Obligatoriskt betyder obligatoriskt inom sitt överordnade objekt och vald gren. Ett obligatoriskt underfält gör inte ett valfritt överordnat objekt obligatoriskt. Regler och fältnamn nedan kopieras från kontraktet.

Svar och slutförande
Fält / grenTyp / obligatorisktBegränsningar
$objectObligatoriskt i överordnat objekt—
contract_versionstringObligatoriskt i överordnat objekt
  • const: "threads-reads/v1"
operationstringObligatoriskt i överordnat objekt
  • const: "conversation"
sourcestringObligatoriskt i överordnat objekt
  • const: "official_threads_api"
workspace_idstringObligatoriskt i överordnat objekt
  • 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_idstringObligatoriskt i överordnat objekt
  • 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_idstringObligatoriskt i överordnat objekt
  • pattern: "^\\d{2,20}$"
provider_app_identitystring | nullObligatoriskt i överordnat objekt—
provider_app_identityanyOf 1stringObligatoriskt i överordnat objekt
  • minLength: 1
  • maxLength: 100
provider_app_identityanyOf 2nullObligatoriskt i överordnat objekt—
oauth_snapshot_idstring | nullObligatoriskt i överordnat objekt—
oauth_snapshot_idanyOf 1stringObligatoriskt i överordnat objekt
  • 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 2nullObligatoriskt i överordnat objekt—
fetched_atstringObligatoriskt i överordnat objekt
  • 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)))$"
statusstringObligatoriskt i överordnat objekt
  • enum: ["available","partial","unavailable"]
unavailable_reasonstring | nullObligatoriskt i överordnat objekt—
unavailable_reasonanyOf 1stringObligatoriskt i överordnat objekt
  • 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 2nullObligatoriskt i överordnat objekt—
accessobjectObligatoriskt i överordnat objekt—
access.required_permissionsarrayObligatoriskt i överordnat objekt
  • maxItems: 4
access.required_permissions[]stringValfritt / objekt
  • pattern: "^[a-z][a-z0-9_]{0,99}$"
access.missing_permissionsarrayObligatoriskt i överordnat objekt
  • maxItems: 4
access.missing_permissions[]stringValfritt / objekt
  • pattern: "^[a-z][a-z0-9_]{0,99}$"
access.permission_statestringObligatoriskt i överordnat objekt
  • enum: ["granted","missing","unknown"]
access.grant_evidencestringObligatoriskt i överordnat objekt
  • enum: ["exact","unknown"]
access.app_accessstringObligatoriskt i överordnat objekt
  • const: "unverified"
dataarrayObligatoriskt i överordnat objekt
  • maxItems: 100
data[]objectValfritt / objekt—
data[].idstringObligatoriskt i överordnat objekt
  • pattern: "^\\d{2,20}$"
data[].textstring | nullObligatoriskt i överordnat objekt—
data[].textanyOf 1stringObligatoriskt i överordnat objekt
  • maxLength: 30000
data[].textanyOf 2nullObligatoriskt i överordnat objekt—
data[].usernamestring | nullObligatoriskt i överordnat objekt—
data[].usernameanyOf 1stringObligatoriskt i överordnat objekt
  • pattern: "^[A-Za-z0-9._]{1,30}$"
data[].usernameanyOf 2nullObligatoriskt i överordnat objekt—
data[].permalinkstring | nullObligatoriskt i överordnat objekt—
data[].permalinkanyOf 1stringObligatoriskt i överordnat objekt
  • format: "uri"
data[].permalinkanyOf 2nullObligatoriskt i överordnat objekt—
data[].timestampstring | nullObligatoriskt i överordnat objekt—
data[].timestampanyOf 1stringObligatoriskt i överordnat objekt
  • 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 2nullObligatoriskt i överordnat objekt—
data[].media_typestring | nullObligatoriskt i överordnat objekt—
data[].media_typeanyOf 1stringObligatoriskt i överordnat objekt
  • enum: ["TEXT","TEXT_POST","IMAGE","VIDEO","CAROUSEL_ALBUM","AUDIO","REPOST_FACADE"]
data[].media_typeanyOf 2nullObligatoriskt i överordnat objekt—
data[].is_replyboolean | nullObligatoriskt i överordnat objekt—
data[].is_quote_postboolean | nullObligatoriskt i överordnat objekt—
data[].has_repliesboolean | nullObligatoriskt i överordnat objekt—
data[].root_post_idstring | nullValfritt / objekt—
data[].root_post_idanyOf 1stringValfritt / objekt
  • pattern: "^\\d{2,20}$"
data[].root_post_idanyOf 2nullValfritt / objekt—
data[].replied_to_idstring | nullValfritt / objekt—
data[].replied_to_idanyOf 1stringValfritt / objekt
  • pattern: "^\\d{2,20}$"
data[].replied_to_idanyOf 2nullValfritt / objekt—
profileobject | nullObligatoriskt i överordnat objekt—
profileanyOf 1objectObligatoriskt i överordnat objekt—
profile.usernameanyOf 1stringObligatoriskt i överordnat objekt
  • pattern: "^[A-Za-z0-9._]{1,30}$"
profile.nameanyOf 1string | nullObligatoriskt i överordnat objekt—
profile.nameanyOf 1 / anyOf 1stringObligatoriskt i överordnat objekt
  • maxLength: 200
profile.nameanyOf 1 / anyOf 2nullObligatoriskt i överordnat objekt—
profile.biographyanyOf 1string | nullObligatoriskt i överordnat objekt—
profile.biographyanyOf 1 / anyOf 1stringObligatoriskt i överordnat objekt
  • maxLength: 2000
profile.biographyanyOf 1 / anyOf 2nullObligatoriskt i överordnat objekt—
profile.is_verifiedanyOf 1boolean | nullObligatoriskt i överordnat objekt—
profile.follower_countanyOf 1integer | nullObligatoriskt i överordnat objekt—
profile.follower_countanyOf 1 / anyOf 1integerObligatoriskt i överordnat objekt
  • minimum: 0
  • maximum: 9007199254740991
profile.follower_countanyOf 1 / anyOf 2nullObligatoriskt i överordnat objekt—
profileanyOf 2nullObligatoriskt i överordnat objekt—
locationsarrayValfritt / objekt
  • maxItems: 100
locations[]objectValfritt / objekt—
locations[].idstringObligatoriskt i överordnat objekt
  • pattern: "^\\d{2,20}$"
locations[].namestring | nullObligatoriskt i överordnat objekt—
locations[].nameanyOf 1stringObligatoriskt i överordnat objekt
  • maxLength: 200
locations[].nameanyOf 2nullObligatoriskt i överordnat objekt—
locations[].addressstring | nullObligatoriskt i överordnat objekt—
locations[].addressanyOf 1stringObligatoriskt i överordnat objekt
  • maxLength: 500
locations[].addressanyOf 2nullObligatoriskt i överordnat objekt—
locations[].citystring | nullObligatoriskt i överordnat objekt—
locations[].cityanyOf 1stringObligatoriskt i överordnat objekt
  • maxLength: 200
locations[].cityanyOf 2nullObligatoriskt i överordnat objekt—
locations[].countrystring | nullObligatoriskt i överordnat objekt—
locations[].countryanyOf 1stringObligatoriskt i överordnat objekt
  • maxLength: 200
locations[].countryanyOf 2nullObligatoriskt i överordnat objekt—
locations[].postal_codestring | nullObligatoriskt i överordnat objekt—
locations[].postal_codeanyOf 1stringObligatoriskt i överordnat objekt
  • maxLength: 100
locations[].postal_codeanyOf 2nullObligatoriskt i överordnat objekt—
root_post_idstringObligatoriskt i överordnat objekt
  • pattern: "^\\d{2,20}$"
target_usernamestringValfritt / objekt
  • pattern: "^[A-Za-z0-9._]{1,30}$"
coverageobjectObligatoriskt i överordnat objekt—
coverage.completebooleanObligatoriskt i överordnat objekt
  • const: false
coverage.next_cursorstring | nullObligatoriskt i överordnat objekt—
coverage.next_cursoranyOf 1stringObligatoriskt i överordnat objekt
  • minLength: 1
  • maxLength: 4096
coverage.next_cursoranyOf 2nullObligatoriskt i överordnat objekt—
coverage.omitted_rowsintegerObligatoriskt i överordnat objekt
  • minimum: 0
  • maximum: 9007199254740991
coverage.reasonsarrayObligatoriskt i överordnat objekt
  • maxItems: 8
coverage.reasons[]stringValfritt / objekt
  • maxLength: 400
quotaarrayObligatoriskt i överordnat objekt
  • maxItems: 1
quota[]objectValfritt / objekt—
quota[].providerstringObligatoriskt i överordnat objekt
  • const: "meta"
quota[].usageobjectObligatoriskt i överordnat objekt—
quota[].usage.call_countnumberValfritt / objekt—
quota[].usage.total_cputimenumberValfritt / objekt—
quota[].usage.total_timenumberValfritt / objekt—
quota[].usage.estimated_time_to_regain_accessnumberValfritt / objekt—
quota[].sourcesarrayObligatoriskt i överordnat objekt
  • maxItems: 2
quota[].sources[]stringValfritt / objekt
  • enum: ["x-app-usage","x-business-use-case-usage"]
Fullständigt 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"
  ]
}

Fel och säkra nya försök

Kontrollera HTTP-status och svarskropp. Ett valideringsfel med 400 kan innehålla ZodError; hanterarfel använder fälten error, message och code. Spara request_id eller x-request-id för felsökning, utan inloggningsuppgifter. Åtgärda åtkomstfel med 401/403 innan du försöker igen och följ Retry-After vid 429. Om en skrivning är osäker eller returnerar 5xx, läs först det befintliga resultatet. Återanvänd en idempotensnyckel endast där det stöds; försöksbeteendet varierar mellan åtgärder och garanterar inte leverans exakt en gång.

Felsökningsguide

Exempel

Exemplen använder fiktiva värden som kontrollerats mot schemana. Ersätt ID:n med sådana du får använda, medier med färdiga mediefiler och datum med din bekräftade publiceringstid. Kontrollera kontots behörighet före en skrivning. Denna sida skickar inga API-anrop.

Sätt SOSOAPI_ACCESS_TOKEN på servern till en autentiseringsuppgift som åtgärden godtar och håll den borta från webbläsarkod. För en AI-agent använder du sosoapi auth login för att logga in via webbläsaren och låter CLI förnya sina uppgifter.

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

Syntetiskt svarsexempel

{
  "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