list_chapters

Chapters and collections with their members.

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

A chapter is a guide section (a region, a day) that can carry prose and front matter; a collection is a plain spot set (top picks). Members reference spots by spotKey, or chapters by id inside a collection.

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

Path parameters

Returns

200 OK with this object.

  • productIdstring · guide idrequired

    The guide's id.

  • chaptersarray of Chapterrequired

    Every chapter and collection in guide order.

    Show 14 fieldsof Chapter
    • collectionIdstring · chapter idrequired

      The chapter's or collection's id.

    • productIdstring · guide idrequired

      The guide's id.

    • namestringrequired

      Its title.

    • slugstring or nullrequired

      URL slug, unique in the guide.

    • descriptionstring or nullrequired

      One-line summary on the chapter card.

    • kindstringrequired

      chapter carries prose and front matter; collection is a plain spot set.

      collectionchapter
    • bodyarray of stringsrequired

      Prose paragraphs (chapters only).

    • introChapterIntro or nullrequired

      Structured front matter (chapters only).

      Show 5 fieldsof ChapterIntro
      • coverKickerstringoptional

        The cover's eyebrow line, at most 120 characters (A Patagonia Field Guide).

      • coverTitlestringoptional

        The cover title, at most 160 characters. Absent means the guide's name.

      • coverAuthorstringoptional

        The byline name, shown as By <name>, at most 120 characters. Absent means the creator's display name.

      • coverAuthorPhotoStorageIdstring · stored file idoptional

        The byline photo, a storageId from an upload with target=blob. Absent means the creator's avatar.

      • sectionsarray of IntroSectionrequired

        Up to 20 sections in reading order.

        Show 9 fieldsof IntroSection
        • kindstringoptional

          prose (the default), chapters (a row for each other chapter of the guide) or collections (a card for each collection that has spots). The rows and cards derive from the guide; items only restyle them.

          prosechapterscollections
        • kickerstringoptional

          The eyebrow above the title, at most 120 characters.

        • titlestringrequired

          The section title, at most 160 characters. Required.

        • deckstringoptional

          The standfirst under the title, at most 500 characters.

        • paragraphsarray of stringsoptional

          Prose sections only: up to 30 paragraphs of at most 10,000 characters. Lines starting with "- " inside a paragraph render as a bulleted list.

        • cellsarray of objectsoptional

          Prose sections only: up to 8 numbered cells (a plan in steps). A section with cells carries no paragraphs and no photo.

          Show 2 fields
          • titlestringrequired

            The cell's title, at most 120 characters. Required unless the whole cell is empty, which drops it.

          • bodystringrequired

            The cell's text, at most 600 characters.

        • photoStorageIdstring · stored file idoptional

          Prose sections only: the side photo, a storageId from an upload with target=blob.

        • photoCreditstringoptional

          The side photo's credit, at most 80 characters, shown on the photo. Kept only with a photo; absent means the creator's own shot.

        • itemsarray of IntroItemoptional

          Chapters and collections sections only: up to 60 entries, each restyling one row or card.

          Show 6 fieldsof IntroItem
          • collectionIdstring · chapter idrequired

            The chapter (chapters section) or plain collection (collections section) of this guide the entry dresses, once per section.

          • titlestringoptional

            The name on the row or card, at most 120 characters. Absent means the chapter's or collection's name.

          • linestringoptional

            Chapters sections only: the short line under the name, at most 200 characters. Absent means the chapter's description.

          • colorstringoptional

            Chapters sections only: the row's color bar as #rrggbb (stored lower case).

          • photoStorageIdstring · stored file idoptional

            Collections sections only: the card photo, a storageId from an upload with target=blob. Absent means the collection's cover.

          • photoCreditstringoptional

            The card photo's credit, at most 80 characters. Kept only with a photo.

    • ordernumberrequired

      Position in the guide.

    • coverUrlstring or nullrequired

      The cover image.

    • coverStorageIdstring or null · stored file idrequired

      The cover's storage id (from an upload with target=blob).

    • membersarray of objectsrequired

      Members in order: spots, or chapters inside a collection.

      Show 3 fields
      • spotKeystring or nullrequired

        A member spot's key.

      • memberCollectionIdstring or null · chapter idrequired

        A chapter placed as a card inside a collection.

      • ordernumberrequired

        Position in the chapter.

    • createdAtnumberrequired

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

    • updatedAtnumberrequired

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

