Pular para o conteúdo
Clevera Help Center

Use a API REST da Clevera

Chame a Clevera a partir de seus próprios scripts: URL base, autenticação por bearer-token, endpoints e a permissão que cada um exige, o fluxo de cotação antes de iniciar para trabalhos pagos, idempotência, formato de erro e limites de taxa.

Atualizado 9 min de leitura

A API REST da Clevera permite que seus próprios scripts e serviços façam o que um agente pode fazer via MCP: ler sua biblioteca, solicitar vídeos e artigos, exportar vídeos, trabalhar em sites de documentação e acompanhar os trabalhos. Este artigo aborda a URL base, autenticação, o fluxo de solicitação para trabalhos pagos, erros e limites de taxa.

Noções básicas

URL base https://app.clevera.ai/api/v1
Autenticação Authorization: Bearer <token> com um token de API (ele começa com clv_agent_)
Formato JSON de entrada e saída. Envie Accept: application/json e, com um corpo, Content-Type: application/json.
Ids Ids públicos, como job_… para trabalhos. Use os ids que a API retorna.

Verifique um token com GET /docs/me:

Terminal
curl -H "Authorization: Bearer $CLEVERA_TOKEN" \
     -H "Accept: application/json" \
     https://app.clevera.ai/api/v1/docs/me

A resposta diz em nome de quem o token atua: o nome e a validade do token, a pessoa e seu cargo atual, o workspace, os sites no escopo e as permissões que funcionam no momento (as permissões do token reduzidas ao cargo atual da pessoa). Chame-o primeiro quando uma chamada for recusada.

Endpoints

Cada endpoint precisa da permissão mostrada. Chamar um sem ela retorna 403 forbidden_ability. Veja Permissões do agente.

Biblioteca e materiais

Método e caminho Permissão O que faz
GET /create/types qualquer Os tipos de vídeo e clipe social que você pode solicitar.
GET /library library:read Vídeos, gravações e artigos que o proprietário do token pode ver.
GET /recordings library:read Apenas gravações.
GET /library/{item} library:read Um item.
GET /library/{item}/transcript library:read Sua transcrição.
GET /library/{item}/article library:read Seu artigo.
GET /library/{item}/embed library:read Seu código de incorporação.
GET /materials library:read Imagens, vídeos e PDFs enviados.
POST /materials, POST /materials/import, POST /materials/uploads, POST /materials/uploads/{upload_id}/complete materials:write Adicionar uma imagem, vídeo ou PDF (diretamente, de uma URL ou como um upload grande).

Vídeos e artigos

Método e caminho Permissão O que faz
POST /videos/quotes videos:create Cotar um vídeo a partir de uma gravação (type: how_to, product_demo, cleanup, styled_video), um artigo a partir de uma gravação (article) ou uma tradução (translation).
POST /videos videos:create + credits:spend Criar o vídeo cotado (quote_id).
POST /articles/from-recording videos:create + credits:spend Criar o artigo cotado.
POST /videos/translations videos:create + credits:spend Criar a tradução cotada.
POST /clips/quotes videos:create Cotar um clipe social (tipos de GET /create/types).
POST /clips videos:create + credits:spend Criar o clipe social cotado.
POST /videos/{video_id}/exports videos:export Renderizar um MP4: resolution 1080p (padrão), 2k ou 4k; sempre 60 fps. Gratuito.

Trabalhos e créditos

Método e caminho Permissão O que faz
POST /quotes a permissão do trabalho Uma cotação para qualquer tipo de trabalho.
POST /jobs a permissão do trabalho (+ credits:spend quando pago) Iniciar um trabalho cotado.
GET /jobs jobs:read Listar trabalhos.
GET /jobs/{job} jobs:read Status e resultado de um trabalho.
GET /jobs/{job}/wait jobs:read Aguardar uma alteração em vez de consultar.
GET /jobs/{job}/events jobs:read Eventos de progresso do trabalho.
POST /jobs/{job}/cancel jobs:read Cancelar um trabalho. Tarde demais: "Este trabalho não pode mais ser cancelado."
GET /credits credits:spend ou jobs:read Saldo de créditos do workspace.

