URL base
Autenticação
Mande a sua chave de API no cabeçalhoAuthorization:
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.
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
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.

