Pular para o conteúdo principal
DevTools by Decussi
  • Ferramentas
  • Dados
  • Segurança
  • Rede
  • Texto
  • Data
  • Web
  • Dev
  • SEO
  • Brasil
Ferramentas
DevTools

Ferramentas para desenvolvedores, em português. Sem cadastro e sem instalação.

Criado e mantido por Decussi

Ferramentas

  • Todas as ferramentas
  • Dados
  • Segurança
  • Rede
  • Texto
  • Data
  • Web
  • Dev
  • SEO
  • Brasil

Referência

  • Consulta rápida
  • Guias
  • Códigos HTTP
  • Cron
  • Checagens de SEO

Desenvolvedores

  • API e devs
  • llms.txt
  • ai.txt
  • Sitemap

Newsletter

Receba novidades e novas ferramentas no seu email.

Sugira uma ferramenta

Tem uma ideia? Envie sua sugestão.

  1. Início
  2. /Desenvolvedores

API e portal do desenvolvedor

33 endpoints documentados, 114 ferramentas no catálogo e todas as páginas disponíveis em Markdown. Sem chave de API, sem cadastro e sem OAuth — o que limita o uso é a cota por IP.

DescobertaComeçandoAutenticaçãoLimitesErrosMarkdownEndpoints

Descoberta

Tudo o que um cliente automatizado precisa ler antes da primeira chamada está em arquivo próprio, na raiz do site.

  • /openapi.jsonTodos os endpoints, parâmetros, respostas e erros em JSON. Também em /openapi.yaml.
  • /llms.txtMapa do site para modelos de linguagem, com quando usar cada área.
  • /AGENTS.mdInstruções operacionais para agentes: quando chamar, como chamar e o que não fazer.
  • /api/healthResposta mínima para checar disponibilidade e versão do catálogo.
  • /ai.txtPermissões de uso do conteúdo por sistemas de IA e como atribuir.
  • /sitemap.xmlTodas as URLs indexáveis do site.
  • /.well-known/security.txtComo relatar uma vulnerabilidade.

Começando em três chamadas

# 1. o serviço está de pé?
curl -s https://dev-tools.decussi.com/api/health

# 2. qual ferramenta resolve isto?
curl -s "https://dev-tools.decussi.com/api/tools?q=cpf&limit=3"

# 3. o conteúdo da página, em Markdown
curl -s -H "Accept: text/markdown" https://dev-tools.decussi.com/tools/br/validador-cpf

A base é https://dev-tools.decussi.com. Não há ambiente de sandbox separado, e ele não faria diferença: nenhum endpoint cobra, cria conta ou altera dados de terceiros. Para testar sem efeito colateral use example.com nas consultas de rede e SEO, 00000000000191 no CNPJ e 01001000 no CEP. Links de compartilhamento e URLs de webhook expiram sozinhos.

Autenticação

Os endpoints de leitura são abertos. Os que escrevem — compartilhamento, webhook, registro de uso — e os que consultam serviços externos em nome do site exigem um token CSRF, porque são os mesmos endpoints que a interface usa.

  1. 1Peça o token — GET /api/csrf devolve `{ "token": "…" }` e grava o cookie `csrf_token`.
  2. 2Guarde o cookie — O cookie tem de voltar na requisição seguinte — em curl, use `-c` para gravar e `-b` para reenviar.
  3. 3Repita o valor no cabeçalho — Envie o mesmo token em `x-csrf-token` (ou no campo `csrfToken` do corpo JSON).
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/infra/dns \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"domain":"example.com"}'

Limites de uso

EscopoLimite por IP
Leitura (catálogo, Markdown, compartilhamentos, webhook)60 requisições por minuto
Estatísticas e registro de uso30 requisições por minuto
Criação (compartilhamento, webhook)20 requisições por minuto
Consultas externas (DNS, SSL, WHOIS, SEO, CEP, CNPJ)15 requisições por minuto
Formulários (newsletter, sugestões)5 requisições por minuto

