Bitculator

Changelog

Changelog da API

Todas as alterações na Data API e no seu contrato, as mais recentes primeiro. Os números de versão seguem a política de versionamento e descontinuação.

  1. v1.3.3 Alterado

    Criação e teste de webhooks limitados a 5 solicitações por minuto

    POST /webhooks e POST /webhooks/{id}/test agora compartilham um limite de 5 solicitações por minuto por conta, além do limite de rajada do plano. As solicitações acima dele recebem 429 rate_limited com Retry-After. Um evento de teste agora é enviado uma única vez, sem novas tentativas; as demais entregas continuam sendo tentadas até 3 vezes, com backoff entre as tentativas. Este é um limite contra abuso e deixa inalterados a cota mensal e o limite de rajada de cada plano. A política de versionamento e descontinuação foi alterada no mesmo dia para que limites assim possam entrar em vigor imediatamente; até então, reduzir qualquer limite de taxa que um plano tivesse seguia o cronograma de descontinuação de seis meses. Nesses dois endpoints, os cabeçalhos X-RateLimit-* mostram qual dos dois limites tem menos solicitações restantes.

  2. v1.3.3 Alterado

    Nomes de host dos webhooks resolvidos na entrega, não na criação

    POST /webhooks não resolve mais o nome de host da URL. Continua retornando 422 quando a URL não usa https, contém credenciais ou tem como host um endereço IP não público. Um nome de host que não resolve, ou que resolve para um endereço não público, antes recebia 422; agora é aceito com 201 e conta para o limite de 5 endpoints por conta. Cada entrega para esse endpoint falha então sem novas tentativas, error em GET /webhooks/{id}/deliveries informa o motivo, e 10 entregas com falha seguidas desativam o endpoint. Depois de criar um endpoint, envie a ele um evento de teste com POST /webhooks/{id}/test e confira o registro de entregas para verificar se está acessível.

  3. v1.3.3 Alterado

    O detalhamento de uso mostra modelos de rota, não caminhos

    endpoints[].endpoint em GET /usage agora indica o modelo de rota em vez do caminho solicitado, ou seja, api/v1/coins/{slug} em vez de api/v1/coins/bitcoin, de modo que cada endpoint tem uma única linha em vez de uma por slug ou id. As solicitações registradas antes no período de cobrança atual mantêm o caminho, então as duas formas podem aparecer até o fim do período.

  4. v1.3.2 Corrigido

    Perfil e trust score de exchanges corrigidos

    GET /exchanges/{slug} e GET /exchanges/{slug}/trust-score falhavam com 500 para todas as exchanges desde o lançamento da Data API. Agora ambos respondem; os parâmetros e os campos de resposta não mudam, e uma exchange sem ranking retorna score e breakdown como null.

  5. v1.3.2 Alterado

    Tipos do contrato corrigidos

    O contrato OpenAPI publicado agora marca como nullable todo campo que pode ser null e tipa os valores fracionários como números (por exemplo invested em GET /calculators/dca e os valores dos indicadores); os campos comuns logo, last_updated e from/to da paginação são nullable em todos os endpoints, assim como o name e o price das moedas em todos os endpoints de listas de moedas e de preços. O contrato também tipa a series do DCA como array, documenta as respostas de GET /coins/{slug}/markets, GET /coins/losers, GET /global/history/{metric} e GET /sentiment/altseason, documenta days em GET /sentiment/altseason como 1–365 (o 0 sempre foi rejeitado; omita-o para obter a leitura atual) e lista os códigos endpoint_unavailable (503) e http_error no esquema de erro. Nenhuma solicitação ou resposta mudou - apenas a forma como são descritas.

  6. v1.3.1 Alterado

    Falhas de autenticação limitadas por chave

    As falhas de autenticação eram limitadas a 30 tentativas por minuto por IP; depois disso, todas as chaves por trás desse IP recebiam 429. Agora uma chave pode falhar 30 vezes por minuto a partir de um IP e um IP pode falhar 300 vezes, as chaves que se autenticaram aproximadamente nos últimos 15 minutos não são bloqueadas pelo limite por IP, e uma solicitação sem chave retorna 401 sem ser contada. As solicitações bloqueadas recebem 429 rate_limited com Retry-After.

  7. v1.3.1 Alterado

    URLs não canônicas são redirecionadas

    Solicitações GET e HEAD cujo caminho tem uma barra final, uma barra duplicada ou um /index.php no início agora recebem um 301 para a URL limpa em vez de serem atendidas - por exemplo, de /api/v1/coins/ para /api/v1/coins. Os outros métodos não são afetados.

  8. v1.3.1 Corrigido

    Os períodos de capitalização parciais são contados com exatidão

    GET /calculators/compound-interest arredondava a duração para períodos de capitalização inteiros, pelo que uma duração que terminava a meio de um período era simulada demasiado longa ou demasiado curta: 6 meses com capitalização annually abrangiam um ano inteiro (12 aportes e um ano completo de juros) e 5 meses não abrangiam nenhum período (sem aportes, sem juros). Os períodos inteiros são agora calculados como antes, o último período parcial rende juros pro rata (juros simples sobre a fração) e cada aporte dentro da duração é contado. Os resultados não mudam quando a duração é um número inteiro de períodos de capitalização; os parâmetros e os campos de resposta não mudam.

  9. v1.3.0 Alterado

    A taxa dos juros compostos é anual, não por período

    A API e a sua documentação tratavam rate como a taxa por período de capitalização, enquanto a calculadora do site e o seu guia usavam uma taxa anual. GET /calculators/compound-interest aplicava rate por inteiro a cada período de capitalização, de modo que 5% com capitalização mensal cresciam como 5% ao mês. rate é agora a taxa nominal anual: cada período rende rate dividida pelo número de períodos por ano (5% com capitalização mensal rendem 5/12% ao mês), como meta.note agora indica. Os parâmetros e os campos da resposta não mudam; os resultados mudam em todas as frequências de capitalização, exceto annually. Além disso, quando contribution_frequency e compound_frequency são ambas daily ou ambas weekly, os depósitos deixam de ser atrasados ou perdidos por arredondamentos de vírgula flutuante, pelo que total_contributions pode incluir mais um depósito com duration_unit=months. Isto altera o significado de um parâmetro existente: para reproduzir os resultados anteriores, multiplique o seu rate pelo número de períodos de capitalização por ano.

  10. v1.2.0 Adicionado

    Índice Fear & Greed (0–100) ao lado do score bruto

    Cada leitura de Fear & Greed agora inclui index ao lado de score: o índice Fear & Greed de 0 a 100 exatamente como exibido na Bitculator (0–19 medo extremo, 20–39 medo, 40–59 neutro, 60–79 ganância, 80–100 ganância extrema) — use-o para exibição. score não mudou: é o composto bruto de −100…+100 do qual index é derivado. Aplica-se a GET /sentiment/fear-greed (a leitura principal e cada entrada de intervals), a fear_greed em GET /global e a meta.fear_greed em GET /global/heatmap. Apenas uma adição; nenhum campo existente foi alterado.

  11. v1.1.2 Corrigido

    Avaliação totalmente diluída desconhecida é null

    GET /coins/{slug} retornava fully_diluted_valuation como 0 para moedas sem oferta máxima (por exemplo Solana e Ethereum, cuja oferta não tem teto). Agora recorre à oferta total e é null quando nenhuma é conhecida, como o contrato OpenAPI já documentava.

  12. v1.1.2 Corrigido

    Fear & Greed sem dados suficientes é null

    Uma leitura de Fear & Greed que ainda não tinha score era informada como score: 0. Agora é null em GET /sentiment/fear-greed, assim como fear_greed em GET /global e meta.fear_greed em GET /global/heatmap.

  13. v1.1.1 Corrigido

    Valores nulos, ordenação e movers corrigidos

    marketcap e dominance podem ser null para uma moeda sem oferta em circulação, e o score e o breakdown do trust score são null para uma exchange sem ranking. POST /alarms retorna 422 quando a moeda não tem valor atual para a métrica escolhida. /coins/recently-added e /wallets/timeline passam a respeitar sort. /coins/gainers e /coins/losers são ordenados pela própria variação (antes, na prática, pela capitalização de mercado), e os losers excluem as moedas em 0.00. As ordenações ascendentes retornam os valores nulos por último. /prices resolve um símbolo ambíguo para a moeda ativa mais bem classificada. O contrato OpenAPI marca os campos de mercado que podem ser null e tipa o volume 24h como número.

  14. v1.1.1 Adicionado

    Os insights informam que foram escritos por IA

    Cada insight em GET /insights, GET /insights/{id} e GET /coins/{slug}/insights agora traz generated_by: "ai" e o model que o escreveu. Apenas uma adição; nenhum campo existente mudou.

  15. v1.1.1 Alterado

    Huobi agora é HTX; CoinEx inativa

    A exchange Huobi foi renomeada para HTX e o seu slug mudou de huobi para htx; a API não segue redirecionamentos de slug, então /exchanges/huobi agora retorna 404. A CoinEx foi definida como inativa e não é mais retornada.

  16. v1.1.1 Corrigido

    Variações de 24h e 7d desatualizadas são null

    change_24h e change_7d agora são null quando as variações de uma moeda não são recalculadas há 15 minutos, em vez de mostrarem um movimento desatualizado. Desde 18 de setembro, o mesmo vale para change_rank_24h e change_rank_7d.

  17. v1.1.0 Alterado

    Contrato OpenAPI enriquecido

    O contrato publicado agora traz exemplos no nível do media type, um único esquema de erro compartilhado referenciado por todas as respostas 4xx/5xx, as respostas 401, 429 e 500 que qualquer chamada com chave pode retornar, os cabeçalhos X-RateLimit-* e X-Quota-* em todas as respostas de sucesso, a entrega alarm.triggered como callback em POST /webhooks, e os metadados de contato, licença e termos. Nenhuma solicitação ou resposta mudou - apenas a forma como são descritas.

  18. v1.1.0 Adicionado

    Descoberta legível por máquina

    Novo: /apis.json, /.well-known/api-catalog (RFC 9727), /.well-known/security.txt (RFC 9116), um bundle JSON Schema com os formatos de resposta compartilhados, uma página de status pública com sua versão gêmea em JSON, este changelog e a política de versionamento e descontinuação.

  19. v1.0.1 Alterado

    A cota da Data API não é mais compartilhada com o MCP

    As chamadas de ferramentas MCP deixaram de contar para a cota mensal e o limite de rajada do plano da Data API; desde esse dia, o servidor MCP tem chaves e planos próprios. tokens[].kind em GET /usage agora pode ser mcp, e a mensagem do 429 por cota esgotada diz "Your Data API plan has reached its monthly request limit." (antes mencionava o plano de embed).

  20. v1.0.1 Alterado

    E-mail verificado exigido para criar chaves

    Criar ou rotacionar uma chave da Data API no console de desenvolvedor agora exige um endereço de e-mail verificado; contas sem e-mail, como as de login com wallet, estão isentas. A criação de chaves é limitada a 10 por minuto. As chaves existentes continuam funcionando.

  21. v1.0.1 Corrigido

    Os volumes dos tickers mantêm os centavos

    volume_usd em GET /tickers, GET /pairs, GET /pairs/{id}, GET /coins/{slug}/markets e GET /exchanges/{slug}/tickers era armazenado como número inteiro, então os centavos se perdiam e mercados abaixo de US$ 0,50 mostravam 0. Agora os volumes mantêm duas casas decimais, e os totais calculados a partir deles não herdam mais o arredondamento.

  22. v1.0.1 Alterado

    A variação do sparkline é um percentual em todos os períodos

    change em GET /coins/{slug}/sparkline e GET /exchanges/{slug}/sparkline era uma fração para 30d a 365d (0,05 significava +5%), mas um percentual para 24h e 7d. Agora é um percentual em todos os períodos (1.25 significa +1,25%), então os valores dos períodos mais longos são 100 vezes maiores do que antes, e movimentos abaixo de 0,5% não são mais arredondados para 0.

  23. v1.0.1 Corrigido

    Mínima e máxima do sparkline coincidem com a série

    Nos dois endpoints de sparkline, low e high vinham de um resumo calculado sobre outra janela e podiam contradizer points - por exemplo, um low acima dos preços da série. Agora são os extremos reais do período do qual points é amostrado.

  24. v1.0.1 Alterado

    Wallets vaporware são listadas

    GET /wallets, /wallets/timeline, /wallets/compare, /wallets/{slug} e /wallets/{slug}/assets agora também retornam wallets com o status vaporware, então status pode ter esse valor.

  25. v1.0.1 Corrigido

    Texto das fontes dos insights decodificado

    O title e o excerpt das fontes dentro dos insights não contêm mais entidades HTML brutas como í.

  26. v1.0.1 Corrigido

    O updated_at dos artigos mostra a última edição

    Para um artigo que nunca foi editado, updated_at em GET /articles e GET /articles/{slug} mostrava a última vez que o registro mudou por qualquer motivo, como uma contagem de visualizações ou um voto. Agora mostra a última edição editorial, recorrendo à data de publicação, e POST /articles/{slug}/feedback não o altera mais.

  27. v1.0.1 Adicionado

    Sentimento dos insights

    Os insights agora incluem sentiment: bullish, bearish, sheepish ou null quando não classificados.

  28. v1.0.1 Adicionado

    Oito SDKs oficiais

    Clientes TypeScript, Python, PHP, Go, Rust, Java, C# e C++, cada um cobrindo todos os endpoints sobre o mesmo núcleo de transporte: autenticação Bearer, desempacotamento do envelope, captura de X-Quota-*, novas tentativas em 429 e 5xx, erros tipados e paginação.

  29. v1.0.1 Alterado

    Endpoints restritos por plano

    Os endpoints agora podem exigir um plano. Na introdução, GET /sentiment/indicators exigia Pro, e GET /sentiment/bull-bear, GET /sentiment/altseason, GET /global, GET /global/heatmap e GET /global/history/{metric} exigiam Starter. Uma chamada fora do seu plano retorna 403 plan_required com details.required_plan indicando o plano que a desbloqueia, e não consome cota.

  30. v1.0.1 Alterado

    Endpoints de liquidações desativados

    Os seis endpoints /liquidations foram desativados em todos os planos: retornam 503 endpoint_unavailable ("This endpoint is temporarily unavailable.") e não consomem cota.

  31. v1.0.1 Alterado

    Cota do Pro reduzida para 250.000

    A cota mensal do plano Pro passou de 500.000 para 250.000 solicitações.

  32. v1.0.1 Alterado

    Um endpoint por indicador

    O endpoint genérico GET /coins/{slug}/indicators/{family} virou 13 endpoints documentados separadamente nos mesmos caminhos: rsi, stoch-rsi, sma, cci, mfi, williams-r, price-volatility, volume-volatility, macd, obv, adx, vwap e cmf. As chamadas existentes não mudam; um nome de indicador desconhecido agora recebe um simples 404, sem a lista de nomes válidos.

  33. v1.0.1 Alterado

    Planos e cota próprios para a Data API

    No lançamento, as chamadas da Data API e as solicitações de widgets de embed consumiam um único pool mensal vinculado ao plano de embed. A Data API agora tem seus próprios planos Free, Starter e Pro, assinatura e cota mensal, com seu próprio período de cobrança: o mês civil em UTC no Free e ancorado ao dia de renovação nos planos pagos. GET /ping e GET /usage informam o plano da Data API, e /usage conta apenas chamadas da Data API. Os limites não mudaram na separação.

  34. v1.0.1 Alterado

    URLs da documentação alteradas

    A referência passou de /{locale}/documentation para /{locale}/documentation/api/v1, e a coleção Postman e o YAML OpenAPI passaram de /documentation.postman e /documentation.openapi para /documentation/api/v1.postman e /documentation/api/v1.openapi. Os caminhos antigos foram removidos sem redirecionamentos; /api/v1/openapi.json não mudou.

  35. v1.0.0 Adicionado

    Data API v1

    Lançamento: 73 operações em 15 grupos - moedas, preços, mercados, exchanges, wallets, global, sentimento, indicadores, liquidações, conversão, calculadoras, editorial, alarmes, webhooks e meta. Chaves Bearer com a capacidade data-api, o envelope { data, meta }, precisão em strings decimais, cabeçalhos X-Quota-* e webhooks assinados. As chamadas da Data API e as solicitações de widgets de embed compartilhavam uma única cota mensal no plano de embed, e as janelas mais longas de indicadores exigiam Starter.

Fique informado

As descontinuações são anunciadas aqui e por e-mail a todos os titulares de chave pelo menos seis meses antes da remoção - veja a política de descontinuação. O índice legível por máquina em /apis.json traz a data da entrada mais recente como seu carimbo modified.