app.didpic.feed.getTagFeedPublic

lexicons.didpic.app

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Unauthenticated tag feed for public web landings. Returns up to `limit` most-recent posts using the hashtag, filtered to those with no labels (post or author) so the public surface never renders age-restricted imagery. `postCount` is the global tag popularity, not the size of the returned slice.",
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "postCount": {
              "description": "Total distinct records (posts + comments) using this tag, ignoring labels.",
              "minimum": 0,
              "type": "integer"
            },
            "posts": {
              "description": "Up to `limit` recent unlabelled posts. Each post carries its author's PDS for blob URL construction.",
              "items": {
                "ref": "#postCard",
                "type": "ref"
              },
              "type": "array"
            },
            "tag": {
              "type": "string"
            }
          },
          "required": [
            "tag",
            "postCount",
            "posts"
          ],
          "type": "object"
        }
      },
      "parameters": {
        "properties": {
          "limit": {
            "default": 9,
            "maximum": 25,
            "minimum": 1,
            "type": "integer"
          },
          "tag": {
            "description": "Hashtag without the leading #. Lowercased server-side.",
            "maxGraphemes": 64,
            "maxLength": 640,
            "type": "string"
          }
        },
        "required": [
          "tag"
        ],
        "type": "params"
      },
      "type": "query"
    },
    "postCard": {
      "properties": {
        "alt": {
          "type": "string"
        },
        "aspectRatio": {
          "properties": {
            "height": {
              "minimum": 1,
              "type": "integer"
            },
            "width": {
              "minimum": 1,
              "type": "integer"
            }
          },
          "type": "object"
        },
        "authorDid": {
          "format": "did",
          "type": "string"
        },
        "authorDisplayName": {
          "type": "string"
        },
        "authorHandle": {
          "format": "handle",
          "type": "string"
        },
        "cid": {
          "format": "cid",
          "type": "string"
        },
        "imageCid": {
          "format": "cid",
          "type": "string"
        },
        "pds": {
          "description": "Author's PDS endpoint. Use to construct the post's image blob URL.",
          "format": "uri",
          "type": "string"
        },
        "uri": {
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "cid",
        "authorDid",
        "imageCid"
      ],
      "type": "object"
    }
  },
  "id": "app.didpic.feed.getTagFeedPublic",
  "lexicon": 1
}

Validate Record

Validate a record against app.didpic.feed.getTagFeedPublic

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:an2jtp4jgkkbtmwfzhpbxawd
CID
bafyreieh2rp57xe45xxzshhzzkvvs7bxk3o3dgxtntddt53xqjyzr6jwqq
Indexed At
2026-05-24 19:57 UTC
AT-URI
at://did:plc:an2jtp4jgkkbtmwfzhpbxawd/com.atproto.lexicon.schema/app.didpic.feed.getTagFeedPublic

Similar Lexicons

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

  • Chronological newest-first feed of posts using a specific hashtag. Applies the viewer's label / age-gate filters server-side.

  • Unauthenticated post view for public web landings. Omits viewer-relative fields and the comment thread.

  • Search hashtags by prefix, ordered by popularity (number of distinct records using the tag).

  • Trending hashtags. Top tags by unique-DID usage in the last 7 days, with a minimum-distinct-users threshold to keep one-off coincidences off the row. Admin-suppressed tags are excluded.

  • Most-recent eligible posts (up to 4) from the viewer's following feed. Strictest filter set in the system: no labels (account or post), no discover suppression, no takedowns, no blocks. Designed for OS widgets / Live Ac…

Lexicon Garden

@