API
Tudo o que o painel, a CLI e o MCP fazem passa por uma API HTTP com JSON. Use para automações e scripts. São 91 rotas, todas descritas num arquivo OpenAPI
Primeira chamada
$ export PUXADINHO_API_KEY=pxd_live_SUA_CHAVE$ curl -H "Authorization: Bearer $PUXADINHO_API_KEY" https://www.usepuxadinho.com.br/v1/boxesCrie a chave em Conectar ou com puxadinho keys create (veja Chaves e segurança). A chave também vale no cabeçalho X-API-Key.
O contrato
$ curl -O https://www.usepuxadinho.com.br/docs/api/openapi.yamlopenapi.yaml (API do puxadinho, versão 1.0.0) é a fonte única: o painel, a CLI e o MCP seguem esse arquivo. Abra num leitor de OpenAPI ou entregue ao seu agente.
https://www.usepuxadinho.com.br como base: as rotas são as mesmas, todas sob /v1.Regras da casa
- Mensagens de erro em português (
message); códigos em inglês e estáveis (code), bons para o agente decidir o que fazer. - Dinheiro em centavos de real, sempre inteiro, em campos que terminam em
Cents. Datas em ISO 8601, UTC. - Toda mudança numa box vira uma operação
op_…. Só uma por box de cada vez: a segunda recebe409 operation_conflictcomRetry-After. - Listas vêm em páginas: mande
limitecursor; a resposta trazdataenextCursor. - Onde a rota pede
{boxId}, vale o id (bx_…) ou o nome da box. - Campo desconhecido no corpo dá
400 unknown_field, com uma sugestão do nome certo.
Rotas
Conta
Pessoa logada, login por device code e sessão.
- GET
/v1/meQuem está autenticado - POST
/v1/auth/deviceIniciar login por device code (CLI) · sem chave - POST
/v1/auth/device/approveAprovar um device code (painel) - POST
/v1/auth/device/denyRecusar um device code ("Não fui eu") - POST
/v1/auth/tokenTrocar device code ou refresh token por sessão · sem chave - DELETE
/v1/auth/sessionSair (revoga a sessão atual e o refresh token) - POST
/v1/feedbackEnviar feedback (puxadinho feedback)
Agentes
Auto-cadastro do agente e agentes conectados.
- POST
/v1/agent-registrationsAuto-cadastro do agente (login --agent) · sem chave - GET
/v1/agent-registrations/{registrationId}Consultar o registro (polling da CLI) · sem chave - GET
/v1/agent-registrations/claims/{claimCode}Ver o pedido de um código (tela "Confirmar código") - POST
/v1/agent-registrations/claims/{claimCode}Aprovar o agente (painel ou puxadinho claim XXXX-XXXX) - DELETE
/v1/agent-registrations/claims/{claimCode}Recusar o pedido - POST
/v1/agent-registrations/claims/{claimCode}/denyRecusar o pedido ("Não fui eu") - GET
/v1/agentsAgentes conectados ao workspace - DELETE
/v1/agents/{agentId}Desconectar agente (revoga a chave dele)
Chaves de API
API keys de workspace (pxd_live_…) com escopos.
- GET
/v1/keysListar API keys do workspace - POST
/v1/keysCriar API key (o valor aparece só nesta resposta) - GET
/v1/keys/{keyId}Ver API key - DELETE
/v1/keys/{keyId}Revogar API key
Boxes
Ciclo de vida das boxes.
- GET
/v1/boxesListar boxes - POST
/v1/boxesCriar box - GET
/v1/boxes/{boxId}Ver box - PATCH
/v1/boxes/{boxId}Renomear, redimensionar, ociosidade, prazos, metadados, tarefa - DELETE
/v1/boxes/{boxId}Apagar box - POST
/v1/boxes/{boxId}/startLigar box desligada - POST
/v1/boxes/{boxId}/stopDesligar box - POST
/v1/boxes/{boxId}/suspendPôr para dormir (salva a memória) - POST
/v1/boxes/{boxId}/resumeAcordar box pausada (por qualquer motivo) - POST
/v1/boxes/{boxId}/restartReiniciar box (aplica resize pendente) - POST
/v1/boxes/{boxId}/wakeAcordar box pausada pelo sistema - POST
/v1/boxes/{boxId}/forkCopiar a box em até 5
Operações
Operações assíncronas op_….
- GET
/v1/operationsListar operações - GET
/v1/operations/{operationId}Ver operação
Execução
Exec, histórico, jobs e processos.
- POST
/v1/boxes/{boxId}/execExecutar comando - GET
/v1/boxes/{boxId}/executionsHistórico de comandos - GET
/v1/boxes/{boxId}/executions/{executionId}Ver comando e a saída guardada (últimos 64 KB por stream) - GET
/v1/boxes/{boxId}/jobsListar jobs - POST
/v1/boxes/{boxId}/jobsIniciar job em segundo plano - GET
/v1/boxes/{boxId}/jobs/{jobId}Ver job - GET
/v1/boxes/{boxId}/jobs/{jobId}/logsSaída do job - POST
/v1/boxes/{boxId}/jobs/{jobId}/waitEsperar o job terminar - POST
/v1/boxes/{boxId}/jobs/{jobId}/killEncerrar job - GET
/v1/boxes/{boxId}/processesProcessos rodando (ps)
Arquivos
Ler, escrever, enviar e baixar arquivos da box.
- GET
/v1/boxes/{boxId}/files/statInformações de um arquivo ou pasta - GET
/v1/boxes/{boxId}/files/listListar pasta - GET
/v1/boxes/{boxId}/files/contentLer arquivo (até 64 MB) - PUT
/v1/boxes/{boxId}/files/contentEscrever arquivo pequeno (até 64 MB) - POST
/v1/boxes/{boxId}/files/download-urlURL assinada para baixar (qualquer tamanho; pasta como tar.zst até 2 GB) - POST
/v1/boxes/{boxId}/files/upload-urlURL assinada para um PUT único (até 5 GB; usado pelo MCP) - POST
/v1/boxes/{boxId}/uploadsAbrir sessão de upload grande (até 50 GB, partes de 32 MB) - GET
/v1/boxes/{boxId}/uploads/{uploadId}Ver sessão de upload (partes recebidas) - DELETE
/v1/boxes/{boxId}/uploads/{uploadId}Cancelar sessão de upload - POST
/v1/boxes/{boxId}/uploads/{uploadId}/completeConcluir upload (confere o sha256 e move para o destino)
Acesso
Portas públicas, SSH, desktop, leases de atividade e logs.
- GET
/v1/boxes/{boxId}/portsPortas publicadas - POST
/v1/boxes/{boxId}/portsPublicar porta (HTTPS ou TCP com TLS/SNI na 443) - DELETE
/v1/boxes/{boxId}/ports/{port}Despublicar porta - PUT
/v1/boxes/{boxId}/activity-leases/{task}Manter a box acordada durante uma espera silenciosa - DELETE
/v1/boxes/{boxId}/activity-leases/{task}Liberar lease - GET
/v1/boxes/{boxId}/logsConsole de boot e últimas operações - POST
/v1/boxes/{boxId}/ssh-certificatesEmitir certificado SSH de vida curta - POST
/v1/boxes/{boxId}/desktop-sessionAbrir o desktop (noVNC) com token de sessão
Snapshots
Salvar e restaurar o estado das boxes.
- POST
/v1/boxes/{boxId}/restoreRestaurar um snapshot no lugar - POST
/v1/boxes/{boxId}/snapshotsSalvar snapshot da box - GET
/v1/snapshotsListar snapshots - GET
/v1/snapshots/{snapshotId}Ver snapshot - DELETE
/v1/snapshots/{snapshotId}Apagar snapshot - GET
/v1/snapshots/{snapshotId}/filesVer arquivos de um snapshot
Templates
Modelos de box (padrao, midia).
- GET
/v1/templatesListar templates e versões - GET
/v1/templates/{templateName}Ver template
Workspaces
Workspaces, pessoas, convites, uso, limite de gasto e plano.
- GET
/v1/orgsWorkspaces acessíveis - POST
/v1/orgsCriar workspace de time - GET
/v1/orgs/{orgId}Ver workspace - PATCH
/v1/orgs/{orgId}Renomear workspace - GET
/v1/orgs/{orgId}/membersPessoas do workspace - PATCH
/v1/orgs/{orgId}/members/{userId}Mudar papel - DELETE
/v1/orgs/{orgId}/members/{userId}Remover pessoa - GET
/v1/orgs/{orgId}/invitesConvites pendentes - POST
/v1/orgs/{orgId}/invitesConvidar pessoa por e-mail - DELETE
/v1/orgs/{orgId}/invites/{inviteId}Cancelar convite - POST
/v1/invites/{inviteToken}/acceptAceitar convite (pessoa logada) - GET
/v1/orgs/{orgId}/usageUso e custo do mês (centavos de real) - GET
/v1/orgs/{orgId}/spend-limitLimite de gasto mensal - PUT
/v1/orgs/{orgId}/spend-limitDefinir limite de gasto mensal - GET
/v1/orgs/{orgId}/billingPlano, forma de pagamento e dados da nota (sem detalhes do provedor) - GET
/v1/orgs/{orgId}/invoicesFaturas e notas
Secrets
Chaves de outros serviços, injetadas pelo proxy. O valor nunca volta.
- PUT
/v1/boxes/{boxId}/secretsEscolher quais Secrets a box pode usar - GET
/v1/orgs/{orgId}/secretsListar Secrets (só metadados) - GET
/v1/orgs/{orgId}/secrets/{secretName}Ver Secret (só metadados) - PUT
/v1/orgs/{orgId}/secrets/{secretName}Criar ou trocar Secret (valor só de escrita) - DELETE
/v1/orgs/{orgId}/secrets/{secretName}Apagar Secret
Eventos
Stream de eventos em tempo real para o painel.
- GET
/v1/eventsEventos em tempo real (Server-Sent Events)