Referência da API
Endpoints simples e consistentes. CORS ativado. Sem autenticação. Totalmente multilíngue — cada campo, chave e valor é traduzido em mais de 10 idiomas.
URL base
Início rápido
Atalho de terminal: curl ipto.to ou curl ipto.to/8.8.8.8 (sem precisar de https:// ou /v1/ip/) também funciona quando a requisição vem do curl, Wget ou HTTPie — detectado pelo User-Agent. Isso retorna um conjunto de campos mais curto, no estilo do ipinfo.io (ip, country, city, asn, org, ...), não o schema completo abaixo — use os caminhos /v1/ip diretamente para a resposta completa documentada nesta página.
Só o IP: curl ipto.to/ip (ou abra no navegador) retorna apenas o seu próprio endereço IP como texto simples — 73.9.114.155, sem JSON, sem elementos de página. Equivalente direto do ipinfo.io/ip. Veja GET /ip abaixo.
Multilíngue por padrão: Defina ?lang= para qualquer código suportado e cada chave e valor JSON da resposta volta traduzido — não só país/continente. Veja Localização abaixo para a lista completa de idiomas e a opção de saída &localize=0.
Lookup Lab
Monte qualquer requisição do ipto, copie-a como código pronto para executar na sua linguagem ou envie aqui mesmo e leia a resposta ao vivo. O plano gratuito não precisa de chave.
Servidor MCP
O ipto também pode ser acessado como um servidor de ferramentas MCP (Model Context Protocol) — aponte o Claude Desktop, o Cursor, ou qualquer cliente compatível com MCP para o endpoint abaixo e ele expõe 14 ferramentas chamáveis: ip_lookup, bulk_ip_lookup (Pro/Enterprise), asn_lookup, country_lookup, reverse_dns_lookup, user_agent_parse, phone_lookup, email_lookup, fraud_score, language_detect, currency_convert, weather_lookup, trademark_lookup e patent_lookup. JSON-RPC 2.0 sobre Streamable HTTP — apenas POST, sem necessidade de sessão/SSE. Mesma autenticação da API REST: omita para o plano gratuito (1.000 req/dia por IP), ou acrescente ?api_key= à URL do endpoint.
Para clientes que só suportam stdio, use uma ponte: npx mcp-remote https://ipto.to/mcp
Endpoints
Retorna apenas o próprio endereço IP público do cliente que fez a requisição, como texto simples (Content-Type: text/plain) — ex.: 73.9.114.155. Equivalente direto do ipinfo.io/ip: funciona de forma idêntica via curl, Wget, HTTPie ou uma visita simples pelo navegador (sem detecção de User-Agent, diferente do atalho curl ipto.to acima), e é renderizado como apenas o IP puro, sem elementos de página, quando aberto no navegador.
Sem parâmetros, sem query string. Para o objeto completo de geolocalização/inteligência de ameaças, use GET /v1/ip abaixo. Esta rota lê o IP de conexão diretamente (sem consulta a D1/KV) e não é contabilizada no orçamento diário de requisições — veja Limites de taxa.
Retorna geolocalização e inteligência de ameaças para o IP da requisição, incluindo dados no nível de cidade via o objeto de borda da CF.
Nenhum parâmetro obrigatório. Aceita ?lang=, ?fields=, ?format= — veja Localização e Formatos de saída abaixo.
Consulte qualquer endereço IPv4. Os campos de nível de cidade (city, state, postal_code, latitude, longitude, timezone) são preenchidos quando o IP está presente em um dos dois conjuntos de dados geográficos combinados, IP2Location ou MaxMind — verifique geo_precision na resposta para saber se você recebeu dados de nível de cidade ou de país. O formato de timezone depende de qual fonte deu o match (uma string de UTC-offset do IP2Location, ou um nome IANA do MaxMind). Consultas IPv6 atualmente retornam apenas dados de nível de país.
| Parameter | In | Description |
|---|---|---|
ip | path | Obrigatório. Qualquer endereço IPv4 ou IPv6 válido. |
lang | query | Opcional. Localiza country_name e continent: en (padrão), pt, fr, de, zh-TW, ko, zh-CN, ja-JP, es-ES, ar-SA, hi-IN. |
fields | query | Opcional. Lista de campos a incluir, separados por vírgula. Ex.: ?fields=ip,country_code,is_vpn |
format | query | Opcional. Formato da resposta: json (padrão), csv, text, xml, yaml. |
O endpoint de busca unificada por trás da barra de pesquisa da página inicial. Detecta se :query é um IP, um ASN (AS15169 ou 15169), um código de país de 2 letras, um e-mail ou um número de telefone, e então agrega todas as verificações relevantes em uma única resposta. Para uma busca por IP, isso dispara — em paralelo, no lado do servidor — a busca de IP principal mais RPKI, IP-para-empresa, operadora móvel, domínios hospedados e locais próximos, de modo que uma única busca consome apenas uma requisição do seu orçamento diário de limite de taxa, em vez de uma por funcionalidade.
| Parameter | In | Description |
|---|---|---|
query | path | Obrigatório. Um IP, ASN, código de país, e-mail ou número de telefone. |
| Field | Type | Description |
|---|---|---|
query | string | A entrada decodificada, como recebida. |
detected_type | string | "ip", "asn", "country", "email" ou "phone". |
ip | object|null | Presente quando detected_type é "ip" — mesmo formato de GET /v1/ip/:ip. |
rpki | object|null | Presente para buscas de IP — mesmo formato de GET /v1/ip/:ip/rpki. |
company | object|null | Presente para buscas de IP — mesmo formato de GET /v1/ip/:ip/company. |
whois | object|null | Presente para buscas de IP — mesmo formato de GET /v1/ip/:ip/whois. |
carrier | object|null | Presente para buscas de IP — mesmo formato de GET /v1/ip/:ip/carrier. |
asn / country / email / phone | object|null | Presente no lugar dos seis campos acima quando detected_type corresponde — mesmo formato do endpoint dedicado daquele tipo. |
Cada subcampo degrada de forma independente — uma fonte upstream lenta ou com falha (RIPEstat, um servidor RDAP, crt.sh) aparece apenas como aquele campo específico sendo null, nunca como falha da busca inteira. Somente uma consulta principal inválida (ex.: um IP malformado) retorna um status de erro para a requisição como um todo.
DNS reverso — uma única consulta PTR ao vivo via DNS-over-HTTPS, não um banco de dados de enumeração de domínios. Retorna null se o IP não tiver registro PTR.
| Parameter | In | Description |
|---|---|---|
ip | path | Obrigatório. Qualquer endereço IPv4 ou IPv6 válido. |
Validação de origem de rota RPKI para a rota atualmente anunciada de um IP, resolvida ao vivo via RIPEstat (nenhum banco de dados de ROA é ingerido ou mantido sincronizado localmente). status é sempre "valid", "invalid" ou "unknown" — nunca sintetizado a partir de qualquer outro sinal; qualquer falha ou timeout do RIPEstat retorna "unknown" com uma string de motivo, não um erro.
| Parameter | In | Description |
|---|---|---|
ip | path | Obrigatório. Qualquer endereço IPv4 ou IPv6 válido. |
| Field | Type | Description |
|---|---|---|
asn | integer|null | O ASN que está anunciando atualmente, resolvido ao vivo — não derivado do conjunto de dados de ASN próprio deste site. |
prefix | string|null | O prefixo CIDR atualmente anunciado. |
status | string | "valid", "invalid" ou "unknown". |
validating_roas | array | A(s) ROA(s) específica(s) encontrada(s) pelo RIPEstat, cada uma com origin/prefix/max_length/validity. |
validator | string|null | Qual validador RPKI o RIPEstat usou (ex.: "routinator"). |
reason | string|null | Explica um resultado "unknown" — ex.: não existe ROA de cobertura, ou o RIPEstat estava inacessível. |
Validação RPKI explícita (ASN, prefix) — para quando você já sabe exatamente qual rota quer verificar, em vez da conveniência derivada de IP acima.
| Parameter | In | Description |
|---|---|---|
asn | query | Obrigatório. Número do ASN, com ou sem o prefixo AS. Ex.: 15169 ou AS15169. |
prefix | query | Obrigatório. Prefixo CIDR, ex.: 8.8.8.0/24. |
Identifica a organização à qual um IP está registrado, combinando dados do registrante RDAP (WHOIS estruturado) com o nome da organização do próprio ASN em uma confiança categórica, nunca uma pontuação numérica.
| Parameter | In | Description |
|---|---|---|
ip | path | Obrigatório. Qualquer endereço IPv4 ou IPv6 válido. |
| Field | Type | Description |
|---|---|---|
company_name | string|null | O nome da empresa resolvido — null quando confidence é "low" (as duas fontes discordam, então nenhuma é apresentada como autoritativa) ou "none". |
rdap_org_name | string|null | O nome do registrante segundo o RDAP, independente de company_name. |
asn_org_name | string|null | O nome da organização do próprio ASN, independente de company_name. |
confidence | string | "high" (as fontes concordam), "medium" (apenas uma fonte disponível), "low" (as fontes discordam — ambas mostradas) ou "none". |
reason | string | Explicação em linguagem simples do nível de confidence. |
O próprio registro de registro RDAP subjacente — bloco de rede, datas de registro/última alteração, e todos os contatos que o RDAP tem registrados. Diferente do /company acima, que reconcilia esses mesmos dados de registrante com o nome da organização do ASN em uma única resposta com nível de confiança; este endpoint retorna o registro bruto tal como está, mais próximo da saída clássica de WHOIS. Endereços IPv6 também são suportados.
| Parameter | In | Description |
|---|---|---|
ip | path | Obrigatório. Qualquer endereço IPv4 ou IPv6 válido. |
| Field | Type | Description |
|---|---|---|
available | boolean | false se nenhum registro RDAP pôde ser resolvido — veja reason. |
reason | string|null | Explica um resultado available: false. |
startAddress / endAddress / cidr | string|null | O bloco de rede registrado. |
netName / netHandle / parentHandle | string|null | Identificadores atribuídos pelo RIR para o objeto de rede. |
country | string|null | País do registrante, segundo o RDAP. |
allocationType | string|null | ex.: "direct allocation", "reassigned". |
registeredDate / lastChangedDate | string|null | Timestamps ISO do registro RDAP. |
rir | string|null | Qual registro regional (ARIN, RIPE, APNIC, LACNIC, AFRINIC) forneceu o registro. |
contacts | array | Todos os contatos que o RDAP tem registrados, cada um com roles, name, email e handle — não apenas o primeiro resultado. |
Identificação de operadora móvel best-effort para IPs classificados como redes móveis, cruzada com um diretório de operadoras MCC/MNC. Deliberadamente não possui um único campo de operadora — veja matched_carrier_entries e note abaixo — já que um nome de operadora isolado seria lido como uma afirmação ao vivo por assinante, o que estes dados não conseguem sustentar com honestidade.
| Parameter | In | Description |
|---|---|---|
ip | path | Obrigatório. Qualquer endereço IPv4 ou IPv6 válido. |
| Field | Type | Description |
|---|---|---|
is_mobile_network | boolean | false interrompe aqui com um diretório vazio — nenhum palpite para um ASN não móvel. |
asn_organization | string|null | O nome da organização do próprio ASN. |
matched_carrier_entries | array | Linhas do diretório MCC/MNC cujo nome de operadora corresponde de forma aproximada (fuzzy) a asn_organization, restritas ao país do próprio IP. |
note | string | Explica o que este campo pode e não pode afirmar. |
Encontra domínios associados a um IP através do seu hostname de DNS reverso (PTR) e de logs de transparência de certificados (crt.sh) — não é uma busca reversa de IP genérica. O próprio campo limitations da resposta explica exatamente o que isso consegue e não consegue encontrar.
| Parameter | In | Description |
|---|---|---|
ip | path | Obrigatório. Qualquer endereço IPv4 ou IPv6 válido. |
| Field | Type | Description |
|---|---|---|
ptr_hostname | string|null | O hostname de DNS reverso do IP, ou null se não houver registro PTR. |
root_domain | string|null | O domínio registrável derivado de ptr_hostname. |
subdomains_seen | array|null | Subdomínios encontrados via transparência de certificados. null significa que a própria busca no crt.sh não pôde ser concluída — diferente de um array vazio, que significa que ela rodou e não encontrou nada. |
limitations | string | Explica o que esta funcionalidade estruturalmente não consegue detectar (sem PTR, hospedagem compartilhada, domínios sem certificado). |
Busca em massa — até 100 IPs por requisição, somente Pro/Enterprise. Retorna um objeto indexado com cada IP como chave. Mais rápido que chamadas sequenciais graças a leituras paralelas de cache e banco de dados. Cada IP no lote conta contra o seu orçamento diário de requisições, assim como consultá-lo individualmente. Requisições do plano gratuito recebem um 403 — veja preços.
| Parameter | In | Description |
|---|---|---|
body | body (JSON) | Array JSON de strings de IP. Ex.: ["1.1.1.1","8.8.8.8"] |
Consulte um Sistema Autônomo pelo número. Retorna o nome da organização, país, continente, contagem de faixas de IP, tipo de classificação, taxa de câmbio e dados de referência regionais (idiomas, tld, capital, fronteiras).
| Parameter | In | Description |
|---|---|---|
asn | path | Número do ASN sem o prefixo AS. Ex.: 15169 para o Google. |
lang | query | Opcional. Localiza country_name e continent: en (padrão), pt, fr, de, zh-TW, ko, zh-CN, ja-JP, es-ES, ar-SA, hi-IN. |
format | query | Opcional. Formato da resposta: json (padrão), csv, text, xml, yaml. |
Faz a geocodificação reversa da localização de nível de cidade já existente de um IP, e então retorna pontos de interesse próximos (restaurantes, parques, escolas, transporte público, marcos notáveis), dados locais de criminalidade onde há uma fonte disponível (apenas Reino Unido e EUA), e uma estimativa opcional de trajeto de carro sob demanda.
| Parameter | In | Description |
|---|---|---|
ip | path | Obrigatório. Qualquer endereço IPv4 válido. IPv6 ainda não é suportado. |
dest_lat | query | Opcional. Latitude do destino para uma estimativa de trajeto — use em conjunto com dest_lon. |
dest_lon | query | Opcional. Longitude do destino para uma estimativa de trajeto — use em conjunto com dest_lat. |
dest_address | query | Opcional. Endereço de destino em texto livre para uma estimativa de trajeto, geocodificado automaticamente. Ignorado se dest_lat/dest_lon também forem informados. |
| Field | Type | Description |
|---|---|---|
geocode | object|null | country, countryCode, region, city, neighbourhood, displayName — null se o IP não tiver localização de nível de cidade para geocodificar. |
locality.restaurants / .parks / .schools / .transit | array | Até 4 entradas mais próximas por categoria, cada uma com name e distanceMeters. |
locality.notable | array | Marcos notáveis próximos com uma breve descrição, via Wikidata. |
locality.usCrime | object|null | Totais de crimes violentos/patrimoniais da agência mais próxima — apenas EUA, requer uma FBI_CRIME_API_KEY na implantação. null em qualquer outro lugar. |
locality.ukCrime | object|null | Resumo de incidentes em nível de rua dentro de 1 milha — apenas GB. |
locality.caCrime | null | Sempre null — nenhuma fonte de criminalidade abrangendo todo o Canadá está conectada (veja docs/places.md). |
commute | object|null | durationMinutes e distanceKm, apenas quando um destino foi informado e o OpenRouteService retornou uma rota. null caso contrário — nunca calculado especulativamente. |
Estatísticas agregadas em nível de país, além de dados de referência regionais (moeda, taxa de câmbio, idiomas, tld, capital, fronteiras).
| Parameter | In | Description |
|---|---|---|
code | path | Código de país ISO 3166-1 alpha-2. Ex.: US, DE, JP. |
lang | query | Opcional. Localiza country_name e continent: en (padrão), pt, fr, de, zh-TW, ko, zh-CN, ja-JP, es-ES, ar-SA, hi-IN. |
format | query | Opcional. Formato da resposta: json (padrão), csv, text, xml, yaml. |
Analisa uma string de User-Agent. Retorna navegador, sistema operacional, tipo de dispositivo e detecção de bot. Lê o cabeçalho User-Agent do solicitante por padrão, ou passe qualquer string via ?ua=.
| Parameter | In | Description |
|---|---|---|
ua | query | Opcional. String de User-Agent codificada em URL para analisar. O padrão é o cabeçalho User-Agent da requisição. |
Valida e formata um número de telefone gratuitamente, sempre: região, tipo de linha e formatação E.164/nacional/internacional via um parser auto-hospedado, sem chamada a fornecedor. Quando há orçamento premium mensal disponível por IP/chave (100/mês no Free, mais nos planos pagos — veja preços), a mesma requisição também retorna um nome de operadora ao vivo, status de portabilidade, e um tipo de telefone classificado pelo provedor, de um serviço de consulta de operadoras em tempo real — veja source e os campos abaixo. Um country_name localizado, além de lang/lang_source, é sempre incluído, independentemente do nível — veja Localização. Esgotar o orçamento premium, ou qualquer problema upstream, retorna sem problemas aos campos gratuitos acima; a requisição nunca falha por causa disso. Para uma referência de operadoras de rede em nível de país em vez de uma consulta por número, veja GET /v1/carriers.
| Parameter | In | Description |
|---|---|---|
number | path | Obrigatório. Qualquer número de telefone, idealmente no formato E.164 (ex.: +14155552671). Codifique o + inicial na URL. |
country | query | Opcional. Dica de código de país de 2 letras para analisar números em formato nacional ambíguo, ex.: ?country=US. |
mode | query | Opcional. ?mode=current solicita a operadora em tempo real (em vez da emitida pelo SIM) do número, quando o nível premium está disponível. Ignorado se a requisição recorrer ao plano gratuito. |
| Field | Type | Description |
|---|---|---|
valid | boolean | true se o número corresponder a um padrão de plano de numeração válido para sua região. |
country_code | string|null | Região ISO 3166-1 alpha-2 à qual o número pertence. |
national_format | string|null | Formatado na própria convenção nacional da região. |
international_format | string|null | Formatado com código de país e espaçamento, ex.: "+1 415 555 2671". |
e164 | string|null | Forma canônica E.164, ex.: "+14155552671". |
line_type | string|null | FIXED_LINE, MOBILE, FIXED_LINE_OR_MOBILE, VOIP, TOLL_FREE, PREMIUM_RATE, ou similar. Muitos planos de numeração (incluindo o da América do Norte) não conseguem distinguir linha fixa de móvel apenas pelo número. |
source | string | "premium" se havia orçamento de consulta de operadora ao vivo disponível para esta requisição, "local" se recorreu ao parser gratuito acima. carrier, phone_type, original_carrier, is_ported, phone_region e country_prefix abaixo só são preenchidos quando source é "premium" — country_name e lang/lang_source mais abaixo são sempre preenchidos, independentemente do nível. |
phone_type | string|null | Uma das próprias categorias do provedor de consulta de operadoras em tempo real: mobile, fixed_line, voip, toll_free, premium_rate, shared_cost, personal_number, pager, uan, voicemail, ou unknown — não apenas as quatro primeiras, que são só os exemplos mais comuns. null quando source é "local" — distinto de line_type acima, que vem do parser local e usa um conjunto diferente de categorias. |
carrier | string|null | O nome da operadora de rede atual do número. null quando source é "local". |
original_carrier | string|null | A operadora de rede na qual o número foi originalmente emitido, caso tenha sido portado desde então. null quando source é "local" ou o número não foi portado. |
is_ported | boolean|null | true se o número foi portado para fora de sua operadora original. null quando source é "local". |
phone_region | string|null | Detalhe de localidade/estado para o número (ex. "California"), mais granular que country_code acima. null quando source é "local". |
country_prefix | string|null | O código de discagem do número sem o "+" inicial (ex. "49" para a Alemanha). null quando source é "local". |
country_name | string|null | Nome de exibição completo do país (ex. "Germany") — country_code acima é apenas a forma ISO alpha-2 ("DE"), não um nome de exibição. Diferente dos campos exclusivos do premium acima, este é sempre preenchido (sempre que country_code também é) e é localizado via ?lang=/Accept-Language da mesma forma que o campo country_name de qualquer outro endpoint já é — veja lang/lang_source abaixo. |
lang | string | O idioma efetivamente aplicado ao country_name acima — o valor resolvido de ?lang=, ou "en" se nenhum foi solicitado ou o solicitado não é suportado. |
lang_source | string | "param" se ?lang= estava presente na requisição, "header" se Accept-Language foi usado em vez disso, ou "default" se nenhum dos dois e o inglês foi usado. Mesmo significado do campo de mesmo nome em GET /v1/asn/:asn e GET /v1/country/:code. |
Validação em massa. Todos os planos têm acesso ao envio em massa (diferente de /v1/ip/bulk) — o limite de lote por plano é o que mantém o Free limitado, não um 403. Free: 10/requisição, 100/dia. Pro: 100/requisição, 1.000/dia. Enterprise: 1.000/requisição, 10.000/dia. Este orçamento é separado do seu limite geral diário de requisições — veja Limites de taxa.
| Parameter | In | Description |
|---|---|---|
body | body (JSON) | Array JSON de strings de números de telefone. |
Consulta de referência: quais operadoras de rede móvel (MCC/MNC) são conhecidas para um determinado país — não vinculada a nenhum número de telefone específico. Extraído de uma compilação MCC/MNC mantida pela comunidade (licença MIT, última sincronização em 2026 — veja o repositório de docs para detalhes); uma tabela de referência estática, não um feed ao vivo, já que atribuições de plano de numeração não mudam com frequência suficiente para justificar isso.
| Parameter | In | Description |
|---|---|---|
country | query | Obrigatório. Código de país de 2 letras, ex.: ?country=US. |
Validação de sintaxe de e-mail, uma verificação ao vivo de registro MX via DNS-over-HTTPS, e detecção de domínio descartável/temporário contra uma lista de bloqueio mantida pela comunidade (licença CC0, sincronizada diariamente). Não verifica se a caixa de entrada em si existe — isso exigiria um handshake SMTP que esta API não realiza (veja a referência de campos abaixo para saber exatamente o que has_mx prova e não prova).
| Parameter | In | Description |
|---|---|---|
email | path | Obrigatório. Qualquer endereço de e-mail, codificado em URL (o @ deve ser codificado como %40). |
| Field | Type | Description |
|---|---|---|
valid_syntax | boolean | true se o endereço corresponder a um padrão de sintaxe de e-mail padrão. Não verifica se a caixa de entrada existe. |
domain | string|null | A parte do domínio, em minúsculas. null se valid_syntax for false. |
has_mx | boolean|null | true se o domínio tiver pelo menos um registro MX no momento. null se a sintaxe era inválida ou a própria consulta DNS falhou/expirou — trate null como desconhecido, não como false. |
disposable | boolean|null | true se o domínio corresponder a um provedor de e-mail descartável/temporário conhecido. null nas mesmas condições que has_mx. |
source | "premium"|"local" | "premium" se uma verificação em tempo real foi executada para esta solicitação, "local" se não foi (limite atingido, ou recurso não habilitado) — os campos acima (valid_syntax até disposable) estão sempre preenchidos em ambos os casos. |
is_reachable | string|null | O veredito geral de uma verificação em tempo real opcional: "safe" (entregável), "invalid" (rejeitado), "risky" (incerto) ou "unknown" (inconclusivo — tente novamente). null quando a verificação em tempo real não foi executada para esta solicitação (veja source abaixo). |
is_catch_all | boolean|null | true se o domínio aceitar e-mails para qualquer endereço, o que significa que a existência desta caixa específica não pôde ser confirmada. null quando a verificação em tempo real não foi executada. |
mailbox_full | boolean|null | true se a verificação em tempo real encontrou a caixa reportando estar cheia. null quando a verificação em tempo real não foi executada. |
is_role_account | boolean|null | true se o endereço parecer uma conta de função (ex.: support@, admin@) em vez da caixa de um indivíduo. null quando a verificação em tempo real não foi executada. |
is_disabled | boolean|null | true se a verificação em tempo real encontrou a caixa explicitamente desativada. null quando a verificação em tempo real não foi executada. |
Combina qualquer combinação de IP, e-mail, telefone e User-Agent que você fornecer em uma única pontuação de 0–100 — a única coisa que nenhum dos serviços ip-api.com, ipapi.co, ipgeolocation.io, ipify.org, ipregistry.co, ip2location.io, AbstractAPI, IPLocate.io ou BigDataCloud oferece como um sinal único combinado (verificado diretamente). Todas as quatro entradas são opcionais e independentes — passe qualquer subconjunto. ip usa o seu próprio IP e ua usa o seu próprio cabeçalho User-Agent por padrão, se omitidos, a mesma convenção de GET /v1/ip e GET /v1/ua. Um sinal que você não passar simplesmente fica ausente da resposta, não é pontuado como limpo — seu peso é redistribuído entre os sinais que você de fato forneceu.
| Parameter | In | Description |
|---|---|---|
ip | query | Opcional. Usa o seu próprio IP por padrão. IPv6 ainda não é pontuado (mesma limitação do restante da API de dados de ameaças). |
email | query | Opcional. Qualquer endereço de e-mail. |
phone | query | Opcional. Qualquer número de telefone. |
ua | query | Opcional. Usa o seu próprio cabeçalho User-Agent por padrão. |
| Field | Type | Description |
|---|---|---|
score | integer | Composto ponderado de 0 a 100 entre os sinais que foram fornecidos. |
risk_tier | string | "low" (<20), "medium" (20-44), "high" (45-69), ou "critical" (70+). |
signals | object | Detalhamento por entrada — apenas as chaves das entradas que você realmente forneceu estão presentes: ip, email, phone, user_agent. Cada uma inclui sua própria pontuação de componente, além dos mesmos campos que GET /v1/ip/:ip, /v1/email/:email, /v1/phone/:number e /v1/ua já retornam para aquela entrada. |
Renderiza uma URL em uma instância real de Chrome headless (Cloudflare Browser Rendering, não um fornecedor terceirizado de screenshots) e retorna um PNG. Alvos internos/privados (localhost, faixas RFC 1918, endereços link-local/de metadados de nuvem) são rejeitados antes mesmo do navegador ser iniciado. Sujeito aos próprios limites de plataforma do Browser Rendering, que são muito mais restritivos que o resto desta API — espere que isso seja limitado bem antes do seu orçamento diário normal de requisições em planos Cloudflare mais baixos.
| Parameter | In | Description |
|---|---|---|
url | query | Obrigatório. Deve ser http ou https. |
Identifica o idioma de um trecho de texto via análise local de frequência de trigramas — sem chamada a fornecedor externo, sem inferência por modelo de IA, sem registro de logs. Entradas com menos de 10 caracteres retornam um idioma null; com menos de ~30 caracteres ainda pode retornar um palpite, mas reliable será false.
| Parameter | In | Description |
|---|---|---|
text | query | Obrigatório. Até 5.000 caracteres — entradas mais longas são truncadas, não rejeitadas. |
| Field | Type | Description |
|---|---|---|
language | object|null | code (ISO 639-1), iso639_3, name e local_name para a melhor correspondência. null se o texto for muito curto ou não reconhecido ("und"). |
reliable | boolean | false para entradas curtas — trate o resultado como um palpite, não uma correspondência confiável. |
candidates | array | Até 5 idiomas concorrentes com pontuações relativas, para pares de idiomas próximos entre si. |
Converte um valor entre duas moedas (154 suportadas) usando o mesmo feed diário de taxas de referência que já alimenta currency_code/exchange_rate_usd em toda busca de IP, ASN e país — exposto aqui como um endpoint de conversão independente, em vez de aninhado dentro de uma resposta de geolocalização.
| Parameter | In | Description |
|---|---|---|
from | query | Obrigatório. Código de moeda ISO 4217 de 3 letras. |
to | query | Obrigatório. Código de moeda ISO 4217 de 3 letras. |
amount | query | Opcional. O padrão é 1. |
| Field | Type | Description |
|---|---|---|
result | number | Valor convertido. |
rate | number | Unidades de to por 1 from. |
updated | string | Timestamp ISO da sincronização de taxa de referência usada nesta conversão. |
Tabela completa de taxas de câmbio (154 moedas) rebaseada em relação a qualquer moeda suportada, não apenas USD.
| Parameter | In | Description |
|---|---|---|
base | query | Opcional. O padrão é USD. |
| Field | Type | Description |
|---|---|---|
rates | object | Mapa de código de moeda → taxa em relação à base. |
Histórico diário de taxa de referência para um par de moedas, até 90 dias atrás — os dados por trás do gráfico de tendência de taxa em a ferramenta de conversão de moedas. Preenchido retroativamente uma vez, e depois atualizado diariamente pelo mesmo cron que atualiza GET /v1/currency/convert. Esta é uma única taxa de referência diária ao longo do tempo, não um spread de compra/venda de negociação.
| Parameter | In | Description |
|---|---|---|
target | query | Obrigatório. Código de moeda ISO 4217 de 3 letras para exibir no gráfico. |
base | query | Opcional. O padrão é USD. |
days | query | Opcional. Um de 30, 60, 90. O padrão é 30. |
| Field | Type | Description |
|---|---|---|
series | array | Array em ordem crescente de data de pontos { date, rate }. |
stats | object | min, avg, max e current ao longo da série retornada. |
Condições atuais — e, com detail=1, uma previsão horária e para vários dias — para um nome de lugar, CEP ou par "lat,lon", ou para lat + lon ou um ip. Os locais dos EUA são atendidos pelo National Weather Service e o resto do mundo pelo MET Norway. Adicione include= para o documento completo, com unidades, até 9 dias, sol e lua, alertas oficiais e mais — veja o cartão include abaixo. A ferramenta weather-lookup também detecta automaticamente a localização do próprio solicitante no navegador antes de chamar este endpoint explicitamente.
| Parameter | In | Description |
|---|---|---|
q | query | Nome da cidade, CEP ou "lat,lon" (máximo de 100 caracteres). Ou informe lat e lon, ou ip, no lugar. Um dos três é obrigatório. |
detail | query | Opcional. "1" adiciona pressure_mb/visibility_km/dewpoint_c/sunrise/sunset/etc. a weather, além de um objeto forecast (hourly + daily). Omitido por padrão. |
| Field | Type | Description |
|---|---|---|
condition | string|null | Breve descrição em texto. |
temp_c / temp_f | number|null | Temperatura atual. |
feels_like_c | number|null | Temperatura de sensação térmica em Celsius. |
humidity_pct | number|null | Umidade relativa. |
wind_kmph / wind_dir | number|null / string|null | Velocidade do vento e direção da bússola de 16 pontos. |
uv_index | number|null | Índice UV. |
location | object|null | Nome, região, país e lat/lon resolvidos para o lugar consultado — não apenas a entrada bruta. |
forecast.hourly[] | array | Apenas detail=1. Próximas 24h em passos de 3 horas: hour_label, temp_c/temp_f, weather_code, chance_of_rain_pct. |
forecast.daily[] | array | Apenas detail=1. Previsão de 3 dias: date, day_label, weather_code, condition, chance_of_rain_pct, max/min temp_c/temp_f. |
Proxy ao vivo para o sistema TSDR (Trademark Status & Document Retrieval) do USPTO para status de processo por número de série de 8 dígitos — uma chamada direta por requisição, não uma cópia em cache ou revendida. Os dados de status de processo são uma obra do governo dos EUA e de domínio público segundo os próprios termos de uso do USPTO, então toda resposta traz um campo source/attribution, em vez de armazená-los em cache ou revendê-los silenciosamente. Dados de logotipo/imagem de marca estão deliberadamente fora do escopo — os termos do USPTO separam o licenciamento de imagens dos dados textuais de status de processo que este endpoint retorna. A busca por número de registro ainda não é suportada; apenas o caminho por número de série é documentado pelo USPTO atualmente. Experimente na ferramenta Trademark Lookup.
| Parameter | In | Description |
|---|---|---|
serial | path | Obrigatório. Exatamente 8 dígitos, ex.: 98267877. |
| Field | Type | Description |
|---|---|---|
source | string | Sempre "USPTO TSDR". |
attribution | string | Linha de atribuição obrigatória segundo os termos de uso do USPTO. |
data | object | Payload bruto de status de processo, como retornado pelo USPTO, repassado sem reestruturação — confirmado ativo em 2026-08-12. Em data.trademarks[0]: status (datas de depósito/registro, markElement, descOfMark, tm5StatusDesc), parties.ownerGroups (nome/endereço do titular por função), gsList[] (descrição de produtos/serviços e classes), e prosecutionHistory[] (linha do tempo completa do processo). A presença de campos varia conforme o status da solicitação — ex.: uma solicitação pendente ainda não tem usRegistrationNumber. |
Proxy ao vivo para a API Patent File Wrapper do USPTO (Open Data Portal) para status de concessão por número de patente de utilidade de 7-8 dígitos — uma chamada direta por requisição, não uma cópia em cache ou revendida. A fonte originalmente utilizada (a Search API do PatentsView) foi confirmada como desativada em 2026-03-20; isso faz proxy para sua sucessora ao vivo. Os dados do Patent File Wrapper são uma obra do governo dos EUA e de domínio público segundo os próprios termos de uso do USPTO, então toda resposta traz um campo source/attribution. O escopo é centrado em solicitação/processo — sem grafo de citações, família de patentes, campo de status jurídico ou imagens como o Lens.org, Espacenet ou Google Patents mostram. A cobertura começa em solicitações depositadas em 2001. Patentes de design, de planta e de reemissão ainda não são suportadas; apenas patentes de utilidade concedidas por número de patente. Experimente na ferramenta Patent Lookup.
| Parameter | In | Description |
|---|---|---|
number | path | Obrigatório. 7-8 dígitos, ex.: 12393227. Apenas número de patente de utilidade concedida, não um número de solicitação. |
| Field | Type | Description |
|---|---|---|
source | string | Sempre "USPTO Patent File Wrapper". |
attribution | string | Linha de atribuição obrigatória segundo os termos de uso do USPTO. |
data | object | Payload bruto do registro de processo, como retornado pelo USPTO, repassado sem reestruturação — confirmado ativo em 2026-08-12 contra patentes reais (12393227, 9935534). Campos principais: applicationMetaData (inventionTitle, filingDate, applicationStatusDescriptionText, applicationStatusDate, patentNumber, inventorBag[]), recordAttorney.attorneyBag[], applicationNumberText, e eventDataBag[] (linha do tempo completa do processo). Retorna 404 se o número não existir, for uma patente de design/planta/reemissão, ou for anterior à cobertura de 2001. |
Feed paginado de VPN, Tor e inteligência de ameaças. 200 entradas por página. Cada entrada inclui IP/CIDR, atribuição do provedor, ISP, país e tipo de classificação.
| Parameter | In | Description |
|---|---|---|
page | query | Número de página, indexado a partir de 0. Padrão: 0. |
type | query | Filtrar por tipo: VPN, Tor Exit Node, Tor Node, High-Risk Threat Intel. |
q | query | Filtrar por substring de IP ou CIDR. |
Somente metadados — contagem total de entradas, contagens por fonte e horário da última sincronização. Não retorna dados de IP.
Faixas de rede abusivas, paginadas. Pontuadas de 1 a 10 por corroboração entre feeds. Níveis de risco: critical (8-10), high (5-7), medium (3-4).
| Parameter | In | Description |
|---|---|---|
page | query | Número de página, indexado a partir de 0. Padrão: 0. |
tier | query | Filtrar por nível de risco: critical, high, medium. |
q | query | Filtrar por substring de faixa de rede. |
source | query | Opcional. Filtra pelo nome do feed de origem exatamente como retornado em source_feed, ex.: 'Spamhaus DROP' ou 'IPsum Threat Intel'. |
Somente metadados — contagem total de redes, contagens por fonte, detalhamento por nível de risco, e horário da última sincronização.
Exportação CSV para download dos datasets abertos sobre os quais a API já é construída — os mesmos dados, sem nova licença. asn e ranges estão sempre disponíveis; geo-city retorna 503 até que o dataset dessa fonte esteja ativo em uma determinada implantação. geo-city exporta as linhas brutas de uma fonte geográfica por vez, não uma visão combinada — passe ?source=primary (padrão) ou ?source=secondary.
| Parameter | In | Description |
|---|---|---|
kind | path | Um de: asn, ranges, geo-city. |
source | query | Apenas geo-city. primary (padrão) ou secondary. |
Emite uma chave de API instantaneamente — sem e-mail, sem cadastro. Toda chave começa no plano gratuito (1.000 requisições/dia; busca em massa não incluída). Chaves Pro e Enterprise desbloqueiam limites diários maiores e busca em massa (até 100 IPs/requisição) — veja preços. Guarde a chave — ela não pode ser recuperada depois.
Verifique quantas requisições uma chave já fez. Passe a chave em qualquer requisição /v1/* via o cabeçalho X-API-Key ou ?api_key= para que ela seja contabilizada.
| Parameter | In | Description |
|---|---|---|
key | query | Obrigatório. Uma chave retornada por POST /v1/keys. |
Contato de denúncia de abuso da rede proprietária de um IP, obtido via RDAP: o RIR, o identificador da rede, o CIDR que a cobre e a(s) caixa(s) de e-mail de abuso. Use para saber para onde enviar uma denúncia.
| Parameter | In | Description |
|---|---|---|
ip | path | Endereço IPv4 ou IPv6. |
available é false (com um motivo em failure) quando o registro não pôde ser acessado.
Os intervalos de IP efetivamente anunciados por um ASN, paginados, cada um com seu país e os indicadores de hospedagem / móvel / residencial / bot / lista negra.
| Parameter | In | Description |
|---|---|---|
asn | path | Número do ASN sem o prefixo AS, ex.: 15169. |
limit | query | Intervalos por página. Padrão 50, máximo 200. |
offset | query | Intervalos a ignorar. Padrão 0. |
Registro (RDAP) de um ASN: identificador, nome, país, tipo de alocação, datas de registro, o RIR e seus contatos.
| Parameter | In | Description |
|---|---|---|
asn | path | Número do ASN sem o prefixo AS, ex.: 15169. |
available é false com um reason quando o registro está inacessível.
Onde um ASN realmente está: pontos em nível de cidade geolocalizados a partir de uma amostra dos seus maiores intervalos, mais as cidades mais comuns. Alimenta o mapa de distribuição da página do ASN.
| Parameter | In | Description |
|---|---|---|
asn | path | Número do ASN sem o prefixo AS, ex.: 15169. |
Uma amostra, não a lista completa de intervalos. Use /v1/asn/:asn/ranges para todos os intervalos.
Domínios hospedados em um ASN, encontrados por DNS reverso (PTR) em uma amostra de seus endereços. Cada entrada traz o domínio raiz, o hostname PTR e o IP amostrado.
| Parameter | In | Description |
|---|---|---|
asn | path | Número do ASN sem o prefixo AS, ex.: 15169. |
Amostrado, então é uma pista do que o ASN hospeda, não uma lista completa. Para um único IP use /v1/ip/:ip/hosted-domains.
Relações BGP de um ASN: pares, provedores upstream e clientes downstream, com contagens.
| Parameter | In | Description |
|---|---|---|
asn | path | Número do ASN sem o prefixo AS, ex.: 15169. |
available é false quando a fonte de dados BGP não pôde ser acessada. Arrays vazios com available: true significam que nada foi informado para esse ASN.
Diretório do espaço IPv4: uma entrada por bloco /8 com quantos intervalos, países e ASNs ele contém e seu país principal. Comece aqui e aprofunde com /v1/ip-ranges/:a e /v1/ip-ranges/:a/:b.
Os blocos /16 dentro de um /8 (por exemplo 8.0.0.0/8), com as mesmas contagens de intervalos, países e ASNs por bloco.
| Parameter | In | Description |
|---|---|---|
a | path | Primeiro octeto, 0-255. |
Os intervalos atribuídos dentro de um /16 (por exemplo 8.8.0.0/16), cada um com o ASN ao qual pertence, mais as contagens por bloco.
| Parameter | In | Description |
|---|---|---|
a | path | Primeiro octeto, 0-255. |
b | path | Segundo octeto, 0-255. |
Uma fatia do payload Nearby para uma coordenada, para que o cliente renderize cada parte conforme chega: geocodificação reversa, pontos de interesse ou estatísticas locais de crime.
| Parameter | In | Description |
|---|---|---|
lat | query | Latitude, obrigatório. |
lon | query | Longitude, obrigatório. |
part | query | Qual fatia: geocode, poi ou crime. Um valor desconhecido retorna 400. |
country | query | Somente part=crime: código de país ISO. Há dados de crime para US e GB. |
region | query | Somente part=crime: nome do estado ou região, ex.: Utah. |
city | query | Somente part=crime: nome da cidade, ex.: Orem. |
lang | query | Opcional. Localiza os rótulos de lugares (mesmos códigos da tabela de localização acima). |
Tempo e distância de carro entre dois pontos. Um caminho rápido: dispensa a geocodificação reversa e a busca de pontos de interesse que /v1/places/:ip faz.
| Parameter | In | Description |
|---|---|---|
from_lat | query | Latitude de origem, obrigatório. |
from_lon | query | Longitude de origem, obrigatório. |
dest_lat | query | Latitude de destino. Use com dest_lon ou informe dest_address. |
dest_lon | query | Longitude de destino. |
dest_address | query | Destino em texto livre, geocodificado para você. Usado quando dest_lat/dest_lon estão ausentes. |
Quando nenhum destino pode ser resolvido, a resposta tem to: null, commute: null e uma string reason.
O payload de /v1/places/:ip ancorado em um endereço digitado em vez de um IP: geocodificação, localidade e uma estimativa opcional de trajeto.
| Parameter | In | Description |
|---|---|---|
q | query | Endereço em texto livre, obrigatório. |
dest_lat | query | Latitude de destino opcional, para incluir uma estimativa de trajeto (com dest_lon). |
dest_lon | query | Longitude de destino opcional. |
dest_address | query | Destino opcional em texto livre, em vez de dest_lat/dest_lon. |
part | query | part=geo retorna apenas o rótulo e as coordenadas, para uma primeira renderização mais rápida. |
lang | query | Opcional. Localiza os rótulos de lugares (mesmos códigos da tabela de localização acima). |
found é false quando o endereço não pôde ser geocodificado.
Autocompletar de endereços: alguns locais correspondentes a um endereço parcial, opcionalmente priorizando um ponto.
| Parameter | In | Description |
|---|---|---|
q | query | Texto parcial do endereço, obrigatório. |
near_lat | query | Latitude opcional para priorizar resultados próximos. |
near_lon | query | Longitude opcional para priorizar resultados próximos. |
O documento completo de clima, para um nome de lugar, código postal, coordenadas ou IP. Escolha os blocos que precisa com include: current, hourly, daily, astro (sol e lua), solar, indicators, alerts, marine, air_quality, nowcast, ou all. Os locais dos EUA vêm do National Weather Service e o resto do mundo do MET Norway; meta.source informa qual. Sem include você recebe o formato simples { query, weather } descrito acima.
| Parameter | In | Description |
|---|---|---|
q / lat+lon / ip | query | Onde: q (cidade, código postal ou "lat,lon"), ou lat e lon, ou ip. Um dos três é obrigatório. |
country | query | Opcional. Código ISO ou nome do país para resolver um q ambíguo, por exemplo country=FR para o código postal 75001. |
include | query | Obrigatório para este formato. Separados por vírgula: current, hourly, daily, astro, solar, indicators, alerts, marine, air_quality, nowcast, ou all. |
units | query | metric (padrão) ou imperial. Os nomes dos campos acompanham a unidade: temp_c vira temp_f, wind_kmph vira wind_mph, precip_mm vira precip_in. |
wind_unit | query | kmh, ms, mph ou kn. Altera apenas a unidade do vento. |
hours | query | Entradas horárias a retornar, 1-240. Padrão 48. As próximas são horárias e as seguintes de 6 em 6 horas; step_hours indica qual. |
days | query | Entradas diárias a retornar, 1-9. Padrão 7. Os dados dos EUA cobrem 7 dias. |
meta.coverage indica quais campos existem para o local: probabilidade de chuva, rajadas e probabilidade de trovoada existem só nos EUA e nos países nórdicos e são null (nunca zero) nos demais. alerts são avisos oficiais dos EUA e da Noruega; marine, air_quality e nowcast cobrem apenas a Noruega e águas próximas e trazem available: false nos demais lugares. Tudo em meta.derived é uma estimativa do ipto.to, e indicators são sinalizações derivadas, não avisos oficiais. Mantenha meta.attribution ao exibir os dados (os dados do MET Norway são CC BY 4.0).
O registro diário do próprio ipto.to para lugares já consultados: a máxima mais alta, a mínima mais baixa e a maior precipitação vistas nos instantâneos de previsão do dia. Só há dados para lugares já solicitados, e o histórico se acumula com o tempo.
| Parameter | In | Description |
|---|---|---|
q / lat+lon / ip | query | Onde: q (cidade, código postal ou "lat,lon"), ou lat e lon, ou ip. Um dos três é obrigatório. |
days | query | Dias recentes a retornar, 1-400. Padrão 30. |
São instantâneos de previsão, não observações de estações nem reanálise; portanto, não os use como histórico observado. 404 significa que ainda não há instantâneos registrados para esse lugar.
Os quadros de animação de radar disponíveis, do mais antigo ao mais recente, cada um com um timestamp Unix e o id do quadro a usar na URL do tile de radar.
Um tile de mapa de radar (PNG) para um quadro, em uma posição z/x/y padrão de mapa web. Servido pela mesma origem, para que um mapa o carregue sem requisição a terceiros.
| Parameter | In | Description |
|---|---|---|
frame | path | Id do quadro de /v1/weather/radar/frames (hexadecimal minúsculo). |
z | path | Nível de zoom. |
x | path | Coluna do tile. |
y | path | Linha do tile. |
Um tile de mapa de imagens de satélite para uma posição z/x/y padrão de mapa web, servido pela mesma origem.
| Parameter | In | Description |
|---|---|---|
z | path | Nível de zoom. |
x | path | Coluna do tile. |
y | path | Linha do tile. |
Contrato OpenAPI 3.1 legível por máquina para /v1/email/:email, escrito para que agentes LLM e MCP chamem o endpoint de e-mail sem ler esta documentação.
Referência de campos de busca de IP
| Field | Type | Description |
|---|---|---|
ip | string | O endereço IP consultado. |
version | string | "v4" ou "v6". |
bogon | boolean | true se este for um endereço privado, reservado ou não roteável. |
bogon_type | string|null | Código do motivo se for bogon: "loopback", "private", "link-local", "multicast", "reserved", "documentation", "unspecified". |
asn | integer|null | Número do Sistema Autônomo que anuncia este IP. |
asn_name | string|null | Nome curto do ASN (ex.: "GOOGLE"). |
asn_org | string|null | Organização registrada no ASN (ex.: "Google LLC"). |
asn_type | string|null | Categoria do ASN: "hosting", "isp", "business", "education", "government", "mobile", "residential". |
continent | string|null | Nome completo do continente (ex.: "North America"). |
continent_code | string|null | Código de continente de duas letras: AF AS EU NA SA OC AN. |
country_code | string|null | Código de país ISO 3166-1 alpha-2 (ex.: "US") do país onde o IP está localizado, a partir dos mesmos dados de geolocalização da cidade e das coordenadas. Sem correspondência de geolocalização, usa-se o país de registro do ASN (asn_country_code). Nome do país, bandeira, moeda etc. derivam dele. |
country_name | string|null | Nome completo do país em inglês (ex.: "United States"). |
country_flag | string|null | Emoji da bandeira do país (ex.: "🇺🇸"). |
is_eu | boolean | true se o país for um estado-membro da UE (27 membros). |
city | string|null | Nome da cidade. Preenchido em autoconsulta, e em consultas explícitas onde qualquer uma das fontes geográficas combinadas (IP2Location ou MaxMind) tem correspondência — verifique geo_precision. |
state | string|null | Região administrativa/subdivisão. Mesma disponibilidade de city. |
postal_code | string|null | CEP/código postal. Preenchido em autoconsulta, e em consultas explícitas onde IP2Location (preferencial) ou MaxMind tem correspondência — mesma disponibilidade de city. |
latitude | number|null | Latitude decimal. Mesma disponibilidade de city. |
longitude | number|null | Longitude decimal. Mesma disponibilidade de city. |
timezone | string|null | Fuso horário — mesma disponibilidade de city. Um identificador IANA (ex.: "America/New_York") em autoconsulta. Em consultas explícitas o formato depende de qual fonte deu match: uma string de UTC-offset como "-08:00" do IP2Location, ou um nome IANA do MaxMind. |
geo_precision | string | Quão precisos são os dados de localização: "city", "country" (a consulta em nível de cidade não teve correspondência) ou "none". |
geo_country_code | string|null | País onde o IP está localizado, segundo os dados de geolocalização (ISO 3166-1 alfa-2). Igual a country_code sempre que definido. null se não houver correspondência de geolocalização. |
asn_country_code | string|null | País de registro do titular do ASN (ISO 3166-1 alpha-2). Pode diferir de country_code em redes de CDN, VPN, hospedagem ou anycast anunciadas de um país diferente daquele em que o titular está registrado. null se o IP não tiver entrada de ASN. |
currency_code | string|null | Código de moeda ISO 4217 do país (ex.: "USD"). |
exchange_rate_usd | number|null | Unidades de moeda local por 1 USD, de um feed de taxa de referência sincronizado diariamente cobrindo 154 moedas. null para moedas fora desse conjunto. |
calling_code | string|null | Código de discagem do país incluindo o prefixo + (ex.: "+1"). |
languages | string[] | Idiomas oficiais/reconhecidos do país, em inglês. |
tld | string[] | Domínio(s) de topo de código de país, ex.: [".us"]. |
capital | string|null | Nome da capital. |
borders | string[] | Códigos ISO alpha-2 dos países fronteiriços. |
is_datacenter | boolean | true se o IP pertencer a um provedor de hospedagem ou nuvem. |
is_mobile | boolean | true se o IP estiver registrado a uma operadora móvel. |
is_residential | boolean | true se o IP for classificado como banda larga residencial. |
connection_type | string | "mobile", "datacenter" ou "unknown" — derivado da mesma classificação de is_mobile/is_datacenter. Deliberadamente não tenta uma distinção residencial-vs-corporativo: isso não é confiavelmente derivável apenas do texto do nome da organização do ASN, então um ASN que não é classificado com confiança como mobile ou datacenter permanece "unknown" em vez de ser adivinhado. |
is_bot | boolean | true se o IP estiver associado a infraestrutura de bot conhecida. |
is_proxy | boolean | true se o IP for um ponto de saída de proxy conhecido. |
is_vpn | boolean | true se o IP estiver dentro de uma faixa de servidor VPN conhecida do feed de ameaças. |
is_tor | boolean | true se o IP for um nó de saída Tor confirmado. |
is_abuser | boolean | true se o IP estiver dentro de uma faixa de rede sinalizada por múltiplos feeds de inteligência de abuso. |
abuse_score | integer|null | Pontuação de gravidade de 1 a 10 quando is_abuser é true, a partir de corroboração entre feeds. null caso contrário. |
risk_tier | string|null | "critical" (8-10), "high" (5-7) ou "medium" (3-4) — derivado de abuse_score. null se não sinalizado. |
threat_type | string|null | A categoria correspondente mais acionável quando is_tor/is_vpn/is_abuser se sobrepõem: "tor_exit" > "abuser" > "vpn". null se nenhuma corresponder. |
flags | object | Objeto compatível com versões anteriores que espelha os campos is_*. Chaves: hosting, mobile, residential, bot, blacklisted, vpn, tor, abuser. |
meta.data_version | string | Data do dataset usado na consulta (YYYY-MM-DD). "cf-edge" para autoconsulta. "bogon" para faixas privadas. |
meta.cached | boolean | true se a resposta foi servida a partir da camada de cache. |
meta.lang | string | O idioma efetivamente usado nesta resposta — corresponde a ?lang= quando informado, ou ao valor resolvido a partir de Accept-Language, ou "en". |
meta.lang_source | "param"|"header"|"default" | Como lang foi determinado: "param" (?lang= foi passado), "header" (resolvido a partir de Accept-Language), ou "default" (nenhum dos dois estava presente). |
Formatos de saída
Buscas de IP, ASN e país suportam todas ?format=.
| Format | Content-Type | Usage |
|---|---|---|
json | application/json | Padrão. Resposta estruturada completa. |
csv | text/csv | Pares chave,valor simples. Objetos aninhados omitidos. |
text | text/plain | Linhas key: value. Um campo por linha. |
xml | application/xml | Estrutura aninhada completa, arrays repetem a tag. |
yaml | application/x-yaml | Estrutura aninhada completa. |
Localização
Passe ?lang= em /v1/ip, /v1/asn/:asn ou /v1/country/:code para localizar country_name e continent. Todo o resto (nomes de organização de ASN, nomes de cidade, códigos de moeda) permanece na forma original — são identificadores e nomes próprios, não texto de interface. Códigos não suportados retornam ao inglês em vez de gerar erro.
| Code | Language |
|---|---|
en | English (default) |
pt | Português |
fr | Français |
de | Deutsch |
zh-TW | 繁體中文 |
ko | 한국어 |
zh-CN | 简体中文 |
ja-JP | 日本語 |
es-ES | Español |
ar-SA | العربية |
hi-IN | हिन्दी |
Sem ?lang=? Envie um cabeçalho Accept-Language em vez disso — os mesmos endpoints também o leem, então um simples curl -H "Accept-Language: es" https://ipto.to/v1/ip/8.8.8.8 localiza a resposta sem precisar de query string. Um ?lang= explícito sempre tem prioridade quando ambos estão presentes. Observação: a variável de ambiente do shell LANG/LC_ALL (ex.: LANG=es_ES.UTF-8 curl ...) só define o locale do próprio curl — o curl nunca a lê nem a transforma em cabeçalho, portanto ela não tem efeito no idioma da resposta. Accept-Language ou ?lang= são as duas únicas formas que realmente funcionam.
Toda resposta de /v1/ip, /v1/asn/:asn e /v1/country/:code inclui lang e lang_source (aninhado em meta no /v1/ip; no nível superior nos outros dois), para que você sempre saiba exatamente qual idioma foi aplicado e como ele foi escolhido — "param", "header" ou "default" — sem precisar adivinhar a partir da requisição que você enviou.
A localização completa de chaves e valores é o comportamento padrão sempre que você define um lang diferente do inglês — todos os campos, incluindo as chaves aninhadas flags e meta, voltam renomeados para o idioma escolhido, e os valores fixos de enumeração (risk_tier, threat_type, connection_type, geo_precision, bogon_type, asn_type) também são traduzidos. Precisa do formato antigo com chaves em inglês? Adicione &localize=0 a /v1/ip para desativar.
Exemplos de código
JavaScript
Python
PHP
Go
Limites de taxa
Os limites são aplicados por dia (UTC), contados por endereço IP no plano gratuito ou por chave no Pro/Enterprise. Exceder o seu limite retorna HTTP 429 com um cabeçalho Retry-After. Para cargas de trabalho de produção, veja preços.
Aplica-se a todo endpoint /v1/*, ao servidor /mcp, e aos atalhos curl ipto.to / curl ipto.to/:ip. GET /ip é a única exceção — um simples eco de cabeçalho sem custo de consulta, então não consome nenhum orçamento.
| Tier | Requests / day | Auth |
|---|---|---|
| Free | 1,000 | Nenhum |
| Pro | 100,000 | Chave de API (cabeçalho) |
| Enterprise | Unlimited | Chave de API + endpoints dedicados |
Códigos de erro
| Status | Meaning |
|---|---|
200 | OK. A resposta inclui os dados. |
202 | Os dados do feed estão sincronizando. Tente novamente em 45 segundos. |
400 | Requisição inválida. IP, ASN ou código de país inválido. |
404 | ASN ou país não encontrado no dataset. |
503 | Dataset ainda não disponível. A ingestão inicial pode estar em execução. |