Response 200
{
  "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
  "chapters": [
    {
      "collectionId": "kn7q65ntqkryzm6y45h5dyxqt0p454y8",
      "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
      "name": "Introduction",
      "slug": "introduction",
      "description": null,
      "kind": "chapter",
      "body": [],
      "intro": {
        "coverKicker": "A photographer's field guide",
        "sections": [
          {
            "kind": "prose",
            "kicker": "How to use this guide",
            "title": "Timed for the light",
            "deck": "Every spot says when to be there and where to park, so the light and the crowds work for you.",
            "paragraphs": [
              "Each spot lists its best time of day, how crowded it gets and how far it is from the car. Most are short walks; the hikes are marked.",
              "- One day per park? Start with Top picks.\n- Check the park road status before a sunrise drive."
            ],
            "photoStorageId": "kg2gsfxz27kpg15n437vtmc3zj91qz34"
          },
          {
            "kind": "prose",
            "kicker": "Plan",
            "title": "Before you go",
            "cells": [
              {
                "title": "Passes",
                "body": "Each park charges 35 USD per vehicle for 7 days. An annual pass covers both."
              },
              {
                "title": "Seasons",
                "body": "Late May to September suits both parks. Some roads close from November."
              },
              {
                "title": "Driving",
                "body": "Yellowstone to Yosemite is about 1,400 km by road: two long days."
              },
              {
                "title": "Drones",
                "body": "Banned in every US national park."
              }
            ]
          },
          {
            "kind": "chapters",
            "kicker": "The parks",
            "title": "Two parks, a long drive apart",
            "items": [
              {
                "collectionId": "kn7e5r9t3y7v1j5p9p3a7s1d5f9g3h7j",
                "line": "Hot springs, geysers and bison",
                "color": "#b45309"
              },
              {
                "collectionId": "kn73r7x6mp88mxa9swcbshwd3e7zvr39",
                "line": "Granite walls and the valley from above",
                "color": "#1d4ed8"
              }
            ]
          },
          {
            "kind": "collections",
            "title": "Short on time",
            "items": [
              {
                "collectionId": "kn7a2s4d6f8g0h2j4k6k8z0x2c4v6b8n",
                "photoStorageId": "kg29fadcmt160qtrce3h3rm82yc6hhtb"
              }
            ]
          }
        ]
      },
      "order": 1024,
      "coverUrl": null,
      "coverStorageId": null,
      "members": [],
      "createdAt": 1789895640000,
      "updatedAt": 1790586840000
    },
    {
      "collectionId": "kn7e5r9t3y7v1j5p9p3a7s1d5f9g3h7j",
      "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
      "name": "Yellowstone",
      "slug": "yellowstone",
      "description": "Hot springs, geysers and bison",
      "kind": "chapter",
      "body": [
        "Yellowstone's hot springs and geysers line the Grand Loop Road, so a car and early starts do most of the work. The spots in this chapter run from Midway Geyser Basin in the southwest to Lamar Valley in the northeast, about three hours apart by road.",
        "Steam decides the photos here. On cold mornings it hides the colors of the hot springs; on warm, dry days it lifts by mid morning. Keep the thermal basins for late morning and the first light for Lamar Valley."
      ],
      "intro": null,
      "order": 2048,
      "coverUrl": "https://quiet-heron-512.convex.cloud/api/storage/yellowstone-cover.webp",
      "coverStorageId": "kg2a8c4e0g6j2k8m4p0q6s2v8w4y0a6c",
      "members": [
        {
          "spotKey": "01M2Z1G0Y0QG7M2V6N9R3T5W8Y",
          "memberCollectionId": null,
          "order": 1024
        },
        {
          "spotKey": "01M3GYV6A0Y3SYC62RBPEA9S0C",
          "memberCollectionId": null,
          "order": 2048
        }
      ],
      "createdAt": 1789895640000,
      "updatedAt": 1790586840000
    },
    {
      "collectionId": "kn73r7x6mp88mxa9swcbshwd3e7zvr39",
      "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
      "name": "Yosemite",
      "slug": "yosemite",
      "description": "Granite walls and the valley from above",
      "kind": "chapter",
      "body": [
        "Tunnel View, Glacier Point and the trails off Glacier Point Road show the valley from three heights. Glacier Point Road closes to cars in winter, so from November to late May this chapter shrinks to the valley floor.",
        "Sunset belongs to Tunnel View and Taft Point; Glacier Point works from late afternoon into the blue hour."
      ],
      "intro": null,
      "order": 3072,
      "coverUrl": null,
      "coverStorageId": null,
      "members": [
        {
          "spotKey": "01M2Z1G0Y0R2K5P8S1V4X7Z0C3",
          "memberCollectionId": null,
          "order": 1024
        },
        {
          "spotKey": "01M3H2AWH0F9PB64V7QB8QS0MC",
          "memberCollectionId": null,
          "order": 2048
        },
        {
          "spotKey": "01M3H2AXG8GB8YNF4FCEFARFN5",
          "memberCollectionId": null,
          "order": 3072
        },
        {
          "spotKey": "01M3KMNRY0V8ZPTG4HCY75DZFB",
          "memberCollectionId": null,
          "order": 4096
        },
        {
          "spotKey": "01M3H2AYFG8169CVH0JCQY2BN2",
          "memberCollectionId": null,
          "order": 5120
        }
      ],
      "createdAt": 1789895640000,
      "updatedAt": 1790586840000
    },
    {
      "collectionId": "kn7a2s4d6f8g0h2j4k6k8z0x2c4v6b8n",
      "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
      "name": "Top picks",
      "slug": null,
      "description": "If you only have a day in each park",
      "kind": "collection",
      "body": [],
      "intro": null,
      "order": 4096,
      "coverUrl": null,
      "coverStorageId": null,
      "members": [
        {
          "spotKey": "01M2Z1G0Y0QG7M2V6N9R3T5W8Y",
          "memberCollectionId": null,
          "order": 1024
        },
        {
          "spotKey": "01M2Z1G0Y0R2K5P8S1V4X7Z0C3",
          "memberCollectionId": null,
          "order": 2048
        },
        {
          "spotKey": "01M3H2AWH0F9PB64V7QB8QS0MC",
          "memberCollectionId": null,
          "order": 3072
        }
      ],
      "createdAt": 1789895640000,
      "updatedAt": 1790586840000
    },
    {
      "collectionId": "kn7hh1xv41qmtn8mk9n7g2wc7qfrfpte",
      "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
      "name": "The two parks",
      "slug": null,
      "description": null,
      "kind": "collection",
      "body": [],
      "intro": null,
      "order": 5120,
      "coverUrl": null,
      "coverStorageId": null,
      "members": [
        {
          "spotKey": null,
          "memberCollectionId": "kn7e5r9t3y7v1j5p9p3a7s1d5f9g3h7j",
          "order": 1024
        },
        {
          "spotKey": null,
          "memberCollectionId": "kn73r7x6mp88mxa9swcbshwd3e7zvr39",
          "order": 2048
        }
      ],
      "createdAt": 1789895640000,
      "updatedAt": 1790586840000
    }
  ]
}

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.