Toda resposta da API traz os cabeçalhos de limite:

  • X-RateLimit-Limit — Teto de requisições da janela.
  • X-RateLimit-Remaining — Quantas ainda cabem na janela atual.
  • X-RateLimit-Reset — Quando a janela zera, em epoch de segundos.
  • RateLimit-Policy — Política no formato do rascunho da IETF, ex.: 60;w=60.
  • Retry-After — Segundos a esperar. Só aparece na resposta 429.

Erros

Todo erro sai em JSON, com o mesmo envelope — inclusive 404 e 405. O campo code é estável e serve para decidir o que fazer; hint diz como corrigir.

{
  "error": "Domínio inválido",
  "code": "invalid_domain",
  "message": "Domínio inválido",
  "hint": "Envie só o domínio, como example.com — sem protocolo, porta ou caminho.",
  "status": 400,
  "documentation_url": "https://dev-tools.decussi.com/developers#erros"
}
codeHTTPComo resolver
invalid_request400Envie um corpo JSON válido com os campos descritos em /openapi.json.
invalid_parameter400Confira nome, tipo e formato dos campos enviados em /openapi.json.
invalid_domain400Envie só o domínio, como example.com — sem protocolo, porta ou caminho.
invalid_url400Envie uma URL http(s) pública e completa, como https://example.com/pagina.
invalid_host400Use um domínio ou um IP público; endereços privados são recusados.
invalid_port400Envie um número inteiro entre 1 e 65535.
invalid_ip400Envie um IPv4 ou IPv6 público, sem máscara nem porta.
invalid_email400Envie um endereço completo, como pessoa@example.com.
invalid_document400Confira a quantidade de dígitos e os dígitos verificadores antes de reenviar.
invalid_id400Use o identificador devolvido na criação do recurso, sem alterações.
invalid_method400Use um dos métodos listados para o endpoint em /openapi.json.
blocked_host400Endereços internos, localhost e IPs privados são bloqueados por segurança.
unauthorized401Este endpoint é interno e exige o segredo configurado no servidor.
csrf_token_invalid403Chame GET /api/csrf, guarde o cookie csrf_token e reenvie o valor no cabeçalho x-csrf-token.
not_found404Confira o identificador; links compartilhados expiram e somem depois do prazo.
endpoint_not_found404A lista completa de endpoints está em /openapi.json.
method_not_allowed405Use um dos métodos do cabeçalho Allow desta resposta.
not_acceptable406Peça text/html ou text/markdown no cabeçalho Accept.
conflict409Escolha outro identificador ou aguarde o recurso atual expirar.
payload_too_large413Reduza o conteúdo enviado; o limite de cada endpoint está em /openapi.json.
rate_limited429Espere os segundos indicados em Retry-After antes de repetir a requisição.
internal_error500Tente de novo em instantes; se persistir, relate em github.com/dudecussi.
upstream_error502A falha é do serviço consultado. Tente de novo em alguns minutos.
upstream_timeout504O serviço consultado demorou demais. Repita a requisição mais tarde.

Conteúdo em Markdown

Qualquer página pública responde em Markdown quando o pedido traz Accept: text/markdown, e a mesma página também está no sufixo .md. As respostas trazem Vary: Accept, então um cache intermediário nunca serve HTML a quem pediu Markdown. Um Accept que não aceita nem text/html nem text/markdown recebe 406 com a lista do que é possível servir.

curl -s -H "Accept: text/markdown" https://dev-tools.decussi.com/tools/json/json-viewer
curl -s https://dev-tools.decussi.com/tools/json/json-viewer.md
curl -s "https://dev-tools.decussi.com/api/md?path=/guias/base64-em-javascript"

Endpoints

A mesma lista, legível por máquina, está em /openapi.json e /openapi.yaml.

Catálogo

GET

/api/health

sem autenticação · 60/min

Devolve o estado da aplicação, a quantidade de ferramentas publicadas e os endereços dos arquivos de descoberta. Não depende do banco de dados.

