Skip to content

Canverly API

Canverly is a multi-tenant publishing platform. Each tenant owns one or more sites — independently themed, independently configured properties that serve content (posts, custom post types, pages) to the public web. Customization (colors, typography, layout, menus, the builder JSON for homepage blocks) is persisted per site and rendered server-side by web-public (Astro 5 SSR). Authoring happens in admin.canverly.com; runtime delivery is fronted by Caddy.

The Canverly Public API (api.canverly.com) is the programmatic surface for integrators. It exposes the operations external systems need to feed content into a site: POST /v1/posts to publish a new post, GET /v1/post-types to discover which post types the site accepts (and their schemas), and GET /v1/sites/me to retrieve the metadata of the site that owns the API key being used. The API is JSON over HTTPS, follows REST conventions, and returns application/problem+json for errors.

Authentication is done with per-site API keys. Each key is scoped to exactly one site and carries a set of scopes (e.g. posts:write, post_types:read, sites:read). Keys are minted in the admin UI under Configurações → Integrações API → API Keys, shown to the operator exactly once, and revocable at any time. Requests are authenticated by sending Authorization: Bearer ck_... on every call. The default rate limit is 60 requests per minute per key; exceeding it returns 429 Too Many Requests with a Retry-After header. Higher limits are available on request.