# get_sales_page

The default sales page: draft, published state, media map.

`GET /v1/guides/{productId}/sales-page` · MCP tool `get_sales_page` · scope `read` · stable · since 2026-09-17

Returns the listing row (draftConfig is what you edit; publishedConfig is live) and the media rows it may reference. null listing means no draft exists yet; save_sales_page_draft creates it.

## Path parameters

- `productId` (string, required): Id of the guide (a product of type map). From list_guides or create_guide.

## Returns

200: SalesPage.

- `productId` (string, required): The guide's id.
- `listing` (object or null, required): The default sales page, or null before a draft exists.
  - `listingId` (string, required): The sales page's id.
  - `status` (string, required): Whether a version is live. One of `published`, `unpublished`.
  - `baseLanguage` (string, required): The language of draftConfig.
  - `draftConfig` (ListingConfig, required): The draft: what save_sales_page_draft replaces.
    Fields of ListingConfig: https://developers.sceniq.earth/fields/listing-config.md
  - `draftUpdatedAt` (number, required): When the draft last changed.
  - `publishedConfig` (ListingConfig or null, required): What buyers see.
    Fields of ListingConfig: https://developers.sceniq.earth/fields/listing-config.md
  - `publishedAt` (number or null, required): When it was last published.
  - `publishedConfigVersion` (number, required): The live version's number.
  - `locales` (array of strings, required): Published translations as language codes, besides baseLanguage ([] for a page in one language).
  - `metaTitle` (string or null, required): The search result title.
  - `metaDescription` (string or null, required): The search result description.
  - `updatedAt` (number, required): When the row last changed (Unix time in milliseconds).
- `mediaMap` (map of objects, required): The photos the sales page may use, keyed by mediaId.
  - `id` (string, required): The photo's id.
  - `url` (string, required): The photo's URL.
  - `caption` (string, optional): Caption.
  - `credit` (string, optional): Photographer credit.
  - `width` (number, optional): Width in pixels.
  - `height` (number, optional): Height in pixels.
  - `order` (number, required): Position.
- `publishing` (string, required): Who publishes the sales page (the creator, in the studio).

## Examples

### A live sales page with a newer draft, and the photos it may use

```bash
curl "https://sceniq.earth/api/v1/guides/j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2/sales-page" \
  -H "Authorization: Bearer $SCENIQ_API_KEY"
```

