Skip to main content
A API da Cube segue o estilo REST: rotas previsíveis, respostas em JSON e os códigos HTTP de sempre. É a mesma API que o painel usa, com uma chave no lugar do login.

URL base

Todo pedido vai por HTTPS.

Autenticação

Mande a sua chave de API no cabeçalho Authorization:
1

Crie a chave

No painel, abra Chaves de API e clique para criar. Dê um nome (como “CI do GitHub”), escolha a permissão e confirme com a sua senha.
2

Copie na hora

A chave começa com cube_ e aparece uma vez só. Guarde num gerenciador de segredos ou numa variável de ambiente, como CUBE_API_KEY.
3

Use

Mande Authorization: Bearer $CUBE_API_KEY em todo pedido. Sem cookie e sem nada mais.
  • Até 10 chaves por conta. A lista mostra o começo de cada chave e quando ela foi usada pela última vez.
  • Revogar vale no pedido seguinte. Logs abertos com a chave revogada fecham em até 20 segundos.
  • Redefinir a senha ou usar o Não fui eu revoga todas as chaves da conta.
  • Tudo o que a chave faz entra na Atividade com o nome dela.
A chave dá acesso aos seus projetos. Nunca coloque no código, num repositório ou num app que roda no navegador. Vazou? Revogue no painel e crie outra.

O que a chave pode fazer

Excluir um projeto, mudar as configurações, mexer nos arquivos, ver o uso da conta e cuidar de chaves e cobrança são só pelo painel. Com uma chave, essas rotas respondem 403 api_key_not_allowed ou 401 not_authenticated. Uma chave nunca cria nem revoga outra chave.

Limites

Os pedidos com chave contam por conta (todas as chaves somadas), por minuto e por dia: Toda resposta a um pedido com chave válida traz os cabeçalhos do limite: Passou do limite: 429 rate_limit_exceeded com Retry-After. Além disso, as ações pesadas têm limite próprio: um envio de .zip a cada 3 segundos por conta e uma abertura de logs a cada 5 segundos por projeto, com até 5 abertas ao mesmo tempo (429 too_many_requests).

Formato

  • Pedidos com corpo usam JSON (Content-Type: application/json), menos o envio do .zip, que é multipart/form-data.
  • Respostas são JSON com o recurso pelo nome: { "project": { … } } ou { "projects": [ … ] }. Os logs chegam por streaming (text/event-stream).
  • IDs de projeto têm 26 caracteres, como 01J8Z3W6N0Q4Y7V2K5T9D1H3XA.
  • Datas em ISO 8601, em UTC: 2026-09-26T18:00:00.000Z.
  • Memória sempre em MB (memoryMb). 1 GB = 1024 MB.
  • Erros no formato { "status": "error", "code", "message" }. Veja todos em Códigos de erro.

O ciclo de vida de um projeto

Em creating e installing, iniciar, parar e reiniciar respondem 409 project_busy. Nada sobe sem você pedir: um projeto novo só inicia com start=true no envio.

Primeiro pedido

Os exemplos de Node.js usam fetch nativo e await fora de função: rode no Node.js 20 ou mais novo, com o arquivo salvo como .mjs (ou com "type": "module" no package.json). Os de Python usam requests.

Deploy pelo CI

Com uma chave de leitura e escrita guardada como segredo do CI, um passo basta para atualizar o projeto a cada push:
O projeto volta ao ar com o código novo sozinho, se estava ligado. Veja Enviar novo código.