Uma chave, uma mensagem.

A chave de API do PushDrop manda texto para um aparelho, e nada além disso. Quem tem a chave não lê o seu histórico, não descobre os seus outros aparelhos e não entra na sua conta.

Por que ela pode ser entregue

Ao contrário da maioria das chaves de API, esta é feita para circular. Um comando do Raycast, um cron, um amigo que só precisa te cutucar — todos ganham a mesma coisa: escrever uma mensagem, uma vez, para o aparelho que você escolheu.

O servidor guarda só o SHA-256 da chave. Ela aparece em claro uma única vez, na hora em que você a cria. Perdeu, crie outra — nem você nem o servidor conseguem lê-la de volta.

Revogar é imediato: a chave some do banco e a requisição seguinte responde 401. O que já chegou continua no histórico, assinado com o nome que você deu a ela.

Criar uma chave

No app de macOS ou no Android: Ajustes ▸ Chaves de API ▸ Nova chave. Dê um nome (Raycast, cron do backup, Ana) e escolha o aparelho de destino. O nome vira o remetente que aparece na notificação, então uma chave por pessoa ou por ferramenta vale mais que uma chave para tudo: revogar uma não corta as outras.

Enviar

POSThttps://pushdrop.brorlandi.xyz/v1/drop

curl -X POST https://pushdrop.brorlandi.xyz/v1/drop \
  -H "authorization: Bearer pd_SUACHAVE" \
  -H "content-type: application/json" \
  -d '{"body":"o build terminou"}'

Resposta 201:

{ "delivered": true, "deviceName": "Pixel 8" }

A chave vai só no header. Não existe versão com a chave no caminho da URL, e isso é de propósito: ali ela acabaria no log de acesso do servidor, no do proxy na frente dele e no histórico do shell de quem enviou.

Quem classifica o conteúdo é o servidor. Um corpo que seja uma URL sozinha vira um push de link — no Android ele abre no navegador; qualquer outra coisa é texto.

Conferir a chave

GEThttps://pushdrop.brorlandi.xyz/v1/drop

Diz para onde a chave aponta, sem enviar nada. Serve para o seu cliente mostrar o destino antes de mandar, em vez de a pessoa descobrir que colou a chave errada pelo silêncio do celular.

{ "deviceName": "Pixel 8", "label": "Raycast" }

Limites

O quêQuantoPor quê
Corpo 8 KB Cobre uma mensagem longa sem a porta virar canal de upload.
Envios 20/min por chave Por chave e não por IP: ela é feita para circular, então cinco pessoas com a mesma chave em cinco redes são cinco IPs e um celular só.
Chaves 10 por aparelho Uma lista que cabe na tela é uma lista que você consegue auditar.

Erros

Todo erro sai no mesmo formato:

{ "error": { "code": "unauthorized", "message": "Chave de API ausente ou inválida." } }
CódigoQuando
401Chave ausente, malformada ou revogada. Os três respondem igual, de propósito.
400Corpo vazio ou acima do limite.
429Passou do teto de envios. Espere um minuto.

Pronto para usar

A extensão do Raycast já faz tudo isso: você cola a chave uma vez nas preferências e manda pelo teclado. O código está em raycast/.