Design & Deploy

Endpoints for components, Liquid templates, themes, the marketplace, deploying, and custom domains. Writes require a bearer token and support the dry-run / confirm flow where noted.

Components

Public reads

  • GET /content/components — published components. Query: category, tag, is_featured, limit, offset, format.

  • GET /content/components/{slug} — a component by slug (?version= to pin).

Dashboard (bearer)

  • GET|POST /dashboard/content/components — list / create.

  • GET /dashboard/content/components/{component_id} — by id.

  • GET /dashboard/content/components/by-slug/{slug} — by slug (?version=).

  • PATCH|DELETE /dashboard/content/components/{component_id} — update / delete. Gated.

  • POST /dashboard/content/components/{component_id}/publish · /archive. Gated.

  • POST /dashboard/content/components/{component_id}/preview — render in isolation.

  • POST /dashboard/content/components/{component_id}/upload-preview — preview image (≤5 MB).

  • GET /dashboard/content/components/{slug}/versions — list versions.

  • POST /dashboard/content/components/{slug}/update-and-propagate — bump a component and repoint the pages that use it.

  • POST /dashboard/content/components/{slug}/rollback — restore an earlier version and repoint pages.

POST /dashboard/content/components body (key fields): slug (required), name (required), html_template (required), css, js, dependencies[], props_schema, default_props, category, version, is_global, kind (static|interactive|dynamic|extension).

Templates & Themes

  • GET /content/themes — public list of built-in themes.

  • GET /content/themes/{name} — theme detail + its template files.

  • GET /dashboard/content/templates (template service) — your custom template overrides.

  • Template files are managed through the template service (template_* operations exposed via the CLI and MCP): list, get, upsert, delete, plus apply-theme, get-config, update-config, and preview.

Applying a theme installs its templates for your site; deleting a custom template override reverts that file to the theme default. Applying a theme is gated.

Marketplace

Public reads

  • GET /content/marketplace/components — the section library. Query: category, is_featured, tag, plus discovery axes mood[], palette[], brand_fit[], scene_type, limit, offset.

  • GET /content/marketplace/components/{slug} — a section.

  • GET /content/marketplace/site-templates — full starter sites. Query: industry, use_case, tag, is_featured.

  • GET /content/marketplace/site-templates/{slug} — a site template (with its pages/settings).

  • GET /content/marketplace/bg-videos — background videos. Query: category (nature|city|abstract|food|tech|people), tag, is_featured.

  • GET /content/marketplace/search — one search across components, bg-videos, and site-templates.

Apply a site template (clones its pages into your project as drafts):

  • POST /dashboard/content/templates:apply (CLI) / content_apply_site_template (MCP) — gated, preview then confirm.

Deploy

Deploying pushes your current content + templates to the edge. It completes in a few seconds and is a safe, two-step action.

  • POST /dashboard/content/deploy — deploy. Gated by dry_run/confirm_token (one-shot back-compat).

  • POST /dashboard/content/deploy/preview — returns a preview URL + a confirm_token.

  • POST /dashboard/content/deploy/production?confirm_token=cft_… — apply.

  • GET /dashboard/content/deploy/status — last deploy status.

Example — the two-step deploy:

# Preview
curl -X POST "https://spideriq.ai/api/v1/dashboard/content/deploy/preview" \
  -H "Authorization: Bearer $TOKEN"
# → { "preview_url": "https://preview-….sites.spideriq.ai/", "confirm_token": "cft_…",
#     "expires_at": "…", "snapshot_hash": "…" }

# Production
curl -X POST "https://spideriq.ai/api/v1/dashboard/content/deploy/production?confirm_token=cft_…" \
  -H "Authorization: Bearer $TOKEN"
# → { "status": "live", "version_id": 48, "deployed_at": "…" }

Domains

  • GET /dashboard/content/domains — list domains.

  • POST /dashboard/content/domains — connect a custom domain. Body: { "domain": "example.com" }. Returns a verification_token and ssl_status.

  • POST /dashboard/content/domains/subdomain — claim a free *.sites.spideriq.ai subdomain.

  • GET /dashboard/content/domains/subdomain/availability?subdomain_name=... — check availability.

  • POST /dashboard/content/domains/{domain}/verify — verify ownership via the DNS TXT record.

  • POST /dashboard/content/domains/{domain}/recheck — re-check the SSL certificate status.

  • POST /dashboard/content/domains/{domain}/primary — set the primary domain.

  • PATCH|DELETE /dashboard/content/domains/{domain} — update / remove.

A domain's ssl_status (pendingprovisioningactive) reflects Cloudflare's certificate state and is reconciled in the background; the recheck endpoint forces an immediate poll. See Custom Domains.

Next steps

  • API Overview — base URL, auth, and the dry-run / confirm flow.

  • Content — pages, posts, docs, navigation, media, settings.

  • Deploy — how deploying to the edge works.

  • Custom Domains — connect and verify a domain.