Public & SEO Surfaces
These endpoints are public, need no authentication, and are scoped to a site by its host. They power the live site, search engines, AI crawlers, and the agent help reference.
Help & reference
GET /content/help— a compact, machine-readable reference of every content type, block type, Liquid filter, and tag, plus task recipes. Built for AI agents to load once and then build correctly. Query:format(yaml|md|json, defaultyaml).GET /content/help/block-fields?block_type=hero— the exact fields for a block type, with alias and anti-pattern hints. Omitblock_typeto list all.GET /content/variables— the merge-tag vocabulary for dynamic templates ({{ firstname }},{{ company_name }}, etc.).
Example:
curl "https://spideriq.ai/api/v1/content/help?format=yaml"Sitemaps
GET /content/sitemap.xml— the XML sitemap, generated from your published, indexable content and kept current automatically.GET /content/sitemap— the same as JSON.
Pages set to noindex are excluded. See Search Engines.
AI-crawler surfaces
GET /content/llms.txt— an index of your site (titles + links + descriptions) following thellmstxt.orgconvention.GET /content/llms-full.txt— your site's full content as Markdown, in one fetch. Opt-in per site viaextensions.llms_txt.full_enabled; size-governed; noindex-honoring.GET /<slug>.md(or?format=mdon a page/post) — any page as clean Markdown.
See AI Crawlers.
Feeds
GET /content/feed.xml— RSS 2.0.GET /content/atom.xml— Atom 1.0.GET /content/feed.json— JSON Feed 1.1.GET /content/robots.txt— a dynamicrobots.txthonoring your settings.GET /content/opensearch.xml— an OpenSearch description for browser search.
Public content reads
The read side of every content type is public:
GET /content/pages,GET /content/pages/{slug}GET /content/posts,/content/posts/{slug},/content/posts/featured,/content/posts/searchGET /content/authors,/content/authors/{slug},/content/categories,/content/tagsGET /content/docs/tree,/content/docs/{path},/content/docs/searchGET /content/navigation/{location}GET /content/settingsGET /content/media
See Content for the full list and the matching write endpoints.
Directory listings
A directory's pages are public, and so are the doors behind them. Both are unauthenticated and tenant-scoped by the request host.
GET /content/directory/categories— every category with published listings.GET /content/directory/listings[?category=&city=&page=&page_size=]— the flat list, no category or city segment in the path.GET /content/directory/listings/{listing_slug}[?category=]— one listing.
curl "https://spideriq.ai/api/v1/content/directory/listings?limit=2" \
-H "X-Content-Domain: publish.spideriq.ai"A listing slug is unique per category, not per site. Where two categories hold the same slug the flat detail door returns a deterministic first match and names its choice in category_slug — it never fails on the ambiguity. Pass ?category= to pin it.
The nested pages at /{directory_base}/{category}/{city}/{listing} read the same rows. Flat and nested coexist; neither replaces the other.
Data source items
GET /content/data-sources/{source_id}/items serves the rows behind any bindable collection, scoped to the requesting tenant. idap.businesses — the tenant's own business corpus, 45 declared fields — is served here.
curl "https://spideriq.ai/api/v1/content/data-sources/idap.businesses/items?limit=50" \
-H "X-Content-Domain: publish.spideriq.ai"Paging past 10,000 rows needs the cursor, not offset. offset is capped at 10,000. Beyond it the door refuses with 422 OFFSET_CAP_EXCEEDED, names the cap, and tells you what to send instead:
{ "error": { "code": "OFFSET_CAP_EXCEEDED",
"message": "offset=10001 exceeds the maximum of 10000 for 'idap.businesses'.",
"what_was_expected": { "max_offset": 10000 } } }Take next_cursor from any response and send it back as after. Send it instead of offset, never alongside. A cursor walk returns the rows that follow, in the same order, with no overlap and no ceiling.
curl "https://spideriq.ai/api/v1/content/data-sources/idap.businesses/items?limit=500&after=<next_cursor>" \
-H "X-Content-Domain: publish.spideriq.ai"An unregistered source id returns 404 and points at the registry; a registered but non-servable one returns 422. idap.businesses is servable; idap.countries, idap.cities and idap.streets are registered and not servable, and idap.lead is a singleton that reaches landing-page templates rather than this door.
Marketplace & data
GET /content/marketplace/components,/content/marketplace/site-templates,/content/marketplace/bg-videos,/content/marketplace/search— browse the marketplace (see Design & Deploy).GET /content/data-sources— the dynamic-content data sources available for binding, each with its field list and anis_servableflag (posts, authors, categories, directory listings,idap.businesses, and your own collections).GET /content/vayapin/cards— VayaPin location cards by pins or by a country/city/category query (see VayaPin Cards).
VayaPin cards
# Specific pins
curl "https://spideriq.ai/api/v1/content/vayapin/cards?pins=BB:CHAMPERS,BB:TAPAS"
# Or a live query
curl "https://spideriq.ai/api/v1/content/vayapin/cards?country=DK&category=bars&limit=12"Next steps
API Overview — base URL, auth, and response formats.
Content — the matching dashboard write endpoints.
Search Engines — how sitemaps and robots are generated.
AI Crawlers — the llms.txt surfaces in depth.
Directory Tools — the tools that write the listings these doors read.