MCP `tools/call`:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_sales_page",
    "arguments": {
      "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2"
    }
  }
}
```

Response 200:

```json
{
  "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
  "listing": {
    "listingId": "kr7w1e3r5t7y9v1j3p5p7a9s1d3f5g7h",
    "status": "published",
    "baseLanguage": "en",
    "draftConfig": {
      "hero": {
        "carousel": [
          {
            "mediaId": "kg7q8w6e4r2t0y8v6j4p2p0a8s6d4f2g",
            "order": 1024
          },
          {
            "mediaId": "kg7t5y7v9j1p3p5a7s9d1f3g5h7j9k1k",
            "caption": "Tunnel View, Yosemite, at first light",
            "order": 2048
          },
          {
            "mediaId": "kg7b4n6m8q0w2e4r6t8y0v2j4p6p8a0s",
            "order": 3072
          }
        ],
        "title": "American West: Parks at First Light",
        "headline": "Twelve viewpoints across Yellowstone and Yosemite, timed for the light and the crowds.",
        "kicker": "A map guide by Mara Lindgren",
        "bullets": [
          {
            "text": "Twelve viewpoints in Yellowstone and Yosemite, each with an exact pin",
            "order": 1
          },
          {
            "text": "The best hour for every view, and when the crowds arrive",
            "order": 2
          },
          {
            "text": "Trailheads, parking and the time each lot fills",
            "order": 3
          },
          {
            "text": "Fees, opening hours and closures checked in September 2026",
            "order": 4
          }
        ]
      },
      "pitch": {
        "enabled": true,
        "title": "Built for the hour you are there",
        "description": "Every spot says when to arrive, where to park and how long the walk takes, so the good light finds you at the viewpoint, not in the parking lot.",
        "imageAspect": "4:5",
        "boxes": [
          {
            "mediaId": "kg7b4n6m8q0w2e4r6t8y0v2j4p6p8a0s",
            "title": "One map for both parks",
            "description": "Pins for every viewpoint, trailhead and lot, in the Sceniq app and in your browser.",
            "order": 1
          },
          {
            "mediaId": "kg7q8w6e4r2t0y8v6j4p2p0a8s6d4f2g",
            "title": "Timed for the light",
            "description": "Grand Prismatic mid morning once the steam lifts, Tunnel View at first light.",
            "order": 2
          },
          {
            "title": "Parking that works",
            "description": "Which lot to use, when it fills, and where to go when it does.",
            "order": 3
          }
        ]
      },
      "reviews": {
        "enabled": true,
        "source": "product",
        "heading": "What buyers say"
      },
      "gallery": {
        "enabled": false,
        "slides": []
      },
      "aboutCreator": {
        "enabled": true
      },
      "buyForm": {
        "ctaLabel": "Get the guide",
        "reassuranceText": "One payment. Open it in the Sceniq app or in your browser.",
        "imageMediaId": "kg7t5y7v9j1p3p5a7s9d1f3g5h7j9k1k"
      },
      "faq": {
        "enabled": true,
        "title": "Common questions",
        "items": [
          {
            "question": "Do I need a car?",
            "answer": "Yes. Every spot lists where to park, how early the lot fills and how long the walk is from there.",
            "order": 1
          },
          {
            "question": "Does the guide work without signal?",
            "answer": "Download it in the Sceniq app before you go. The map, the spots and the photos then open without signal, which most of these viewpoints do not have.",
            "order": 2
          },
          {
            "question": "When should I go?",
            "answer": "Late May to September for both parks. Each spot lists its best months and the hour it looks its best.",
            "order": 3
          }
        ]
      }
    },
    "draftUpdatedAt": 1790586840000,
    "publishedConfig": {
      "hero": {
        "carousel": [
          {
            "mediaId": "kg7q8w6e4r2t0y8v6j4p2p0a8s6d4f2g",
            "order": 1024
          },
          {
            "mediaId": "kg7t5y7v9j1p3p5a7s9d1f3g5h7j9k1k",
            "caption": "Tunnel View, Yosemite, at first light",
            "order": 2048
          },
          {
            "mediaId": "kg7b4n6m8q0w2e4r6t8y0v2j4p6p8a0s",
            "order": 3072
          }
        ],
        "title": "American West: Parks at First Light",
        "headline": "Twelve viewpoints across Yellowstone and Yosemite, timed for the light and the crowds.",
        "kicker": "A map guide by Mara Lindgren",
        "bullets": [
          {
            "text": "Twelve viewpoints in Yellowstone and Yosemite, each with an exact pin",
            "order": 1
          },
          {
            "text": "The best hour for every view, and when the crowds arrive",
            "order": 2
          },
          {
            "text": "Trailheads, parking and the time each lot fills",
            "order": 3
          }
        ]
      },
      "pitch": {
        "enabled": true,
        "title": "Built for the hour you are there",
        "description": "Every spot says when to arrive, where to park and how long the walk takes, so the good light finds you at the viewpoint, not in the parking lot.",
        "imageAspect": "4:5",
        "boxes": [
          {
            "mediaId": "kg7b4n6m8q0w2e4r6t8y0v2j4p6p8a0s",
            "title": "One map for both parks",
            "description": "Pins for every viewpoint, trailhead and lot, in the Sceniq app and in your browser.",
            "order": 1
          },
          {
            "mediaId": "kg7q8w6e4r2t0y8v6j4p2p0a8s6d4f2g",
            "title": "Timed for the light",
            "description": "Grand Prismatic mid morning once the steam lifts, Tunnel View at first light.",
            "order": 2
          },
          {
            "title": "Parking that works",
            "description": "Which lot to use, when it fills, and where to go when it does.",
            "order": 3
          }
        ]
      },
      "reviews": {
        "enabled": true,
        "source": "product",
        "heading": "What buyers say"
      },
      "gallery": {
        "enabled": false,
        "slides": []
      },
      "aboutCreator": {
        "enabled": true
      },
      "buyForm": {
        "ctaLabel": "Get the guide",
        "reassuranceText": "One payment. Open it in the Sceniq app or in your browser.",
        "imageMediaId": "kg7t5y7v9j1p3p5a7s9d1f3g5h7j9k1k"
      },
      "faq": {
        "enabled": false,
        "items": []
      }
    },
    "publishedAt": 1790241240000,
    "publishedConfigVersion": 3,
    "locales": [],
    "metaTitle": "American West: Parks at First Light: a map guide by Mara Lindgren",
    "metaDescription": "Twelve viewpoints across Yellowstone and Yosemite with the best hour, the parking and the fees for each.",
    "updatedAt": 1790586840000
  },
  "mediaMap": {
    "kg7q8w6e4r2t0y8v6j4p2p0a8s6d4f2g": {
      "id": "kg7q8w6e4r2t0y8v6j4p2p0a8s6d4f2g",
      "url": "https://quiet-heron-512.convex.cloud/api/storage/hero-grand-prismatic.webp",
      "caption": "Grand Prismatic Spring from the overlook",
      "credit": "Mara Lindgren",
      "width": 2048,
      "height": 1365,
      "order": 1024
    },
    "kg7b4n6m8q0w2e4r6t8y0v2j4p6p8a0s": {
      "id": "kg7b4n6m8q0w2e4r6t8y0v2j4p6p8a0s",
      "url": "https://quiet-heron-512.convex.cloud/api/storage/guide-map-yellowstone.webp",
      "caption": "The guide's map of Yellowstone in the Sceniq app",
      "width": 1638,
      "height": 2048,
      "order": 1024
    },
    "kg7t5y7v9j1p3p5a7s9d1f3g5h7j9k1k": {
      "id": "kg7t5y7v9j1p3p5a7s9d1f3g5h7j9k1k",
      "url": "https://quiet-heron-512.convex.cloud/api/storage/tunnel-view-first-light.webp",
      "caption": "Tunnel View at first light",
      "credit": "Mara Lindgren",
      "width": 2048,
      "height": 1365,
      "order": 2048
    }
  },
  "publishing": "The creator publishes the sales page in the dashboard; save_sales_page_draft only updates the draft."
}
```

## Errors

- `invalid_argument` (400): A required field is missing, a field is unknown, or a value does not match its type (the Convex validator's path and value are in the message).
- `unauthenticated` (401): The request carries no key. Send it as Authorization: Bearer sk_sceniq_... (or X-Api-Key).
- `invalid_api_key` (401): The key is unknown, revoked or expired.
- `forbidden` (403): The key belongs to a creator account that is no longer active.
- `not_found` (404): The id does not exist or belongs to another creator. The two answers are identical on purpose, so ids never reveal what exists.
- `rate_limited` (429): Over a limit: requests per key per minute, per creator per hour, uploads per key per minute, or check_links per guide per hour.
- `internal_error` (500): An unexpected failure. The message is hidden on purpose.

Reference: https://developers.sceniq.earth/reference/get_sales_page
