Codego CryptoNodes · v0.4 · Multi-chain blockchain API

CryptoNodes API Reference

Bare-metal multi-chain blockchain infrastructure served from our own full nodes (no third-party indexer): JSON-RPC proxy, REST data endpoints, Wallet-as-a-Service and webhooks — across BTC, LTC, DOGE, DASH, XRP, ETH and TRON (Polygon syncing). Every endpoint below shows a ready-to-run request in cURL, Node.js, Python, PHP, Go and Ruby, plus the JSON response, per-field tables and the exact error codes the route returns.

Base URL  https://cryptonodes.codegotech.com

Authentication

Two credential types. Sign-up, login and API-key/webhook management are done on the website only (cryptonodes.codegotech.com) — there is no programmatic auth or key-management API.

CredentialHeaderUsed for
API keyX-API-Key: cn_live_…RPC, REST Data, WaaS — programmatic access. Format cn_(live|test)_ + 20–40 url-safe chars. Stored as a sha256 hash; never recoverable. Also accepted as ?apikey= query param.
Dashboard JWTAuthorization: Bearer eyJ…Console reads/CRUD: usage (and WaaS, which also accepts a JWT). Issued by logging in on the website.
An IP allowlist is MANDATORY for every API-key request. Configure allowed IPs/CIDRs per key (takes precedence) or tenant-wide in the dashboard. The real client IP is read from CF-Connecting-IP (set by Cloudflare), falling back to X-Real-IP. If no list is configured → 403 ip_allowlist_required; if the caller IP is not in the list → 403 ip_not_allowed (with the observed client_ip).
The API key is resolved to its tenant & plan, then a 30s positive / 60s negative auth cache applies — a freshly created/revoked key may take up to ~1 minute to take effect.

Errors & rate limits

Standard HTTP status codes. Every error body is JSON with an error code (machine-readable) and usually a message and extra context fields. Each endpoint page below lists its own specific error table; this is the global overview.

StatuserrorMeaning
400invalid_body / batch_too_large / missing_fields / bounded_range_required / …Malformed request, missing/invalid params, or a per-family constraint violated
401missing_api_key / invalid_api_key_format / invalid_api_key / missing_token / invalid_tokenMissing or wrong credential
403ip_allowlist_required / ip_not_allowed / chain_not_in_plan / chain_not_in_key / method_not_allowed / plan_limit_reached / waas_not_in_plan / plan_too_lowIP gate, plan/key chain scoping, method allowlist, or a plan cap hit
404chain_not_found / chain_not_supported / wallet_not_found / not_foundUnknown chain or resource
429ip_banned / rate_limit_exceeded / quota_exceededIP temp-banned (50 abuse events / 300s → 1800s ban), per-second throughput, or daily credit quota exceeded
501trc20_reads_unavailableTRON node without --support-constant — TRC-20 read calls unavailable
502 / 503upstream_error / wallet_create_failed / send_failed / chain_not_ready / chain_not_active / rpc_bridge_not_configuredChain node / vault unavailable, or chain still syncing

Credit weighting & rate-limit headers

Rate limiting is credit-weighted, not per-request. Each RPC/Data response sets X-Credits-Cost (credits this call consumed; heavy methods such as eth_getLogs, debug_*, trace_*, scantxoutset and archive reads cost > 1 — for a batch it is the sum). Both the per-second limit and the daily quota are enforced in credits and are per-account (shared across every API key — extra keys never multiply your budget).

HeaderMeaning
X-Credits-CostCredits this request consumed
RateLimit-Limit / RateLimit-Remaining / RateLimit-ResetIETF draft headers (per-second window)
RateLimit-Policye.g. 50;w=1, 5000000;w=86400 (per-second; per-day)
X-RateLimit-Limit/Remaining-SecondLegacy per-second budget
X-RateLimit-Limit/Remaining-DayLegacy daily credit budget
Retry-AfterOn 429 — seconds until you may retry

On a per-second breach you get 429 rate_limit_exceeded (scope:"second"); on daily exhaustion 429 quota_exceeded (scope:"day"). Dedicated-lane keys are bumped to 1000 RPS and an effective plan rank of pro.