List Site Content

Returns the website's Content: its types (a name and fixed fields) and the entries the owner wrote to them, including Panda's legal entries (Privacy Policy, Terms and Conditions, Accessibility Statement, Fair Housing Notice). This public, read-only endpoint can return one type and one language.

GET/v1/site-content

Authentication

Public key?key=pk_…

Public key in the key query parameter. No OAuth, no secret.

Edge cache: no-store (private, no-store)

Query Parameters

keystring
required

The site's public key (pk_…). It selects the account. Safe to ship to the browser.

typestring
optional

A type's key (faq, article). Only that type and its entries are returned; an unknown key returns empty objects.

localestring
optional

Language code. Each entry then shows the fields the owner translated into that language and the source language for the rest. An unknown code returns the source language.

enesbrptitrufrsrdecnzhplrotrar

Responses

200Success
application/json
typesobject
entriesobject

Errors

401Missing or invalid public key
403TENANT_INACTIVE: the account has no active subscription (body also carries code)

Notes

  • types is keyed by the type's key; entries has the same keys, oldest first. Panda's Article type is always present with its four legal entries, even on a website that never opened Content.
  • A field's kind is text, richText (sanitized HTML), image and gallery ({ url, alt }), date (YYYY-MM-DD), number, select (one of its options), toggle, link ({ href, newTab }) or a Panda data field (area, building, newDevelopment, savedSearch, listing) that holds the record's id.
  • An entry with source: "panda" is Panda's own text: it follows Panda's current version until the owner edits it (source then becomes owner). An owner who started from their Settings › Legal text keeps it as source: "owner".
  • A type with page shows each entry on its own page at that route (/guides/[slug]); the site's code draws it and adds the entries to its sitemap.
  • Built-in sites read this through getEntries("faq") and getEntry("article", "privacy-policy") from @/lib/panda-content. Sites outside the Panda AI Builder have only the Article type.
Request
curl --request GET \
--url "https://api.pandaidx.com/v1/site-content?key={{public_key}}"
Response200 OK
{
"types": {
"faq": {
"key": "faq",
"label": "FAQ",
"source": "panda",
"presetKey": "faq",
"fields": [
{
"key": "question",
"label": "Question",
"kind": "text",
"required": true
},
{
"key": "answer",
"label": "Answer",
"kind": "richText",
"required": true
},
{
"key": "topic",
"label": "Topic",
"kind": "select",
"options": [
"Buying",
"Selling",
"Renting"
]
}
]
},
"article": {
"key": "article",
"label": "Article",
"source": "panda",
"presetKey": "article",
"fields": [
{
"key": "title",
"label": "Title",
"kind": "text",
"required": true
},
{
"key": "body",
"label": "Body",
"kind": "richText",
"required": true
}
]
}
},
"entries": {
"faq": [
{
"typeKey": "faq",
"slug": "can-i-buy-with-5-percent-down",
"source": "owner",
"values": {
"question": "Can I buy with 5% down?",
"answer": "<p>Yes, with some loan programs.</p>",
"topic": "Buying"
},
"seo": {},
"updatedAt": "2026-10-23T14:03:22.000Z"
}
],
"article": [
{
"typeKey": "article",
"slug": "privacy-policy",
"source": "panda",
"presetKey": "privacy-policy",
"presetVersion": 1,
"values": {
"title": "Privacy Policy",
"body": "<p>This Privacy Policy explains…</p>"
},
"seo": {},
"updatedAt": ""
}
]
}
}