Pular para o conteúdo

Configurações do site

Método Caminho Escopo
GET /v1/sites/me/settings site:read
PATCH /v1/sites/me/settings site:write
  • URL base: https://api.canverly.com
  • Auth: chave de API Bearer — o site é o site da chave; não há id para passar
  • Limite de requisição: 60 req/min por chave
Janela do terminal
curl -s https://api.canverly.com/v1/sites/me/settings \
-H "Authorization: Bearer ck_live_xxx"
{
"id": "01KVPWYKT6AJDGG2EJN7DW4VT5",
"slug": "example-blog",
"primary_domain": "blog.example.com",
"aliases": ["www.blog.example.com"],
"theme_id": "aurora",
"default_language": "pt-BR",
"enabled_languages": ["pt-BR", "en"],
"multi_lang_enabled": true,
"prefer_www": false,
"force_redirect": true,
"child_redirect_mode": "redirect",
"redirect_status_code": 301,
"settings": {
"social": { "instagram": "https://instagram.com/exampleblog" },
"search": { "enabled": true },
"subscriptions_enabled": true
}
}

A resposta é uma projeção: só campos conhecidos são retornados, então um novo campo interno adicionado no upstream nunca vaza aqui. id, slug, primary_domain e aliases são somente leitura — voltam no GET, mas não podem ser gravados.

settings é o blob de apresentação/conteúdo. O GET o retorna inteiro, inclusive chaves que esta API não consegue gravar (veja a allowlist abaixo).

Dois tipos de campo, ambos opcionais, ambos na allowlist.

Campo Tipo Observações
theme_id string Tema ativo.
default_language string Tag BCP-47.
enabled_languages string[] Tags BCP-47.
multi_lang_enabled boolean
prefer_www boolean O host canônico prefere www..
force_redirect boolean Força hosts não canônicos para o domínio principal.
child_redirect_mode string Como os domínios alias/filhos se comportam.
redirect_status_code integer 301 ou 302.

Estes são substituídos pelo valor que você envia.

Dentro do objeto settings, só estas chaves de nível superior são graváveis, e elas são mescladas por cima do que está armazenado — as chaves omitidas mantêm o valor atual:

social · footer_columns · legal_links · search · customization · advanced · subscriptions_enabled · language_url_mode

Marca e identidade — title · tagline · description · logo · logo_media_id · logo_svg · logo_url · favicon_svg · favicon_png_url · favicon_png_media_id · favicon_ico_url · favicon_ico_media_id

As variantes legadas são todas graváveis porque o site as lê em cascata (logo → logo_svg → logo_url); permitir só a moderna deixaria você gravar um campo que o site nunca lê. Envie o arquivo com POST /v1/media primeiro e armazene o id retornado — um site inteiro pode ganhar marca sem abrir o painel.

Um corpo sem nenhum campo gravável é um 400 cuja mensagem lista tudo o que é aceito.

Janela do terminal
curl -X PATCH https://api.canverly.com/v1/sites/me/settings \
-H "Authorization: Bearer ck_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"default_language": "pt-BR",
"enabled_languages": ["pt-BR", "en"],
"multi_lang_enabled": true,
"settings": {
"social": { "instagram": "https://instagram.com/exampleblog" },
"subscriptions_enabled": true
}
}'

200 OK retorna a mesma projeção do GET, refletindo o novo estado — então uma única chamada basta para gravar e confirmar.

Status error.code Quando
400 bad_request Nenhum campo gravável no corpo (no updatable settings provided (allowed: …)).
401 unauthorized Chave ausente/inválida/revogada.
403 forbidden A chave não tem site:read / site:write.
429 rate_limited Acima de 60 req/min — respeite o Retry-After.
502 upstream Erro transitório no upstream; tente de novo com backoff.