curl -s https://dev-tools.decussi.com/api/health
Exemplo de resposta
{
  "status": "ok",
  "service": "DevTools by Decussi",
  "tools": 109,
  "openapi": "https://dev-tools.decussi.com/openapi.json"
}

Erros: rate_limited

GET

/api/tools

sem autenticação · 60/min

Catálogo completo em JSON: slug, nome, descrição, grupo, URL e se a ferramenta processa os dados no navegador. É o endpoint para descobrir qual página resolve um problema antes de mandar alguém para o site.

Parâmetros

  • q (query · string · opcional) — Busca por nome, descrição ou palavra-chave da ferramenta.
  • group (query · string · opcional · um de: json, security, network, text, date, web, dev, seo, br) — Filtra por grupo.
  • limit (query · integer · opcional · mín. 1 · máx. 200 · padrão 200) — Máximo de itens devolvidos (1 a 200).
curl -s "https://dev-tools.decussi.com/api/tools?q=cpf&limit=5"
Exemplo de resposta
{
  "total": 2,
  "tools": [
    {
      "slug": "validador-cpf",
      "name": "Validador de CPF",
      "description": "Valide CPF com dígito verificador",
      "group": "br",
      "category": "Brasil",
      "url": "https://dev-tools.decussi.com/tools/br/validador-cpf",
      "markdown_url": "https://dev-tools.decussi.com/tools/br/validador-cpf.md",
      "runs_in_browser": true
    }
  ]
}

Erros: invalid_parameter, rate_limited

GET

/api/tools/{slug}

sem autenticação · 60/min

Traz a ficha da ferramenta: o que é, como usar, quando usar, perguntas frequentes e ferramentas relacionadas — o mesmo conteúdo da página, em JSON.

Parâmetros

  • slug (path · string · obrigatório) — Identificador da ferramenta, como aparece na URL.
curl -s https://dev-tools.decussi.com/api/tools/json-viewer

Erros: not_found, rate_limited

GET

/api/openapi.json

sem autenticação · 60/min

O mesmo documento publicado em /openapi.json, servido também sob /api para as ferramentas que procuram a especificação ao lado dos endpoints.

curl -s https://dev-tools.decussi.com/api/openapi.json
GET

/api/openapi.yaml

sem autenticação · 60/min

Mesma especificação em YAML. Também disponível em /openapi.yaml.

curl -s https://dev-tools.decussi.com/api/openapi.yaml

Conteúdo

GET

/api/md

sem autenticação · 60/min

Devolve qualquer página pública do site em Markdown, com um cabeçalho YAML de título, descrição e URL canônica. O mesmo conteúdo sai de qualquer URL do site com `Accept: text/markdown` ou com o sufixo `.md`.

Parâmetros

  • path (query · string · obrigatório) — Caminho da página no site, começando com barra.
curl -s "https://dev-tools.decussi.com/api/md?path=/tools/json/json-viewer"

# a mesma resposta, negociada na URL da própria página:
curl -s -H "Accept: text/markdown" https://dev-tools.decussi.com/tools/json/json-viewer

Erros: invalid_parameter, not_found, rate_limited

Rede

POST

/api/infra/dns

token CSRF · 15/min

Consulta A, AAAA, MX, TXT, NS, CNAME e SOA em uma chamada.

Corpo JSON

  • domain (string · obrigatório) — Domínio a consultar. Protocolo e caminho são ignorados.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/infra/dns \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"domain":"example.com"}'
Exemplo de resposta
{
  "domain": "example.com",
  "records": {
    "A": [
      "93.184.216.34"
    ],
    "MX": [],
    "TXT": [
      [
        "v=spf1 -all"
      ]
    ]
  }
}

Erros: invalid_domain, csrf_token_invalid, rate_limited, internal_error

POST

/api/infra/ssl

token CSRF · 15/min

Emissor, validade, dias restantes e nomes alternativos do certificado.

Corpo JSON

  • domain (string · obrigatório) — Domínio a verificar.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/infra/ssl \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"domain":"example.com"}'

