- The key is in your host’s production environment variables (
VACADEMY_CATALOG_KEY), not in the repository. - One key per website, named after it, so it can be rotated alone.
-
GET /sitereturns the rightcourse_base_url. If not, the institute’s admin sets it under Settings → Integrations → Catalogue API & websites → Course page address. - A course card opens the hosted course page, and enrolment works there end to end.
- Links use
urlexactly as returned, query string included. - Cards handle
url: null,price: null,image_url: nullandsubtitle: null.
- Pages fetch on the server, with
next: { revalidate: 60 }(or another cache). The site does not call the API once per visitor. - If you host course pages: canonical and sitemap point to your pages. If you link out: course URLs are not in your sitemap.
-
structured_datais in a<script type="application/ld+json">, escaped with.replace(/</g, '\\u003c'). Check a page with Google’s Rich Results Test.
- The production domain is Verified under Your websites. Add the bare domain to cover
wwwand other subdomains. - Preview deployments (
*.vercel.app) call the API from the server only.
- The form posts through your server with
X-Client-IP. -
receivedandduplicateboth show a thank-you. - A test enquiry appears in Audience Manager → Recent Leads, in the expected campaign.
- A failing API call does not take the page down: show the cached data, or a short message, and log
request_id. -
404 not_foundon a course page renders your 404 (notFound()): courses can be unpublished.