Ir para o conteúdo
kosto kosto API v1
OpenAPI Voltar ao painel

Kosto API · v1

Documentação da API do Kosto:
autoridade de domínio, dentro das suas próprias ferramentas.

Consulte via HTTP a Authority Score que você vê no painel, os domínios de referência, a comparação lado a lado e a auditoria de spam. Toda resposta é JSON, os nomes dos campos são escritos em snake_case e cada endpoint abaixo vem com um exemplo funcional.

URL base
Endpoint
7
Limite por minuto
120
Formato
JSON
Autenticação
Chave de API

Authority Score

Pontuação de 0 a 100, rankings e os componentes que formam a pontuação. Um único domínio ou dez lado a lado.

Domínios de referência

Domínios que apontam links para um domínio, ordenados por pontuação; você define a menor pontuação.

Auditoria de spam

Pontuação de risco e motivos para sinais de abuso, como apostas, conteúdo adulto, farmacêuticos e réplicas.

  • Todos os endpoints ficam em /api/v1. A versão faz parte do endereço.
  • Requisições e respostas são JSON em UTF-8. As datas são escritas no formato ISO 8601 (UTC).
  • Definição legível por máquina: baixe o documento OpenAPI 3.1.

Primeiros passos

Início rápido

Três passos da chave à primeira resposta.

  1. 1

    Obtenha uma chave

    Crie uma chave abaixo. A chave só aparece no momento em que é criada; copie-a e guarde em um lugar seguro.

  2. 2

    Envie a primeira requisição

    Envie a chave no cabeçalho Authorization. O exemplo à direita já vem pronto na linguagem que você escolher; troque YOUR_API_KEY pela sua própria chave.

  3. 3

    Leia a resposta

    O campo authority_score é a pontuação de 0 a 100. Se found for false, o domínio não está no índice de links; isso não é um erro e é retornado 200. score_source informa o tipo de pontuação: data é baseada em dados, enquanto standard e calibrated são pontuações aproximadas.

Em cada endpoint, o painel Testar permite enviar a requisição direto do navegador. A chave fica apenas na memória desta aba, não é salva em lugar nenhum e nenhuma requisição é enviada até você pressionar o botão.

Primeiros passos

Autenticação

Todo endpoint, exceto /api/v1/openapi.json, exige uma chave de API. A chave começa com op_ e tem 35 caracteres no total. Use um dos dois cabeçalhos abaixo; os dois fazem o mesmo trabalho.

Cabeçalho HTTPFormato
AuthorizationBearer op_… (Bearer não diferencia maiúsculas de minúsculas)
X-API-Keyop_…

Protegendo a chave

  • O servidor armazena não a chave em si, mas o resumo SHA-256 dela. Se você perdê-la, gere uma nova chave e revogue a antiga.
  • Guarde a chave em uma variável de ambiente ou no cofre de segredos. Não a coloque em código-fonte, repositórios públicos nem em código executado no navegador.
  • Uma chave revogada recebe 403 key_revoked. Se a chave estiver ausente ou malformada, é retornado 401.
  • Nenhum cabeçalho CORS é enviado, então o código de navegador de outro site não consegue ler esta API (cross_site_forbidden). Scripts, linha de comando e código do lado do servidor funcionam sem problemas.
  • No modo conta, a chave pertence a uma conta e é contabilizada no plano dela; uma chave cuja conta esteja suspensa, ou que não esteja vinculada a nenhuma conta, recebe 403.

Primeiros passos

Limites de taxa e cotas

Há dois limites separados: o limite de requisições por minuto é igual para todas as chaves, enquanto as cotas mensais e diárias dependem do seu plano.

Limite de taxa: 120 requisições por minuto

Cada chave pode fazer 120 requisições em uma janela fixa de 60 segundos. A janela abre com a primeira requisição da chave, fecha 60 segundos depois e o contador é zerado. Requisições que não enviam uma chave válida são contadas em uma janela compartilhada por endereço de cliente. Requisições rejeitadas (como 401 ou 400) também contam na janela. Toda resposta de /api/v1 traz estes cabeçalhos:

