Chaves de API
A página de chaves de API de um produto de IA, como nos consoles da OpenAI e da Anthropic. Crie chaves com permissões restritas e uma expiração, veja o segredo uma única vez com uma cópia que confirma, revogue com desfazer, renomeie no próprio lugar, faça a rotação com um período de tolerância e veja o uso por chave.
OpenAI, Anthropic e Vercel têm todas a mesma página de chaves de API: uma lista de chaves das quais você só vê o final, um diálogo para criar uma nova e uma única chance de copiar o segredo. O API keys é essa página como um único bloco que se encaixa em qualquer seção de Configurações. Ele cuida das partes que dão errado: segredos perdidos porque um diálogo foi fechado, chaves revogadas por engano e listas que pulam quando algo sai.
Cada linha mostra o nome da chave, o segredo mascarado como hx_live_…a3F9, suas permissões, o projeto, quando foi criada e quando foi usada pela última vez, ou Never used. Chaves que expiram em até uma semana recebem um badge de aviso, e as expiradas informam isso. Passe usage e um pequeno gráfico de requisições diárias aparece ao lado da chave em telas mais largas.
Create key abre um diálogo com nome, projeto, permissões (todas, somente leitura ou restritas aos recursos que você marcar) e uma expiração de 30 dias, 90 dias, nunca ou uma data à sua escolha. Em seguida, o mesmo diálogo se transforma na revelação: a chave completa em uma caixa monoespaçada, um botão Copy que confirma com um check e uma caixa para marcar antes de Done funcionar. Se tentar fechá-lo antes de copiar, ele permanece aberto com um aviso e um botão Close anyway. A aba também pergunta antes de fechar.
Revogar pergunta antes, citando a chave. Depois a linha se recolhe e um toast oferece Undo por cinco segundos, e onRevoke só roda quando essa janela se fecha, então o Undo não exige nada do seu servidor. Sair da página ou criar outra chave envia imediatamente quaisquer revogações em espera. Rotate key troca por um novo segredo e pode manter o antigo funcionando por uma hora, um dia ou uma semana. Renomeie no próprio lugar com F2 ou duplo clique, Enter para salvar e Escape para cancelar.
Adicione o registro Pro ao components.json
components.json Adicione seu token
Crie um token na sua página de conta e coloque-o em
.env.localcomoHEXTAUI_PRO_TOKEN.Adicione o bloco
pnpm dlx shadcn@latest add @hextaui-pro/api-keys
Conecte à sua API
ApiKeySettings mostra as chaves que você passa e chama você para criá-las, revogá-las e renomeá-las. Lance um erro em qualquer callback e a pessoa vê o motivo, com o que digitou preservado. Mostre ApiKeySettingsSkeleton enquanto a lista carrega.
Crie chaves no seu servidor
generateApiKey usa crypto.getRandomValues, então funciona no Node, em runtimes edge e em Workers. Armazene um hash e os quatro últimos caracteres, e envie o segredo de volta uma única vez.
Rotação, escopos próprios e sem desfazer
Passe onRotate para adicionar Rotate key com um período de tolerância para o segredo antigo. Defina undoTimeout como 0 para revogar no momento em que for confirmado e passe resources, prefix e snippet para combinar com a sua API.
Anatomia
As partes que você compõe, de fora para dentro.
| Parte | Descrição |
|---|---|
ApiKeySettings | A lista, seu cabeçalho com Create key, a nota de limite, o estado vazio e todos os diálogos. |
ApiKeySettingsSkeleton | Um placeholder de carregamento com o formato da lista, para a prop skeleton do SettingsSection. |
generateApiKey | Cria uma chave aleatória com um prefixo a partir de crypto.getRandomValues. |
keyHint | Os últimos caracteres de um segredo, para armazenar e exibir como a chave mascarada. |
ApiKeySettings
Também aceita todas as props de div.
| Prop | Tipo | Padrão |
|---|---|---|
keys{ id, name, hint, permission, resources?, project?, createdAt, lastUsedAt?, expiresAt?, usage? }. As datas aceitam um Date, uma string ISO ou um timestamp. usage são as requisições por dia, da mais antiga para a mais recente. | ApiKey[] | – |
onCreateCrie a chave e devolva-a com seu segredo, exibido uma única vez. Lance um erro para mostrar a mensagem no diálogo. | (input: ApiKeyInput) => Promise<{ key, secret }> | – |
onRevokeRevoga a chave. Executa após a janela de desfazer. Se lançar um erro, a chave volta com Try again. | (key) => void | Promise<void> | – |
onRenameAdiciona Rename, F2 e duplo clique. O novo nome aparece de imediato e volta ao anterior se isto lançar um erro. | (key, name) => void | Promise<void> | – |
onRotateAdiciona Rotate key. expireOldIn é quantas horas o segredo antigo continua funcionando, 0 para encerrar de imediato. | (key, { expireOldIn }) => Promise<{ key, secret }> | – |
limitO máximo de chaves permitido. No limite, Create key é desativado e a nota explica o motivo. | number | – |
resourcesO que uma chave restrita pode ter permissão para usar. O padrão é models, responses, embeddings, files, agents e usage. | { value, label, description? }[] | – |
projectsAdiciona um seletor de Project ao diálogo de criação e mostra o projeto em cada chave. | { value, label }[] | – |
prefixExibido antes da dica nas chaves mascaradas, a menos que uma chave tenha seu próprio prefixo. | string | "hx_live_" |
snippetO comando exibido no estado vazio, com um botão Copy. | string | – |
undoTimeoutPor quanto tempo o Undo é oferecido após revogar, em ms. 0 revoga assim que é confirmado. | number | 5000 |
expiringSoonDias antes da expiração em que uma chave recebe o badge de aviso. | number | 7 |
nowFixa o horário usado nas datas relativas, para testes e screenshots. | Date | – |
| Prop | Tipo | Padrão |
|---|---|---|
rowsQuantas chaves de placeholder mostrar. | number | 3 |
generateApiKey
Retorna o prefixo mais letras e dígitos aleatórios.
| Prop | Tipo | Padrão |
|---|---|---|
prefixColocado no início da chave. | string | "hx_live_" |
lengthCaracteres aleatórios após o prefixo, de 8 a 256. | number | 40 |
| Tecla | Ação |
|---|---|
| F2 | Renomeia a chave cuja linha tem o foco. |
| Enter | Ao renomear, salva o nome. No diálogo de criação, cria a chave. |
| Escape | Ao renomear, mantém o nome antigo. Na revelação, avisa uma vez se a chave não foi copiada. |
| Tab | Percorre as ações de cada chave, depois os campos e botões do diálogo. |
- Quando uma chave é criada, o foco vai para Copy e uma mensagem de status diz para copiá-la agora, pois ela não será exibida de novo.
- As confirmações citam a chave e seu segredo mascarado, e o foco começa em Cancel.
- Após revogar, o foco vai para a próxima chave, ou a anterior, ou Create key. Após Undo, volta para a chave restaurada. Após renomear, volta para as ações da chave.
- Os badges de restrito citam seus recursos, o gráfico de uso é lido como um total e as renomeações e restaurações são anunciadas.
- Com movimento reduzido, as linhas aparecem e saem sem se recolher.
Construído com
Os componentes gratuitos do HextaUI de que API keys é feito. Cada um é instalado separadamente.
Código
4 arquivos, adicionados a components/blocks/api-keys.