API REST · v1

Integre cálculos estruturais com credenciais de menor privilégio.

A API usa chaves vinculadas à sua conta. Elas compartilham a carteira de créditos e nunca acessam projetos de outro proprietário.

01 · Início rápido

Da criação à primeira chamada

  1. 1

    Crie

    Entre na conta, escolha um nome e conceda somente os escopos necessários.

  2. 2

    Copie uma vez

    A chave completa aparece só na criação. Salve-a imediatamente em um cofre.

  3. 3

    Envie como Bearer

    Use o header Authorization em HTTPS; nunca coloque a chave na URL.

export STRUCTURALTECH_API_KEY="cole-a-chave-no-seu-cofre"

curl --request POST \
  --url "https://structuraltec.com.br/v1/geometry/rectangular-section" \
  --header "Authorization: Bearer $STRUCTURALTECH_API_KEY" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $(uuidgen)" \
  --data '{"b":14,"h":40}'

O exemplo usa uma variável de ambiente fictícia e nunca contém uma chave real. O endpoint de geometria exige compute:write, consome um crédito e aceita Idempotency-Key para deduplicar retries.

02 · Autenticação

Um único header, sem alias

Envie Authorization: Bearer <chave>. O header x-api-key não é aceito. Chaves de teste começam com stk_test_; chaves de produção, com stk_live_. Uma chave usada no ambiente errado falha com 401.

Criação, listagem e revogação exigem a sessão do navegador. Uma API key nunca pode criar outra chave, alterar billing, aceitar termos ou excluir a conta.

const response = await fetch(
  'https://structuraltec.com.br/v1/geometry/rectangular-section',
  {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${process.env.STRUCTURALTECH_API_KEY}`,
      'Content-Type': 'application/json',
      // Uma chave por pedido. Para calcular com outros parâmetros, gere outra.
      'Idempotency-Key': crypto.randomUUID(),
    },
    body: JSON.stringify({ b: 14, h: 40 }),
  },
);

if (!response.ok) throw new Error(`API respondeu ${response.status}`);
const result = await response.json();

03 · Escopos

Conceda somente o necessário

EscopoPermissão
compute:readConsultar catálogos e referências sem consumo de crédito.
compute:writeExecutar cálculos estruturais; rotas faturáveis consomem créditos.
projects:readListar e consultar somente os projetos da conta proprietária.
projects:writeCriar, alterar e remover somente os projetos da conta proprietária.

04 · Ciclo de vida

Expiração, revogação e rotação sem downtime

Rotação

  1. 1. Crie uma chave nova com os mesmos escopos.
  2. 2. Atualize o cofre e a integração.
  3. 3. Valide chamadas com a chave nova.
  4. 4. Revogue a antiga.

Expiração e revogação

A expiração é opcional; sem data, a chave dura até a revogação. Revogar é imediato e irreversível. A conta aceita até cinco chaves ativas para permitir uma janela segura de rotação.

05 · Erros e limites

Trate status HTTP e faça backoff

400

Payload inválido, expiração no passado ou falha de regra da operação.

401

Chave ausente, inválida, expirada, revogada, de outro ambiente ou conta em exclusão.

403

Escopo ou créditos insuficientes, senha inicial pendente ou nova versão dos termos ainda não aceita.

404

Recurso não encontrado ou chave ativa própria não encontrada para revogação.

409

A conta já possui o limite de cinco chaves ativas.

429

Limite de requisições atingido; aguarde e tente novamente com backoff.

O padrão atual por chave é 60 requisições por minuto e 10 por 10 segundos. Durante a fase de pré-lançamento os contadores ainda são locais por processo; o limite não deve ser tratado como SLA contratual até a adoção de armazenamento distribuído.

06 · Segurança

Práticas obrigatórias no cliente

  • Armazene a chave em um secret manager ou variável protegida.
  • Nunca versione, registre em logs ou envie a chave em query string.
  • Use HTTPS e defina timeouts nas chamadas.
  • Gere uma Idempotency-Key por pedido; mantenha-a só entre tentativas do mesmo pedido.
  • Revogue imediatamente uma chave suspeita de exposição.
  • Monitore último uso e remova credenciais abandonadas.

Se o proprietário precisar definir a senha inicial ou aceitar uma nova versão dos termos, as chaves ficam bloqueadas com 403 até a ação humana ser concluída no navegador.