Cabeçalho HTTPSignificado
X-RateLimit-LimitNúmero de requisições permitidas por janela (120).
X-RateLimit-RemainingNúmero de requisições restantes na janela atual.
X-RateLimit-ResetMomento em que a janela fecha, em segundos Unix.
Retry-AfterO número de segundos de espera nas respostas 429 e 503.

Quando o limite é excedido, é retornado 429 rate_limited. Aguarde o tempo indicado em Retry-After e tente de novo; tentar novamente sem esperar só enche ainda mais a janela.

Cotas por plano

No modo conta, cada chamada desconta um do contador de requisições de API. Uma consulta em lote gasta tantas linhas da consulta em lote quantas forem as suas linhas, e uma auditoria de spam gasta uma auditoria de spam. Uma chamada que falha devolve o que gastou. Uma auditoria de spam do mesmo domínio no mesmo dia não é contada de novo (exceto com fresh=1).

PlanoChave de APIRequisições de API / mêsLinhas em lote / diaAuditorias de spam / dia

As cotas diárias e mensais são renovadas à meia-noite e no início do mês no horário da Turquia (UTC+3). Quando uma cota se esgota, é retornado 429 quota_exceeded; a mensagem informa qual contador acabou, seu uso e seu plano. Para os preços, veja a página de planos.

Primeiros passos

Códigos de erro

Os erros vêm com um código de status HTTP e sempre com o mesmo corpo. O code é estável, então seu programa deve se basear nele. O message é uma descrição escrita para pessoas e pode mudar; por padrão vem em inglês, e você pode escolher outro idioma com o cabeçalho Accept-Language ou X-Kosto-Lang.

StatusCódigoQuando
  • Em respostas 5xx e 429, aguarde o tempo indicado no cabeçalho Retry-After, se ele estiver presente. Não repita uma resposta 4xx com a mesma requisição; corrija a requisição.
  • Em uma resposta 405, o cabeçalho Allow informa qual método o endpoint aceita. HEAD é tratado como GET.
  • Enquanto o índice de links está carregando, as consultas de referências podem retornar 503 graph_unavailable; tente de novo após Retry-After: 15.

Primeiros passos

Paginação e requisições em lote

A API não usa cursores (cursor) nem números de página. Os endpoints que retornam listas respondem com uma única resposta, e o tamanho dela é limitado por parâmetros.

EndpointRegra
GET /backlinkslimit é de no máximo 1000 (padrão 100). O servidor primeiro escolhe as melhores referências por pontuação, e o filtro min_score é aplicado entre as 1000 melhores referências pelo ranking de links. Por isso, ao filtrar, returned pode ser menor que limit. total é o número total de referências, independentemente do filtro.
GET /compareEntre 2 e 10 domínios. Grafias que levam ao mesmo site se reduzem a uma linha; após a redução, pelo menos dois sites diferentes devem permanecer.
POST /bulkNo máximo 1000 domínios por requisição, e o corpo tem no máximo 1 MB. Se você exceder, recebe too_many_domains (400) ou payload_too_large (413). Linhas vazias são ignoradas, o mesmo site é unificado em uma linha e entradas inválidas permanecem no lugar como valid: false; a ordem é a da primeira aparição.

Dividindo listas grandes

Se você tiver mais de 1000 domínios, divida a lista em blocos de 1000 e envie-os em sequência. Cada bloco é uma requisição e conta no limite por minuto; no modo conta, ele também consome tantas cotas de consulta em lote quantas linhas tiver.

Outros

Versionamento e registro de alterações

