---
title: "Get collection page metadata"
method: GET
path: "/api/v2/collections/{slug}/metadata"
tags: ["Collection Endpoints"]
---

# Get collection page metadata

`GET /api/v2/collections/{slug}/metadata`

## Request

- Base URL: `https://api.opensea.io`
- URL: `https://api.opensea.io/api/v2/collections/{slug}/metadata`
- Auth: API key in header `x-api-key` and OpenID Connect (`https://auth.opensea.io/.well-known/openid-configuration`, scopes: `write:collections`)
- TypeScript: <https://skmtc.dev/opensea/apis/opensea-api/docs/api/v2/collections/:slug/metadata/get.ts> (a function with typed inputs; its response is checked against the schema)

Read back the hero, about and overview content saved by PATCH /api/v2/collections/{slug}/metadata, including for a drop that is not published yet. Only the collection owner or an authorized editor can read it. The response has the same shape as that request body, so a client can change one module and send the whole overview back. Saves show up here within a few seconds rather than immediately.

## Path parameters

- `slug` string, required

## Response `200`

Saved page metadata

- CollectionPageMetadataResponse: The collection page content as saved by PATCH /api/v2/collections/{slug}/metadata. The shape mirrors that request body, so it can be edited and sent back. To keep a media item when you send PATCH /api/v2/collections/{slug}/metadata, pass its url back as the token. A mux_video item is the exception: it has no url, so it cannot be sent back. To keep one, leave out the request field that holds it; each field's description says what leaving it out keeps.
  - `about` AboutMetadataResponse: Collection about content
    - `preview_media` PageMediaResponse[], required: Preview media
      - `image` PageImageResponse: A saved image
        - `url` string, required: Stored image URL
      - `mux_video` PageMuxVideoResponse: A saved Mux video
        - `playback_id` string, required
        - `thumbnail_url` string, nullable
      - `video` PageVideoResponse: A saved video
        - `thumbnail_url` string, nullable
        - `url` string, required: Stored video URL
    - `sections` AboutSectionResponse[], required: About sections
      - `description` string, nullable
      - `id` string, nullable
      - `media` PageMediaResponse[], required
        - `image` PageImageResponse: A saved image
          - `url` string, required: Stored image URL
        - `mux_video` PageMuxVideoResponse: A saved Mux video
          - `playback_id` string, required
          - `thumbnail_url` string, nullable
        - `video` PageVideoResponse: A saved video
          - `thumbnail_url` string, nullable
          - `url` string, required: Stored video URL
      - `title` string, nullable
  - `hero` HeroMetadataResponse: Collection hero media
    - `desktop_hero_media` PageMediaResponse: A saved media item. Exactly one of image, video or mux_video is set. To keep a media item when you send PATCH /api/v2/collections/{slug}/metadata, pass its url back as the token.
      - `image` PageImageResponse: A saved image
        - `url` string, required: Stored image URL
      - `mux_video` PageMuxVideoResponse: A saved Mux video
        - `playback_id` string, required
        - `thumbnail_url` string, nullable
      - `video` PageVideoResponse: A saved video
        - `thumbnail_url` string, nullable
        - `url` string, required: Stored video URL
    - `mobile_hero_media` PageMediaResponse: A saved media item. Exactly one of image, video or mux_video is set. To keep a media item when you send PATCH /api/v2/collections/{slug}/metadata, pass its url back as the token.
      - `image` PageImageResponse: A saved image
        - `url` string, required: Stored image URL
      - `mux_video` PageMuxVideoResponse: A saved Mux video
        - `playback_id` string, required
        - `thumbnail_url` string, nullable
      - `video` PageVideoResponse: A saved video
        - `thumbnail_url` string, nullable
        - `url` string, required: Stored video URL
  - `overview` OverviewMetadataResponse: Collection overview content
    - `modules` OverviewModulesResponse, required: Overview modules grouped by type
      - `content_block` ContentBlockModuleResponse[], required
        - `description` string, nullable
        - `id` string, nullable
        - `index` integer, required: Position of the module on the page, counting from 0
        - `sections` ContentBlockSectionResponse[], required
          - `collection_slug` string, nullable: Featured item's collection (feature only)
          - `date` string, nullable: Label of a timeline entry, as saved
          - `description` string, nullable
          - `external_link` LinkResponse: A link
            - `href` string, nullable
            - `label` string, nullable
          - `id` string, nullable
          - `media` PageMediaResponse: A saved media item. Exactly one of image, video or mux_video is set. To keep a media item when you send PATCH /api/v2/collections/{slug}/metadata, pass its url back as the token.
            - `image` PageImageResponse: A saved image
              - …
            - `mux_video` PageMuxVideoResponse: A saved Mux video
              - …
            - `video` PageVideoResponse: A saved video
              - …
          - `module_type` string, required: default, feature or timeline
          - `title` string, nullable
          - `token_id` string, nullable: Featured item's token id (feature only)
        - `title` string, nullable
      - `faq` FaqModuleResponse[], required
        - `description` string, nullable
        - `hidden` boolean, nullable
        - `index` integer, required: Position of the module on the page, counting from 0
        - `sections` FaqSectionResponse[], required
          - `answer` string, nullable
          - `id` string, nullable
          - `question` string, nullable
        - `title` string, nullable
      - `narrative` NarrativeModuleResponse[], required
        - `description` string, nullable
        - `desktop_background_media` PageMediaResponse: A saved media item. Exactly one of image, video or mux_video is set. To keep a media item when you send PATCH /api/v2/collections/{slug}/metadata, pass its url back as the token.
          - `image` PageImageResponse: A saved image
            - `url` string, required: Stored image URL
          - `mux_video` PageMuxVideoResponse: A saved Mux video
            - `playback_id` string, required
            - `thumbnail_url` string, nullable
          - `video` PageVideoResponse: A saved video
            - `thumbnail_url` string, nullable
            - `url` string, required: Stored video URL
        - `horizontal_text_position` string, nullable: left, center or right
        - `id` string, nullable
        - `index` integer, required: Position of the module on the page, counting from 0
        - `media` PageMediaResponse[], required
          - `image` PageImageResponse: A saved image
            - `url` string, required: Stored image URL
          - `mux_video` PageMuxVideoResponse: A saved Mux video
            - `playback_id` string, required
            - `thumbnail_url` string, nullable
          - `video` PageVideoResponse: A saved video
            - `thumbnail_url` string, nullable
            - `url` string, required: Stored video URL
        - `mobile_background_media` PageMediaResponse: A saved media item. Exactly one of image, video or mux_video is set. To keep a media item when you send PATCH /api/v2/collections/{slug}/metadata, pass its url back as the token.
          - `image` PageImageResponse: A saved image
            - `url` string, required: Stored image URL
          - `mux_video` PageMuxVideoResponse: A saved Mux video
            - `playback_id` string, required
            - `thumbnail_url` string, nullable
          - `video` PageVideoResponse: A saved video
            - `thumbnail_url` string, nullable
            - `url` string, required: Stored video URL
        - `title` string, nullable
        - `variant` string, nullable: text, background, text_and_background or text_and_media
        - `vertical_text_position` string, nullable: top, center or bottom
      - `team` TeamModuleResponse[], required
        - `description` string, nullable
        - `hidden` boolean, nullable
        - `index` integer, required: Position of the module on the page, counting from 0
        - `sections` TeamMemberResponse[], required
          - `bio` string, nullable
          - `id` string, nullable
          - `instagram_url` string, nullable
          - `media` PageMediaResponse[], required
            - `image` PageImageResponse: A saved image
              - …
            - `mux_video` PageMuxVideoResponse: A saved Mux video
              - …
            - `video` PageVideoResponse: A saved video
              - …
          - `name` string, nullable
          - `title` string, nullable
          - `twitter_url` string, nullable
          - `website_url` string, nullable
        - `title` string, nullable

## Other responses

- `400`: For error reasons, review the response data.
- `401`: Invalid or missing API key
- `403`: Wallet token lacks permission for this request
- `404`: Resource not found
- `409`: Conflict
- `500`: Internal server error. Please open a support ticket so OpenSea can investigate.

## Changes

- **2026-11-03** `2c7935d84f90`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/opensea/apis/opensea-api/changes/api/v2/collections/:slug/metadata/get.md)

---

[API](https://skmtc.dev/opensea/apis/opensea-api.md) - [All operations](https://skmtc.dev/opensea/apis/opensea-api/llms.txt) - [OpenAPI document](https://skmtc.dev/opensea/apis/opensea-api/revisions/2c7935d84f90?raw)
