app.bsky.embed.getEmbedExternalView

Resolve one AT-URI record into the data needed to render an enhanced external embed. The records are validated against the requested `url` before any view is built. When validation passes, returns `data`, `associatedRefs` (strongRefs to embed into a post's external.associatedRefs) and the raw `associatedRecords`, plus a legacy `view` for Standard.site records only. When validation fails, only `unverifiedAssociatedRefs` and `unverifiedAssociatedRecords` are returned and no view or data is built. The response is empty (`{}`) when no record URI was usable or the record could not be resolved; clients should fall back to their own link-card rendering in that case and skip writing strongRefs to the post.

Details · query
Kindquery
Authorityembed.bsky.app
Indexed
cid bafyreicy4fjqex6gezxnqgc7k3y6qg2ghsxmwr3ugm3bifdthukn7d7lvm

Checks

Valid Lint pass
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Resolve one AT-URI record into the data needed to render an enhanced external embed. The records are validated against the requested `url` before any view is built. When validation passes, returns `data`, `associatedRefs` (strongRefs to embed into a post's external.associatedRefs) and the raw `associatedRecords`, plus a legacy `view` for Standard.site records only. When validation fails, only `unverifiedAssociatedRefs` and `unverifiedAssociatedRecords` are returned and no view or data is built. The response is empty (`{}`) when no record URI was usable or the record could not be resolved; clients should fall back to their own link-card rendering in that case and skip writing strongRefs to the post.",
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "associatedRecords": {
              "items": {
                "description": "The raw record data of the Atmosphere records selected for persistence, index-aligned with `associatedRefs`. Returned for convenience, to avoid the client separately fetching them. Present only when validation passed.",
                "type": "unknown"
              },
              "type": "array"
            },
            "associatedRefs": {
              "description": "StrongRefs (URI+CID) of the Atmosphere records selected for persistence in a post, suitable for embedding into its external.associatedRefs: the canonical record, plus only the additional records the service chooses to persist for its collection. This can be a subset of the records used to render `data`, which may also draw on other hydrated records such as recommendations, subscriptions, or favorites. Present only when validation passed. Index-aligned with `associatedRecords`.",
              "items": {
                "ref": "com.atproto.repo.strongRef",
                "type": "ref"
              },
              "type": "array"
            },
            "data": {
              "description": "Preferred to #view. Hydrated data of the embed. Present only when validation passed and the records supply enough information to populate the required fields.",
              "refs": [
                "app.bsky.embed.external#viewArticle",
                "app.bsky.embed.external#viewArticlePublication",
                "app.bsky.embed.external#viewGallery",
                "app.bsky.embed.external#viewLivestream"
              ],
              "type": "union"
            },
            "unverifiedAssociatedRecords": {
              "items": {
                "description": "The raw record data of the persistence-selected Atmosphere records, index-aligned with `unverifiedAssociatedRefs`. Present only when validation failed.",
                "type": "unknown"
              },
              "type": "array"
            },
            "unverifiedAssociatedRefs": {
              "description": "StrongRefs (URI+CID) of the same persistence-selected Atmosphere records (the canonical record plus chosen additional records) when validation of the requested `url` failed. These must not be written to a post. Index-aligned with `unverifiedAssociatedRecords`.",
              "items": {
                "ref": "com.atproto.repo.strongRef",
                "type": "ref"
              },
              "type": "array"
            },
            "view": {
              "description": "Legacy hydrated view of the embed, returned for Standard.site records only. Present only when validation passed and the records supply enough information to populate the required `viewExternal` fields.",
              "ref": "app.bsky.embed.external#view",
              "type": "ref"
            }
          },
          "type": "object"
        }
      },
      "parameters": {
        "properties": {
          "canonicalUri": {
            "description": "The canonical AT URI of the atproto record found on the webpage. When provided, takes precedence over `uris`, which is then ignored.",
            "format": "at-uri",
            "type": "string"
          },
          "uris": {
            "description": "Legacy input for Standard.site callers, ignored when `canonicalUri` is provided. A single record is selected from it: the first site.standard.document URI, otherwise the first site.standard.publication URI. Other entries are ignored; a document's publication is discovered from the document itself.",
            "items": {
              "format": "at-uri",
              "type": "string"
            },
            "maxLength": 4,
            "type": "array"
          },
          "url": {
            "description": "The canonical web URL the embed represents (typically the URL the user pasted into the composer). Used as the returned view's `uri`, and validated against the resolved records.",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "params"
      },
      "type": "query"
    }
  },
  "id": "app.bsky.embed.getEmbedExternalView",
  "lexicon": 1
}