Sites de documentação

Método e caminho Permissão O que faz
GET /docs/sites, GET /docs/sites/{site}, GET /docs/sites/{site}/tree, GET /docs/sites/{site}/pages content:read Sites no escopo do token e suas páginas.
GET /docs/sites/{site}/search, GET /docs/pages/{page}, GET /docs/pages/{page}/revisions content:read Pesquisar e ler páginas, rascunhos incluídos.
POST /docs/sites/{site}/articles, PATCH /docs/pages/{page}/article, POST /docs/pages/{page}/review articles:write Criar e editar rascunhos de artigos, enviar para revisão. Artigos publicados também precisam de site:publish.
PATCH /docs/pages/{page}, DELETE /docs/pages/{page}, POST /docs/sites/{site}/sections, PATCH /docs/sections/{section} structure:write Mover, renomear, ocultar e remover páginas; seções.
GET/POST /docs/sites/{site}/site-pages, PUT /docs/site-pages/{page}/body content:read / site-pages:write Páginas inicial, de contato e legal.
GET/POST /docs/sites/{site}/changelog, PATCH /docs/changelog/{entry} content:read / changelog:write Entradas de changelog como rascunhos.
POST /docs/media, POST /docs/media/uploads media:write Fazer upload de imagens.
POST /docs/sites/{site}/publish, POST /docs/pages/{page}/ready, POST /docs/changelog/{entry}/publish site:publish Publicar o que os leitores veem.
GET /insights/sites/{site}, …/gaps, …/feedback insights:read Pesquisar lacunas, perguntas sem resposta, feedback de página.
PATCH /docs/sites/{site}/settings, …/appearance, PUT …/navigation, POST …/redirects site:configure Configurações do site.
POST /docs/sites sites:create Criar um site de documentação.

Mais sobre agentes e sites de documentação: Conectar agentes de IA aos seus sites de documentação.

Trabalhos que custam créditos sempre passam pela cotação primeiro, depois iniciam:

  1. Cote. POST /videos/quotes (ou /clips/quotes) com o que você deseja. A resposta tem um quote_id e o intervalo de crédito. Uma cotação é válida por 15 minutos e pode ser usada uma vez.
  2. Opcionalmente, faça um teste. Envie o início com "dry_run": true para saber se ele iniciaria, precisaria de aprovação ou seria bloqueado. Nada é gravado.
  3. Inicie. POST /videos com quote_id e um cabeçalho Idempotency-Key. A resposta é 202 com um trabalho.
  4. Acompanhe. GET /jobs/{job}/wait até que o status do trabalho mude, ou ouça webhooks.
Quote, then start a how-to video
curl -X POST https://app.clevera.ai/api/v1/videos/quotes \
  -H "Authorization: Bearer $CLEVERA_TOKEN" -H "Content-Type: application/json" \
  -d '{"type": "how_to", "recording_id": "<recording id>", "language": "en-US"}'

curl -X POST https://app.clevera.ai/api/v1/videos \
  -H "Authorization: Bearer $CLEVERA_TOKEN" -H "Content-Type: application/json" \
  -H "Idempotency-Key: 3f6c1a2e-8d4b-4f7a-9c1e-2b5d7e9f0a13" \
  -d '{"quote_id": "<quote id>"}'

Status dos trabalhos:

Status Significado
queued Aceito, prestes a executar.
running Em execução.
needs_input Aguardando uma pessoa, geralmente uma aprovação em Solicitações do agente. O trabalho contém um link e uma validade.
succeeded Concluído. O trabalho vincula o novo vídeo ou artigo.
failed Falhou; o trabalho tem um error_code.
canceled Cancelado, ou sua aprovação foi negada.
expired Ninguém aprovou dentro de 24 horas.