Erros: invalid_domain, csrf_token_invalid, rate_limited, internal_error

POST

/api/infra/whois

token CSRF · 15/min

Registrante, datas de criação e expiração e servidores de nome.

Corpo JSON

  • domain (string · obrigatório) — Domínio a consultar.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/infra/whois \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"domain":"example.com"}'

Erros: invalid_domain, csrf_token_invalid, rate_limited, internal_error

POST

/api/infra/headers

token CSRF · 15/min

Faz a requisição e devolve os cabeçalhos da resposta. Endereços internos e IPs privados são recusados.

Corpo JSON

  • url (string · obrigatório) — URL http(s) pública.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/infra/headers \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"url":"https://example.com"}'

Erros: invalid_url, blocked_host, csrf_token_invalid, rate_limited, internal_error

POST

/api/infra/http-client

token CSRF · 15/min

Executa uma requisição HTTP a partir do servidor e devolve status, tempo, cabeçalhos e corpo. Só endereços públicos; o destino é revalidado depois de cada redirecionamento.

Corpo JSON

  • url (string · obrigatório) — URL de destino.
  • method (string · opcional · um de: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS · padrão "GET") — Método HTTP.
  • headers (object · opcional) — Cabeçalhos extras, como pares nome/valor.
  • body (string · opcional) — Corpo da requisição, quando o método aceita.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/infra/http-client \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"url":"https://example.com","method":"GET"}'

Erros: invalid_method, blocked_host, csrf_token_invalid, rate_limited, upstream_timeout, upstream_error

POST

/api/infra/port

token CSRF · 15/min

Abre uma conexão TCP e informa se a porta responde, com o tempo gasto.

Corpo JSON

  • host (string · obrigatório) — Domínio ou IP público.
  • port (integer · obrigatório · mín. 1 · máx. 65535) — Porta de 1 a 65535.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/infra/port \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"host":"example.com","port":443}'

Erros: invalid_host, invalid_port, blocked_host, csrf_token_invalid, rate_limited, internal_error

POST

/api/infra/ping

token CSRF · 15/min

Mede o tempo de resposta de uma conexão TCP, em várias tentativas.

Corpo JSON

  • host (string · obrigatório) — Domínio ou IP público.
  • port (integer · opcional · mín. 1 · máx. 65535 · padrão 443) — Porta usada na medição.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/infra/ping \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"host":"example.com","port":443}'

Erros: invalid_host, invalid_port, blocked_host, csrf_token_invalid, rate_limited, internal_error

POST

/api/infra/ip

token CSRF · 15/min

País, região, cidade, provedor e ASN de um endereço IP público.

Corpo JSON

  • ip (string · obrigatório) — IPv4 ou IPv6 público.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/infra/ip \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"ip":"8.8.8.8"}'

Erros: invalid_ip, not_found, csrf_token_invalid, rate_limited, internal_error

POST

/api/infra/email

token CSRF · 15/min

Diagnóstico dos registros que decidem a entregabilidade de e-mail.

Corpo JSON

  • domain (string · obrigatório) — Domínio a diagnosticar.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/infra/email \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"domain":"example.com"}'

Erros: invalid_domain, csrf_token_invalid, rate_limited, internal_error

SEO

POST

/api/seo/meta

token CSRF · 15/min

Title, description, canonical, Open Graph e Twitter Cards da URL informada.

Corpo JSON

  • url (string · obrigatório) — URL da página.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/seo/meta \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"url":"https://example.com"}'

Erros: invalid_url, blocked_host, csrf_token_invalid, rate_limited, internal_error

POST

/api/seo/robots

token CSRF · 15/min

Busca o robots.txt do domínio e separa as regras por user-agent.

Corpo JSON

  • url (string · obrigatório) — URL do site ou do próprio robots.txt.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/seo/robots \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"url":"https://example.com"}'

Erros: invalid_url, blocked_host, csrf_token_invalid, rate_limited, internal_error

POST

/api/seo/sitemap

