Example: Chimpee autoposting
Chimpee can POST a JSON payload to any webhook whenever a source feed gets a new item. Point it at https://api.canverly.com/v1/posts and every new item becomes a published Canverly post.
1. Create an API key
Section titled “1. Create an API key”In the admin, Configurações → Integrações API → Gerar chave. Scopes:
posts:write(required)post_types:read(optional — lets you validatepost_type)
Copy the ck_… secret (shown once). See Authentication.
2. Configure the webhook publisher
Section titled “2. Configure the webhook publisher”In Chimpee, add a Webhook publisher on the source you want to autopost:
| Setting | Value |
|---|---|
| Method | POST |
| URL | https://api.canverly.com/v1/posts |
| Header | Authorization: Bearer ck_… |
| Header | Content-Type: application/json |
| Body | the JSON template below |
3. Body template
Section titled “3. Body template”Map the source fields into the Canverly post. The body content goes in blocks_json. If your source item is plain text or HTML, wrap it in a single paragraph (inline HTML is allowed and sanitized):
{ "title": "{{item.title}}", "slug": "{{item.id}}", "status": "published", "excerpt": "{{item.summary}}", "category_slugs": ["{{item.category}}"], "blocks_json": { "v": 1, "blocks": [ { "id": "p1", "type": "paragraph", "text": "{{item.content_html}}" } ] }}If your content is long-form HTML with headings and lists, split it into multiple blocks (heading, list, code) for the best rendering — see Content blocks.
4. Map fields
Section titled “4. Map fields”| Source (Chimpee) | Canverly field | Notes |
|---|---|---|
item.title |
title |
Required. |
item.id |
slug |
Stable slug → safe retries. |
item.summary |
excerpt |
Optional; SEO description. |
item.content_html |
a paragraph block’s text |
Sanitized; scripts removed. |
item.category |
category_slugs[] |
Use slugs that exist on the site. |
To target a custom post type, add "post_type": "<slug>" and confirm it via GET /v1/post-types.
5. Verify
Section titled “5. Verify”After the first delivery, a successful publish returns 201 with { "id", "slug", "status" }. The post is live at https://<your-site-domain>/<slug> (resolve the domain via GET /v1/sites/me).
Troubleshooting
Section titled “Troubleshooting”| Response | Cause | Fix |
|---|---|---|
401 |
Missing/invalid key | Check the Authorization header. |
403 |
Key lacks posts:write |
Regenerate the key with the right scope. |
422 |
No blocks_json (e.g. body template not wrapping content in a block) |
Ensure the template sends blocks_json. |
429 |
Over 60 req/min | Chimpee honors Retry-After; pace deliveries. |
See Errors & rate limits for the full list.