get_guide

One guide: settings, region, properties, price, counts.

GET/v1/guides/{productId}
MCP tool get_guideScope: readStableSince 2026-09-17
Markdown

The guide shell: product fields, map region, areas (parks, islands, regions spots can point at), custom property definitions (keys and option ids you need for spot customValues), active price, spot and photo counts.

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

Path parameters

Returns

200 OK with GuideDetail: A guide with its chapter and photo counts (get_guide).

  • productIdstring · guide idrequired

    The guide's id.

  • namestringrequired

    The guide's title.

  • slugstringrequired

    URL slug of the sales page.

  • headlinestring or nullrequired

    One-line promise under the title on the sales page.

  • purchaseButtonTextstring or nullrequired

    The buy button label, or null for the default.

  • statusstringrequired

    draft (not on sale), published (on sale) or archived.

    draftpublishedarchived
  • visibleOnStorebooleanrequired

    Whether the guide shows in the Sceniq store (set in the studio).

  • storeReviewStatusstring or nullrequired

    The store review's state, or null before a review.

    pendingapprovedrejected
  • storeReviewNotestring or nullrequired

    The store review team's note.

  • storeTagsarray of stringsrequired

    Store tags from the fixed vocabulary.

  • countrystring or nullrequired

    ISO 3166-1 alpha-2 code of the country the guide covers; null means worldwide.

  • reviewsShownbooleanrequired

    Whether buyer reviews show on the store card.

  • buyerCountShownbooleanrequired

    Whether the buyer count shows on the sales page (set in the studio).

  • pricingobjectrequired

    How the guide is sold.

    Show 3 fields
    • oneTimeEnabledbooleanrequired

      Whether the guide sells for a one-time price.

    • subscriptionIncludedbooleanrequired

      Whether it is part of a subscription.

    • currencystringrequired

      The guide's currency.

  • originalLanguagestringrequired

    The language the guide is written in (BCP 47).

  • createdAtnumberrequired

    When the row was created (Unix time in milliseconds).

  • updatedAtnumberrequired

    When the row last changed (Unix time in milliseconds).

  • publishedAtnumber or nullrequired

    When the guide first went on sale (Unix time in milliseconds).

  • lastApiWriteAtnumber or nullrequired

    When a key last changed the guide (Unix time in milliseconds).

  • regionMapRegion or nullrequired

    The map region the viewer opens on.

    Show 5 fieldsof MapRegion
    • labelstringoptional

      A name buyers recognise for the region, at most 120 characters (Hokkaido, the Dolomites).

    • centerLatnumberoptional

      Latitude of the opening center (-90 to 90), usually the middle of the spots.

    • centerLonnumberoptional

      Longitude of the opening center (-180 to 180).

    • defaultZoomnumberoptional

      The opening zoom level, 0 to 22; 8 to 11 suits a region.

    • bboxarray of numbersoptional

      The bounding box as [west, south, east, north] in decimal degrees, exactly four numbers. It should contain every spot: readiness flags spots outside it.

  • areasarray of Arearequired

    Parks, islands and regions spots can point at.

    Show 10 fieldsof Area
    • idstringrequired

      The area's id, minted by set_area; spots point at it with areaId.

    • namestringrequired

      The area's name, at most 100 characters (Yellowstone National Park).

    • kindstringoptional

      park, reserve, island, region, city or other, shown as the area's label (Park, Island). Absent reads as other (Area).

      parkreserveislandregioncityother
    • notestringoptional

      What applies across the area, in the creator's words, at most 1,000 characters.

    • seasonstringoptional

      The area's season in words, at most 300 characters (roads open May to October).

    • rulesarray of AccessRuleoptional

      Up to 20 access rules for the whole area (permits, timed entry), each shown in its months.

      Show 6 fieldsof AccessRule
      • textstringrequired

        The rule in the creator's words, at most 300 characters.

      • kindstringoptional

        reservation, permit, guide, registration, no_independent_travel, vehicle or other.

        reservationpermitguideregistrationno_independent_travelvehicleother
      • monthsarray of numbersoptional

        The months the rule applies (1 to 12); the apps show it only then. Absent means all year.

      • appliesTostringoptional

        car for a rule that only binds drivers (a timed entry for vehicles), all for everyone.

        carall
      • bookingOpensstringoptional

        When booking opens, in words, at most 100 characters (90 days ahead at 07:00).

      • sourceUrlstringoptional

        The page that states the rule (http or https).

    • feesarray of Feeoptional

      Up to 30 fees for the whole area (park entry, a vehicle pass).

      Show 14 fieldsof Fee
      • labelstringrequired

        What the fee is for, at most 80 characters (Adult entry, Car park, Boat transfer).

      • amountnumberoptional

        The price in major units (40, 12.5). Needs currency. Absent when the fee is free or left to the official page.

      • currencystringoptional

        ISO 4217 code (USD, EUR, ARS). Required with amount.

      • freebooleanoptional

        true for no charge. Cannot be combined with an amount.

      • seeOfficialbooleanoptional

        true for a price the guide leaves to the official page on purpose (it changes too often to copy).

      • perstringoptional

        What one amount pays for: person, vehicle, night, group, entry, day or hour.

        personvehiclenightgroupentrydayhour
      • audiencestringoptional

        Who pays this rate: all, adult, child, foreign, domestic, resident, student or senior.

        alladultchildforeigndomesticresidentstudentsenior
      • paidWherestringoptional

        Where it is paid: online, on_site or in_tour (part of a tour price).

        onlineon_sitein_tour
      • paymentstringoptional

        How it can be paid: cash_only, card_only or cash_or_card.

        cash_onlycard_onlycash_or_card
      • notestringoptional

        One line of context, at most 300 characters (free on the first Sunday of the month).

      • validFromstringoptional

        The first day the price applies (YYYY-MM-DD).

      • validUntilstringoptional

        The last day the price applies (YYYY-MM-DD). Readiness flags the row after it.

      • sourceUrlstringoptional

        The page the price comes from (http or https).

      • checkedOnstringoptional

        The day the value was last checked against its source (YYYY-MM-DD).

    • linksarray of GuideLinkoptional

      Up to 12 links for the whole area.

      Show 5 fieldsof GuideLink
      • kindstringrequired

        What the link is for. official and website are the place's own pages; tickets and booking sell entry or rooms; status, timetable and tide carry live conditions; listing, social, authority and app cover the rest.

        officialwebsiteticketsbookingstatustimetabletidelistingsocialauthorityappother
      • labelstringoptional

        The link text buyers see, at most 60 characters. Without it the apps name the link by its kind.

      • urlstringoptional

        An http or https page. http is accepted with a warning.

      • valuestringoptional

        A channel that is not a URL, at most 200 characters, for example a WeChat mini program and its search term.

      • notestringoptional

        One line of context shown under the link, at most 300 characters.

    • statusStatusNoticeoptional

      A closure or works notice for the whole area.

      Show 6 fieldsof StatusNotice
      • statestringrequired

        open, partly_closed, closed or reopening. reopening with until means it reopens on that day.

        openpartly_closedclosedreopening
      • notestringoptional

        What is closed or changed, in the creator's words, at most 500 characters.

      • sincestringoptional

        The day the state began (YYYY-MM-DD).

      • untilstringoptional

        The day the state is expected to end (YYYY-MM-DD). Must not be before since.

      • sourceUrlstringoptional

        The page that announced it (http or https).

      • checkedOnstringoptional

        The day the value was last checked against its source (YYYY-MM-DD).

    • sourcesarray of SourceRefoptional

      Up to 40 research sources, never shown to buyers.

      Show 7 fieldsof SourceRef
      • urlstringoptional

        The page, API or archive copy the facts come from (http or https).

      • titlestringoptional

        A name for a source without a URL (a park leaflet, a phone call with the operator), at most 200 characters.

      • kindstringoptional

        page, api, archive, document or other.

        pageapiarchivedocumentother
      • capturedOnstringoptional

        The day the source was read (YYYY-MM-DD).

      • notestringoptional

        What the source says or why it was chosen, at most 500 characters.

      • supportsarray of stringsoptional

        Which facts it backs, up to 12 entries of at most 60 characters (fees, arrival.operating, lat/lon).

      • conflictbooleanoptional

        true when this source disagrees with another on the facts it backs. Say which one the value follows in note or reviewNotes.

  • mapStyleobject or nullrequired

    The map's style, set in the studio.

    Show 3 fields
    • basemapstringoptional

      The base map style.

    • pinStylestringoptional

      The pin style.

    • themeColorstringoptional

      The accent color.

  • propertySchemaVersionnumber or nullrequired

    Bumped on every property change.

  • propertiesarray of Propertyrequired

    Custom property definitions.

    Show 12 fieldsof Property
    • propertyDefIdstring · property idrequired

      The property's id.

    • keystringrequired

      The immutable key spots use in customValues.

    • labelstringrequired

      The label buyers see.

    • kindstringrequired

      The kind; it decides the value's type and whether buyers can filter by it.

      shortLabellongSectionnumberdatecheckboxsingleSelect
    • ordernumberrequired

      Display order (ascending).

    • requiredbooleanoptional

      true when every spot must carry a value. Absent means false.

    • filterablebooleanrequired

      Whether buyers can filter by it (number, date, checkbox and singleSelect).

    • placeholderstring or nullrequired

      Editor placeholder text.

    • numUnitstring or nullrequired

      Unit label for number properties.

    • optionsarray of objectsrequired

      Options of checkbox and singleSelect properties.

      Show 4 fields
      • idstringrequired

        The option's immutable id: the value spots store.

      • labelstringrequired

        The option's label.

      • ordernumberrequired

        Display order (ascending).

      • archivedbooleanrequired

        true when the option is retired; stored values stay.

    • archivedbooleanrequired

      true when the property is archived; stored values stay.

    • schemaVersionnumberrequired

      The guide's property schema version after the last change.

  • priceobject or nullrequired

    The active one-time price, or null when none is set.

    Show 2 fields
    • amountMinornumberrequired

      The price in minor units (2900 is 29.00).

    • currencystringrequired

      ISO 4217 code in lower case (usd, eur, chf).

  • spotCountnumberrequired

    Number of spots, archived ones included.

  • thumbnailUrlstring or nullrequired

    The 4:5 store thumbnail.

  • dashboardUrlstringrequired

    The guide in the studio.

  • salesPageUrlstringrequired

    The public sales page (live once published).

  • chapterCountnumberrequired

    Number of chapters and collections.

  • photoCountnumberrequired

    Number of photos across the guide.