token CSRF · 15/min

Confere a estrutura do sitemap, conta as URLs e aponta problemas.

Corpo JSON

  • url (string · obrigatório) — URL do sitemap.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/seo/sitemap \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"url":"https://example.com/sitemap.xml"}'

Erros: invalid_url, blocked_host, csrf_token_invalid, rate_limited, internal_error

POST

/api/seo/validate

token CSRF · 15/min

Analisa title, meta, headings, imagens, links, dados estruturados e desempenho declarado da página.

Corpo JSON

  • url (string · obrigatório) — URL da página a auditar.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/seo/validate \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"url":"https://example.com"}'

Erros: invalid_url, blocked_host, csrf_token_invalid, rate_limited, internal_error

POST

/api/seo/redirects

token CSRF · 15/min

Segue os redirecionamentos salto a salto, sem deixar o cliente resolver, e sonda as quatro variantes de www e protocolo para revelar conteúdo servido em mais de um endereço.

Corpo JSON

  • url (string · obrigatório) — URL de partida da cadeia.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/seo/redirects \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"url":"https://example.com"}'

Erros: invalid_url, csrf_token_invalid, rate_limited, internal_error

POST

/api/seo/densidade

token CSRF · 15/min

Extrai o texto visível da página e devolve as palavras e as expressões de duas e três palavras mais frequentes, com a densidade de cada uma.

Corpo JSON

  • url (string · obrigatório) — URL da página a analisar.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/seo/densidade \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"url":"https://example.com"}'

Erros: invalid_url, csrf_token_invalid, rate_limited, upstream_error, internal_error

Brasil

POST

/api/br/cep

token CSRF · 15/min

Consulta o ViaCEP e devolve logradouro, bairro, cidade, UF, IBGE e DDD.

Corpo JSON

  • cep (string · obrigatório) — CEP com 8 dígitos. Pontuação é ignorada.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/br/cep \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"cep":"01001000"}'
Exemplo de resposta
{
  "cep": "01001-000",
  "logradouro": "Praça da Sé",
  "bairro": "Sé",
  "cidade": "São Paulo",
  "uf": "SP"
}

Erros: invalid_document, not_found, csrf_token_invalid, rate_limited, upstream_error, upstream_timeout

POST

/api/br/cnpj

token CSRF · 15/min

Valida os dígitos verificadores antes de consultar a BrasilAPI, e devolve razão social, situação, CNAE, endereço e sócios.

Corpo JSON

  • cnpj (string · obrigatório) — CNPJ com 14 dígitos. Pontuação é ignorada.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/br/cnpj \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"cnpj":"00000000000191"}'

Erros: invalid_document, not_found, csrf_token_invalid, rate_limited, upstream_error, upstream_timeout

Compartilhamento

POST

/api/share

token CSRF · 20/min

Guarda um texto e devolve uma URL curta que expira sozinha. Use para entregar um log, um trecho de código ou um resultado sem anexar arquivo.

Corpo JSON

  • content (string · obrigatório · até 500.000 caracteres) — Texto a compartilhar.
  • expiresInHours (integer · opcional · mín. 1 · máx. 168 · padrão 2) — Validade em horas.
  • slug (string · opcional) — Identificador personalizado: letras, números, - e _ (até 16).
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/share \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"content":"log da build","expiresInHours":2}'
Exemplo de resposta
{
  "id": "a1b2c3",
  "url": "https://dev-tools.decussi.com/s/a1b2c3",
  "expiresAt": "2026-09-04T21:00:00.000Z"
}

Erros: invalid_parameter, invalid_id, conflict, payload_too_large, csrf_token_invalid, rate_limited, internal_error

GET

/api/share/{id}

sem autenticação · 60/min

Devolve o conteúdo enquanto o link estiver válido. Com `?format=plain` (ou `Accept: text/plain`) a resposta é o texto puro, sem envelope.

Parâmetros

  • id (path · string · obrigatório) — Identificador do link.
  • format (query · string · opcional · um de: plain) — Use `plain` para receber só o texto.
