Skip to content

Nodely

Nodely is a third-party infrastructure provider, based in Poland, that runs public algod and indexer endpoints for Algorand. The free tier needs no registration or API token, and AlgoKit uses it as the default endpoint for TestNet and MainNet.

Nodely sets its own availability, limits, and pricing, and can change them. This page records what Nodely’s documentation states at the time of writing, and the Additional Resources section links to the source for each figure.

The sections below list the free endpoints and what they support, the example requests and error responses, the failover hostnames, the legacy hostnames, and the free-tier limits.

Each endpoint listens on port 443. SDK configuration takes the base URL as listed, with no /v2 or trailing /.

NetworkServiceEndpoint
MainNetalgodhttps://mainnet-api.4160.nodely.dev
MainNetindexerhttps://mainnet-idx.4160.nodely.dev
TestNetalgodhttps://testnet-api.4160.nodely.dev
TestNetindexerhttps://testnet-idx.4160.nodely.dev
BetaNetalgodhttps://betanet-api.4160.nodely.dev
BetaNetindexerhttps://betanet-idx.4160.nodely.dev
FNetalgodhttps://fnet-api.4160.nodely.dev
FNetindexerhttps://fnet-idx.4160.nodely.dev
CapabilityDetail
Archival dataEvery free algod and indexer endpoint is archival
API surfaceUnmodified algod v2 and indexer v2 APIs
Developer endpointsEnabled on algod: /v2/teal/compile, /v2/teal/disassemble, and /v2/transactions/async
AuthenticationNone. Requests carry no X-Algo-API-Token header
Browser accessResponses include access-control-allow-origin: *, so frontend code can call the endpoints directly
DistributionPrimary endpoints are served through Cloudflare from 19 regions
SDK compatibilityStandard Algorand SDKs and AlgoKit Utils work without changes, because the API is unmodified
SupportBest effort, per Nodely’s pricing page. The free tier has no service level agreement (SLA)

A status request against TestNet algod needs no headers:

curl https://testnet-api.4160.nodely.dev/v2/status

The response is the standard algod /v2/status body. An excerpt:

{
"catchup-time": 0,
"last-round": 67776061,
"next-version-round": 67776062,
"next-version-supported": true
}

A request for a round the ledger has not reached returns 404:

curl https://testnet-api.4160.nodely.dev/v2/blocks/999999999
{ "message": "failed to retrieve information from the ledger" }

The free-tier limit errors, 429 and 403, are listed under Errors.

Nodely publishes three hostname families for MainNet and TestNet. Each family runs on separate delivery infrastructure, so an outage at one content delivery network (CDN) leaves the other two reachable. In the patterns below, {net} is mainnet or testnet.

RolealgodindexerDelivery
Primary{net}-api.4160.nodely.dev{net}-idx.4160.nodely.devCloudflare, 19 regions
Backup{net}-api.algonode.xyz{net}-idx.algonode.xyzBunny CDN, 19 regions
Disaster recovery{net}-api.algonode.network{net}-idx.algonode.networkDomain Name System (DNS) failover, no CDN, 12 regions

Nodely recommends that backends switch between these sets automatically or behind a feature flag when the primary CDN fails.

The older algonode.cloud hostnames remain in service. Nodely documents them as legacy endpoints on the same infrastructure under the same rules, and has not published a retirement date.

Networkalgodindexer
MainNethttps://mainnet-api.algonode.cloudhttps://mainnet-idx.algonode.cloud
TestNethttps://testnet-api.algonode.cloudhttps://testnet-idx.algonode.cloud
BetaNethttps://betanet-api.algonode.cloudhttps://betanet-idx.algonode.cloud

AlgoKit resolves to these hostnames by default. ClientManager.getAlgoNodeConfig() in AlgoKit Utils returns an algonode.cloud URL, and algokit project deploy testnet and algokit project deploy mainnet derive their defaults from it.

To point a deploy at a different endpoint, see Overriding the Default Endpoint.

Both names refer to the same service. Nodely is the operating company and AlgoNode is the earlier service brand. The AlgoNode name survives in three places:

  • The algonode.cloud legacy hostnames.
  • The algonode.xyz and algonode.network failover hostnames. These are current, not legacy.
  • AlgoKit Utils API names: ClientManager.getAlgoNodeConfig() in TypeScript and ClientManager.get_algonode_config() in Python.

Nodely applies quotas per project or site, and rate limits per user or Internet Protocol (IP) address.

LimitValueApplies to
Monthly requests6,000,000Project
Daily requests200,000Project
Monthly response volume150 GBProject
Daily response volume5 GBProject, user
Requests per second60User
Requests per second, all regions1,000Site
Transaction submissions per second18User
Concurrent calls10User
Added latency150 ms, or 250 ms for archival requestsEvery request

Nodely’s quickstart page states the added latency as 50 ms. The fair usage policy states 150 ms, and this page uses the policy figure.

StatusCause
429The per-second rate limit or the concurrency limit was exceeded
403The daily request quota or the daily response volume was exceeded

Failed requests count toward the quota. Nodely asks that clients apply exponential backoff after a 429 and not retry immediately.

Projects issuing more than one million requests per month are asked to credit Nodely on their site. Public-good projects can apply to Nodely’s public goods program for an allowance above the free tier.

Nodely sells Unlimited, Business, and Enterprise tiers above the free tier, which differ in throughput, SLA, and support. Nodely Pricing under Additional Resources lists the current terms.

The free tier stops fitting an application when any of these hold:

  • Sustained traffic approaches the daily or monthly quota, or bursts past 60 requests per second.
  • The added 150 ms of latency is too slow for the application.
  • The application needs an SLA.
  • Query patterns or client addresses cannot be routed through a third party.

For a self-hosted setup, see Algorand Node Types for hardware requirements and Indexer Installation for historical queries.