Quickstart
-
Create an API key.
In the admin, open Configurações → Integrações API, click Gerar chave, select the scope
posts:write(addpost_types:readandsites:readif your tool inspects the site), and copy theck_…secret. It is shown once. Details: Authentication. -
Publish a post.
Janela do terminal curl -X POST https://api.canverly.com/v1/posts \-H "Authorization: Bearer ck_live_xxx" \-H "Content-Type: application/json" \-d '{"title": "My first API post","status": "published","blocks_json": {"v": 1,"blocks": [{ "id": "p1", "type": "paragraph", "text": "Hello, world." }]}}'Response:
{ "id": "01K…", "slug": "my-first-api-post", "status": "published", "public_url": null } -
Verify it’s live.
Janela do terminal # Find your site's domain (once):curl -s https://api.canverly.com/v1/sites/me -H "Authorization: Bearer ck_live_xxx"# → { "id": "...", "slug": "...", "primary_domain": "blog.example.com", "default_language": "pt-BR" }# Then open https://blog.example.com/my-first-api-post
First-call troubleshooting
Section titled “First-call troubleshooting”| You see | Cause | Fix |
|---|---|---|
401 unauthorized |
Missing/typo’d Authorization, or key revoked |
Resend Authorization: Bearer ck_…; regenerate if revoked |
403 forbidden |
Key lacks posts:write |
Generate a key with the right scope |
400 bad_request (title is required) |
Empty/missing title |
Provide a non-empty title |
422 (missing field blocks_json) |
No body block document | Include blocks_json: { "v": 1, "blocks": [...] } |
429 rate_limited |
Over 60 req/min | Back off; honor Retry-After |