Se um início é executado imediatamente ou aguarda uma pessoa depende dos limites de gastos do token e da sua configuração Aprovar automaticamente abaixo. Veja Controlar gastos e aprovações do agente.

Novas tentativas e idempotência

Envie um cabeçalho Idempotency-Key (um UUID novo por ação) em cada criação e início. Se a rede cair e você tentar novamente com a mesma chave e corpo, você recebe a primeira resposta de volta em vez de um segundo vídeo. As chaves são lembradas por 24 horas.

Código Significado
idempotency_key_reused A mesma chave com um corpo diferente. Use uma nova chave para uma nova solicitação.
idempotency_in_progress A primeira solicitação com esta chave ainda está em execução. Aguarde e tente novamente.
idempotency_conflict "Esta chave de idempotência foi usada para uma solicitação diferente."

Erros

Todo erro tem o mesmo formato, com uma mensagem que diz o que fazer a seguir:

{
  "error": {
    "code": "forbidden_ability",
    "message": "This token lacks the videos:create ability. Ask the workspace member who owns it for a token that has it.",
    "details": { "ability": "videos:create" }
  },
  "request_id": "req_example"
}

Inclua o request_id ao entrar em contato com o suporte.

HTTP Códigos Causa típica
401 unauthenticated, token_expired, token_revoked Sem token, um incorreto, ou um que expirou ou foi revogado.
402 insufficient_credits O workspace não tem créditos suficientes para a cotação.
403 forbidden_ability, forbidden_role, forbidden_item, ip_not_allowed, live_content_needs_publish, site_paused, forbidden Uma permissão ausente, o cargo do proprietário, acesso à coleção ou a lista de permissão de IP.
403 plan_locked "A API do agente não está no plano deste workspace. Ela está no Pro e superior."
404 not_found, unknown_kind "Nenhum … com esse id no escopo deste token. Liste ou pesquise primeiro e use um id retornado."
409 revision_conflict, quote_used, not_cancelable, idempotency_* O conteúdo mudou, a cotação foi usada ou um conflito de nova tentativa.
410 quote_expired "Esta cotação expirou. Peça uma nova cotação."
413 unsupported_media O arquivo é muito grande ou não é um tipo suportado.
422 validation_failed, invalid_input, quote_mismatch, limit_reached Um campo está incorreto; details o nomeia.
429 rate_limited, cap_exceeded, busy Muitas solicitações, um limite de gastos ou dois inícios ao mesmo tempo.

Cada mensagem, com a correção: Corrigir erros do agente e da API.

Limites de taxa

Limite Valor Mensagem
Solicitações por token 300 por minuto "Este token excedeu sua taxa de solicitação. Aguarde e tente novamente."
Solicitações por workspace 1.200 por minuto, todos os tokens juntos "Este workspace excedeu sua taxa de solicitação de agente. Aguarde e tente novamente."
Gravações por token 60 por minuto "Muitas gravações deste token. Aguarde e tente novamente."
Gravações por token por dia 2.000 "Este token atingiu seu limite diário de gravação. Tente novamente amanhã."
Publicações por token 10 por hora "Este token atingiu seu limite horário de publicação. Tente novamente mais tarde."
Inícios pagos 20 por hora por token, 100 por dia por workspace rate_limited com retry_after
Uploads 30 por minuto; 500 MB por dia por token; 25 MB por arquivo "Muitos uploads deste token. Aguarde e tente novamente." / "Este token atingiu seu volume diário de upload. Tente novamente amanhã."
Chamadas sem um token válido 60 por minuto por endereço IP "Muitas solicitações. Aguarde e tente novamente."

Uma resposta 429 tem um cabeçalho Retry-After e retry_after (segundos) no corpo. Aguarde esse tempo antes de tentar novamente. Leituras, cotações e verificações de status não custam créditos.