Response 200
{
  "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
  "name": "American West: Parks at First Light",
  "slug": "american-west-first-light",
  "headline": "Twelve viewpoints across Yellowstone and Yosemite, timed for the light and the crowds.",
  "purchaseButtonText": null,
  "status": "draft",
  "visibleOnStore": false,
  "storeReviewStatus": null,
  "storeReviewNote": null,
  "storeTags": [
    "photography",
    "hiking",
    "road-trips"
  ],
  "country": "US",
  "reviewsShown": true,
  "buyerCountShown": false,
  "pricing": {
    "oneTimeEnabled": true,
    "subscriptionIncluded": false,
    "currency": "usd"
  },
  "originalLanguage": "en",
  "createdAt": 1789895640000,
  "updatedAt": 1790586840000,
  "publishedAt": null,
  "lastApiWriteAt": 1790586840000,
  "region": {
    "label": "Yellowstone and Yosemite",
    "centerLat": 41.2,
    "centerLon": -115,
    "defaultZoom": 5,
    "bbox": [
      -120,
      37.4,
      -109.8,
      45.2
    ]
  },
  "areas": [
    {
      "id": "area_01m3gvdap06m6mx2kp4t553d6g",
      "name": "Yellowstone National Park",
      "kind": "park",
      "note": "One entrance pass covers every spot in the Yellowstone chapter. Cell coverage is patchy between the geyser basins; download the guide before you drive in.",
      "season": "Most park roads are open to cars from May to early November.",
      "rules": [
        {
          "text": "Stay on boardwalks and marked trails in every thermal area.",
          "kind": "other",
          "sourceUrl": "https://www.nps.gov/yell/planyourvisit/safety.htm"
        }
      ],
      "fees": [
        {
          "label": "Park entrance, private vehicle, 7 days",
          "amount": 35,
          "currency": "USD",
          "per": "vehicle",
          "paidWhere": "online",
          "sourceUrl": "https://www.nps.gov/yell/planyourvisit/fees.htm",
          "checkedOn": "2026-09-20"
        }
      ],
      "links": [
        {
          "kind": "official",
          "url": "https://www.nps.gov/yell/index.htm",
          "label": "Yellowstone National Park (NPS)"
        },
        {
          "kind": "status",
          "url": "https://www.nps.gov/yell/planyourvisit/conditions.htm",
          "label": "Park road status"
        }
      ],
      "sources": [
        {
          "url": "https://www.nps.gov/yell/planyourvisit/fees.htm",
          "kind": "page",
          "capturedOn": "2026-09-20",
          "supports": [
            "fees"
          ]
        }
      ]
    },
    {
      "id": "area_01m3gvgcb04pf38p66vz544w1b",
      "name": "Yosemite National Park",
      "kind": "park",
      "season": "Open all year. Glacier Point Road and Tioga Road close to cars in winter.",
      "rules": [
        {
          "text": "Glacier Point Road and Tioga Road are closed to cars in winter, usually from November to late May.",
          "kind": "vehicle",
          "months": [
            11,
            12,
            1,
            2,
            3,
            4,
            5
          ],
          "appliesTo": "car",
          "sourceUrl": "https://www.nps.gov/yose/planyourvisit/conditions.htm"
        }
      ],
      "fees": [
        {
          "label": "Park entrance, private vehicle, 7 days",
          "amount": 35,
          "currency": "USD",
          "per": "vehicle",
          "sourceUrl": "https://www.nps.gov/yose/planyourvisit/fees.htm",
          "checkedOn": "2026-09-20"
        }
      ],
      "links": [
        {
          "kind": "official",
          "url": "https://www.nps.gov/yose/index.htm",
          "label": "Yosemite National Park (NPS)"
        },
        {
          "kind": "timetable",
          "url": "https://yarts.com/",
          "label": "YARTS buses into the valley"
        }
      ]
    }
  ],
  "mapStyle": null,
  "propertySchemaVersion": 6,
  "properties": [
    {
      "propertyDefId": "kh75t2w9q4r6y8v0j1p3p5a7s9d1f3g5",
      "key": "best_time",
      "label": "Best time",
      "kind": "singleSelect",
      "order": 0,
      "required": false,
      "filterable": true,
      "placeholder": null,
      "numUnit": null,
      "options": [
        {
          "id": "sunrise",
          "label": "Sunrise",
          "order": 0,
          "archived": false
        },
        {
          "id": "morning",
          "label": "Morning",
          "order": 1,
          "archived": false
        },
        {
          "id": "midday",
          "label": "Midday",
          "order": 2,
          "archived": false
        },
        {
          "id": "sunset",
          "label": "Sunset",
          "order": 3,
          "archived": false
        }
      ],
      "archived": false,
      "schemaVersion": 2
    },
    {
      "propertyDefId": "kh7b3n5m7q9w1e3r5t7y9v1j3p5p7a9s",
      "key": "crowds",
      "label": "Crowds",
      "kind": "singleSelect",
      "order": 1,
      "required": false,
      "filterable": true,
      "placeholder": null,
      "numUnit": null,
      "options": [
        {
          "id": "quiet",
          "label": "Quiet",
          "order": 0,
          "archived": false
        },
        {
          "id": "busy",
          "label": "Busy",
          "order": 1,
          "archived": false
        },
        {
          "id": "packed",
          "label": "Packed",
          "order": 2,
          "archived": false
        }
      ],
      "archived": false,
      "schemaVersion": 3
    },
    {
      "propertyDefId": "kh75b789hrwaq3kafenm0xbb6v34gh06",
      "key": "photo_notes",
      "label": "Photo notes",
      "kind": "longSection",
      "order": 2,
      "required": false,
      "filterable": false,
      "placeholder": "Lens, framing, where to stand",
      "numUnit": null,
      "options": [],
      "archived": false,
      "schemaVersion": 4
    },
    {
      "propertyDefId": "kh7v7h8st8cr913jb2kzb839yxjtpkdf",
      "key": "lens",
      "label": "Lens",
      "kind": "shortLabel",
      "order": 3,
      "required": false,
      "filterable": false,
      "placeholder": "16-35 mm",
      "numUnit": null,
      "options": [],
      "archived": true,
      "schemaVersion": 6
    }
  ],
  "price": {
    "amountMinor": 2900,
    "currency": "usd"
  },
  "spotCount": 13,
  "thumbnailUrl": null,
  "dashboardUrl": "https://creators.sceniq.earth/products/j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
  "salesPageUrl": "https://sceniq.earth/mara-lindgren/american-west-first-light",
  "chapterCount": 5,
  "photoCount": 31
}

Errors

Every error is { error: { code, message } }. Act on the code.

  • 400invalid_argumentA 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).
  • 401unauthenticatedThe request carries no key. Send it as Authorization: Bearer sk_sceniq_... (or X-Api-Key).
  • 401invalid_api_keyThe key is unknown, revoked or expired.
  • 403forbiddenThe key belongs to a creator account that is no longer active.
  • 404not_foundThe id does not exist or belongs to another creator. The two answers are identical on purpose, so ids never reveal what exists.
  • 429rate_limitedOver a limit: requests per key per minute, per creator per hour, uploads per key per minute, or check_links per guide per hour.
  • 500internal_errorAn unexpected failure. The message is hidden on purpose.