Autenticação e escopos

A chave

Toda chamada à API leva a chave no header:

Authorization: Bearer pico_sk_…

Ela é criada em Conta → API e MCP, aparece uma vez e nunca mais pode ser lida — o Pico guarda só um hash. Perdeu? Crie outra e revogue a antiga. A lista mostra o começo (pico_sk_ab12cd…), o último uso e a validade.

A chave nasce presa a um workspace (o seu tenant) e a você. Tudo que ela lê ou escreve é desse workspace; nada de tenantId no corpo ou na query — o servidor decide por quem é a chave.

Os quatro escopos

EscopoDeixaNasce marcado?
leituraler perfil, pesquisas, peças, leads, inbox, custosim
escritasalvar perfil, editar rascunhos, agendar, ajustar o teto, traduzirsim
gastopedir pesquisas e gerar peças/análises com IA — gasta dinheiro da sua conta (Virlo)não
publicacaopublicar peças e responder leads — age na sua conta do Instagram/TikToknão

Cada rota exige um escopo (está no cabeçalho de cada uma na referência). Chave sem o escopo recebe 403 escopo_insuficiente. Escopos não mudam depois de criados: crie outra chave.

Regra prática: uma chave leitura+escrita para o dia a dia; uma com gasto só quando for pesquisar, com o teto do mês ajustado; publicacao só se você quer que o Claude Code (ou o seu script) publique — ele ainda vai pedir sua confirmação a cada vez.

O que a chave NÃO faz

Validade e revogação

Sessão vs. chave

As rotas da v1 aceitam também a sessão do app (o cookie), com todos os escopos — é assim que a própria tela usa a API. Uma request com chave e cookie é tratada como chave (os escopos são os dela). Para integrações de fora, use chave: sessão exige mesma origem.

Erros de autenticação

StatuscodeO que é
401chave_invalidanão existe, revogada, expirada ou operador fora do workspace — resposta igual nos quatro casos
401sem_sessaorota chamada sem chave e sem cookie
403so_sessao/v1/chaves com chave de API
403escopo_insuficientea chave não tem o escopo da rota
403cross_sitesessão vinda de outro site por script

A resposta 401 traz WWW-Authenticate: Bearer realm="pico".

API do Pico · versão 2026-09-11 · changelog · privacidade