curl -s https://dev-tools.decussi.com/api/share/a1b2c3

Erros: invalid_id, not_found, rate_limited, internal_error

POST

/api/share/encrypted

token CSRF · 20/min

Guarda um conteúdo já criptografado no navegador. O servidor nunca vê a senha nem o texto claro; a chave viaja no fragmento da URL.

Corpo JSON

  • encryptedContent (string · obrigatório · até 500.000 caracteres) — Conteúdo cifrado no cliente.
  • expiresInHours (integer · opcional · mín. 1 · máx. 168 · padrão 2) — Validade em horas.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/share/encrypted \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"encryptedContent":"U2FsdGVkX1…"}'

Erros: invalid_parameter, payload_too_large, csrf_token_invalid, rate_limited, internal_error

GET

/api/share/encrypted/{id}

sem autenticação · 60/min

Devolve o conteúdo cifrado. A descriptografia acontece no cliente.

Parâmetros

  • id (path · string · obrigatório) — Identificador do link.
curl -s https://dev-tools.decussi.com/api/share/encrypted/a1b2c3

Erros: invalid_id, not_found, rate_limited, internal_error

Webhook

POST

/api/webhook

token CSRF · 20/min

Devolve uma URL que aceita qualquer método e grava as requisições recebidas por 24 horas.

TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/webhook -H "x-csrf-token: $TOKEN"
Exemplo de resposta
{
  "id": "Ab3xY",
  "expiresAt": "2026-09-05T18:00:00.000Z"
}

Erros: csrf_token_invalid, rate_limited, internal_error

GET

/api/webhook/{id}/requests

sem autenticação · 60/min

Método, cabeçalhos, query, corpo e horário de cada requisição recebida.

Parâmetros

  • id (path · string · obrigatório) — Identificador da URL de webhook.
curl -s https://dev-tools.decussi.com/api/webhook/Ab3xY/requests

Erros: invalid_id, not_found, rate_limited

DELETE

/api/webhook/{id}/requests

token CSRF · 20/min

Esvazia a lista de requisições da URL de webhook, sem apagar a URL.

Parâmetros

  • id (path · string · obrigatório) — Identificador da URL de webhook.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X DELETE https://dev-tools.decussi.com/api/webhook/Ab3xY/requests -H "x-csrf-token: $TOKEN"

Erros: invalid_id, csrf_token_invalid, rate_limited

Sessão

GET

/api/csrf

sem autenticação · 60/min

Devolve um token e grava o cookie `csrf_token`. Os endpoints marcados com autenticação `csrf` exigem os dois: o cookie na requisição e o mesmo valor no cabeçalho `x-csrf-token`.

curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf
Exemplo de resposta
{
  "token": "3f2a…"
}

Uso

GET

/api/stats

sem autenticação · 30/min

Quantas vezes cada ferramenta foi usada, para ordenar recomendações.

curl -s https://dev-tools.decussi.com/api/stats
Exemplo de resposta
[
  {
    "tool_slug": "json-viewer",
    "usage_count": 1234
  }
]

Erros: rate_limited, internal_error

POST

/api/usage

token CSRF · 30/min

Incrementa o contador exibido na página inicial. Não guarda nada do conteúdo.

Corpo JSON

  • toolSlug (string · obrigatório) — Slug da ferramenta usada.
TOKEN=$(curl -sc /tmp/dt.cookie https://dev-tools.decussi.com/api/csrf | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -sb /tmp/dt.cookie -X POST https://dev-tools.decussi.com/api/usage \
  -H "Content-Type: application/json" \
  -H "x-csrf-token: $TOKEN" \
  -d '{"toolSlug":"json-viewer"}'

Erros: invalid_parameter, csrf_token_invalid, rate_limited, internal_error

É um agente lendo isto?

As instruções operacionais — quando este site é a ferramenta certa, como chamar e o que não tentar — estão em um arquivo próprio.

AGENTS.mdllms.txtCatálogo de ferramentas