town.delve.unspecced.getPostThreadV2

delve.town

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "(NOTE: this endpoint is under development and WILL change without notice. Don't use it until it is moved out of `unspecced` or your application WILL break) Get posts in a thread. It is based in an anchor post at any depth of the tree, and returns posts above it (recursively resolving the parent, without further branching to their replies) and below it (recursive replies, with branching to their replies). Does not require auth, but additional metadata and filtering will be applied for authed requests.",
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "hasOtherReplies": {
              "description": "Whether this thread has additional replies. If true, a call can be made to the `getPostThreadOtherV2` endpoint to retrieve them.",
              "type": "boolean"
            },
            "thread": {
              "description": "A flat list of thread items. The depth of each item is indicated by the depth property inside the item.",
              "items": {
                "ref": "#threadItem",
                "type": "ref"
              },
              "type": "array"
            },
            "threadgate": {
              "ref": "town.delve.feed.defs#threadgateView",
              "type": "ref"
            }
          },
          "required": [
            "thread",
            "hasOtherReplies"
          ],
          "type": "object"
        }
      },
      "parameters": {
        "properties": {
          "above": {
            "default": true,
            "description": "Whether to include parents above the anchor.",
            "type": "boolean"
          },
          "anchor": {
            "description": "Reference (AT-URI) to post record. This is the anchor post, and the thread will be built around it. It can be any post in the tree, not necessarily a root post.",
            "format": "at-uri",
            "type": "string"
          },
          "below": {
            "default": 6,
            "description": "How many levels of replies to include below the anchor.",
            "maximum": 20,
            "minimum": 0,
            "type": "integer"
          },
          "branchingFactor": {
            "default": 10,
            "description": "Maximum of replies to include at each level of the thread, except for the direct replies to the anchor, which are (NOTE: currently, during unspecced phase) all returned (NOTE: later they might be paginated).",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "sort": {
            "default": "oldest",
            "description": "Sorting for the thread replies.",
            "knownValues": [
              "newest",
              "oldest",
              "top"
            ],
            "type": "string"
          }
        },
        "required": [
          "anchor"
        ],
        "type": "params"
      },
      "type": "query"
    },
    "threadItem": {
      "properties": {
        "depth": {
          "description": "The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths.",
          "type": "integer"
        },
        "uri": {
          "format": "at-uri",
          "type": "string"
        },
        "value": {
          "refs": [
            "town.delve.unspecced.defs#threadItemPost",
            "town.delve.unspecced.defs#threadItemNoUnauthenticated",
            "town.delve.unspecced.defs#threadItemNotFound",
            "town.delve.unspecced.defs#threadItemBlocked"
          ],
          "type": "union"
        }
      },
      "required": [
        "uri",
        "depth",
        "value"
      ],
      "type": "object"
    }
  },
  "id": "town.delve.unspecced.getPostThreadV2",
  "lexicon": 1
}

Validate Record

Validate a record against town.delve.unspecced.getPostThreadV2

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:qzqct2rrq4u2gmy5g3mjxske
CID
bafyreic4irfr4xm7rtlc2v3hcu5u76jsgifkkv6ev43foixqvu6ik4lcku
Indexed At
2026-09-11 20:05 UTC
AT-URI
at://did:plc:qzqct2rrq4u2gmy5g3mjxske/com.atproto.lexicon.schema/town.delve.unspecced.getPostThreadV2

Referenced Schemas (5)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • town.delve.unspecced.getPostThreadOtherV2 querynot from the namespace authority

    (NOTE: this endpoint is under development and WILL change without notice. Don't use it until it is moved out of `unspecced` or your application WILL break) Get additional posts under a thread e.g. replies hidden by thre…

  • Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.

  • town.delve.feed.getPostThread querynot from the namespace authority

    Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.

  • Get crosspost thread items for an anchor. Mirrors getPostThread shape but uses isolated crosspost-thread traversal.

  • Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.

Lexicon Garden

@