A versão faz parte do endereço: /api/v1. O campo info.version do documento OpenAPI informa a versão do documento desta versão da API.

  • Novos endpoints e novos campos nas respostas podem ser adicionados sem mudar a versão. Esperamos que seu cliente ignore os campos que não conhece.
  • Mudanças incompatíveis, como alterar o tipo ou o significado de um campo existente ou remover um campo, chegam com uma nova versão (/api/v2).
  • Os textos de message podem mudar. Baseie-se nos valores de code e nos códigos de status HTTP.
  1. 1.0.0Versão atual

    Primeira versão. Sete endpoints: domain, backlinks, compare, bulk, spam, usage e openapi.json.

    • Autenticação por chave: Authorization: Bearer ou X-API-Key.
    • Limite de 120 requisições por minuto e cabeçalhos X-RateLimit-*.
    • Formato de erro: { "error": { "code", "message" } }.

Outros

Perguntas frequentes

Domínio não encontrado, isso é um erro?

Não. Para um domínio que não está no índice de links, são retornados 200 e found: false. Nesse caso, subdomains e referring_domains são null. Uma entrada inválida (texto que não é um domínio) retorna 400 invalid_domain.

Posso enviar uma URL?

Sim. O parâmetro domain aceita um domínio ou uma URL. https://www.exemplo.com.br/pagina vira exemplo.com.br na resposta. O mesmo vale para bulk e compare.

Por que o número de domínios de referência às vezes é null?

referring_domains é null se o domínio não estiver no grafo de links ou se o grafo não puder responder naquele momento. backlinks retorna 503 graph_unavailable enquanto o grafo não estiver pronto.

A pontuação é aproximada ou baseada em dados?

Veja o campo score_source. Se for data, a pontuação foi calculada a partir de dados medidos de links e de tráfego; o painel a mostra com o selo baseada em dados e um ponto preenchido. standard e calibrated são pontuações aproximadas; o painel as exibe com o selo aproximada e um ponto vazio. Quando score_low e score_high estão presentes, eles indicam a faixa esperada da pontuação, e o painel desenha essa faixa como um arco no mostrador. Se ambos forem null, nenhuma faixa é informada; isso não significa uma faixa de largura zero.

Por que a contagem de domínios de referência no painel pode ser diferente da que aparece na API?

referring_domains é sempre o número de domínios de referência contados no índice de links, e o endpoint backlinks lista esses domínios pelo nome. O painel mostra um único número no título: o número dos dados de busca, se eles foram abertos para o domínio, ou então o número do índice de links. Quando o número dos dados de busca está no título, o número do índice de links aparece no detalhe abaixo do cartão, como o número que “conseguimos listar pelo nome”. Os dois números são medidos por métodos diferentes, e um não contradiz o outro.

Por que a auditoria de spam pode ser tão lenta?

Na primeira consulta, são lidos os dados de arquivo, de rastreamento e da página ativa do domínio, o que pode levar até 25 segundos. O resultado fica em cache por 24 horas (cached: true). Defina o tempo limite do seu cliente para pelo menos 30 segundos. fresh=1 ignora o cache e faz uma nova verificação.

Posso chamar a API pelo navegador, a partir do meu próprio site?

Não. A API não envia cabeçalho CORS e rejeita requisições do navegador vindas de outros sites. Colocar sua chave no código do navegador também não seria seguro; faça a chamada a partir do seu próprio servidor. O painel Testar desta página é a exceção, porque roda no mesmo endereço.

Perdi minha chave.

Não é possível recuperar a chave; apenas o hash dela é armazenado. Crie uma nova chave, atualize seu script e revogue a antiga.

Como vejo meu limite?

GET /api/v1/usage retorna o total de requisições da sua chave e o estado da janela atual por minuto. No modo conta, nas respostas bem-sucedidas os cabeçalhos X-Quota-* mostram o que resta da última cota contabilizada; os detalhes estão na página da sua conta.

Em qual fuso horário estão os timestamps?

Os campos de data nas respostas estão em UTC (como 2026-11-10T09:40:36.000Z). As cotas diárias e mensais são renovadas de acordo com o horário da Turquia (UTC+3).