You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Iter-52 ran an end-to-end smoke test against the live API and discovered that none of the endpoints documented as "public, no auth needed" across the SDK suite actually accept anonymous calls. Every request to api.cryptohopper.com/v1/* with no/invalid Authorization header is rejected by the AWS API Gateway in front of the API.
This affects published SDKs, freshly-merged wiki content, and pending PRs. Filing as urgent because it's a correctness bug that will bite the first user who tries to call exchange.ticker without a real OAuth token.
405 + "Missing Authentication Token" is the AWS API Gateway boilerplate response when no valid auth is provided to a route gated by an authorizer. The Cryptohopper application never sees the request — the gateway rejects it first.
With a placeholder Authorization: Bearer xxx...xxx, the gateway falls through to AWS SigV4 parsing and returns:
{"status":400,"error":1,"message":"Invalid key=value pair (missing equal-sign) in Authorization header (hashed with SHA-256 and encoded with Base64): 'A1uOw8utuISJ8z773lvbGk9w/aFfOrmJz9/ParLb8YU='."}
That's a definitive signal the gateway expects a token mapped to AWS IAM, not a stand-alone bearer.
Endpoints I documented as "public" that don't actually work
This is the painful part. The wrong "public, no auth" claim is in:
Every SDK README — installed by anyone running pip install cryptohopper, npm i @cryptohopper/sdk, etc.
Every SDK wiki — Recipes.md has "public ticker" snippets that won't run; Comparison.md (which I just rolled out to all 9 wikis in iter 50 + 51) has a public-endpoint anonymity note.
CLI README — claims cryptohopper ticker binance BTC/USDT works without auth.
SDK CI uses mocks (vitest/pytest-httpx/wiremock/MockClient/etc.) for transport tests. Unit tests passed with green.
The original plan (reference) wrote down "public endpoints accept anonymous calls" based on the swagger 2.0 file in public_html/CryptohopperAPI_1.0.0_swagger.json — the swagger doesn't model the AWS gateway authorizer that actually fronts production.
No SDK or CLI release has been smoke-tested end-to-end against the live API.
What needs to happen
1. Stop the bleed
Remove the "public, no auth" claim from:
All 9 SDK READMEs
All 9 wiki Recipes pages (the public-ticker snippets)
All 9 wiki Comparison pages (the public-endpoint note at the bottom)
I can put up a sweep PR per repo if you signal go. Wiki side is direct push (no PR queue impact).
2. Confirm what (if anything) is actually anonymous
Worth asking the API team directly: are there ANY paths on api.cryptohopper.com/v1/* that are gateway-public? If yes, list them; if no, the SDKs should be honest about it.
3. Add a real e2e smoke test to the suite
Even a single integration test per SDK that makes ONE authenticated call against the live API (using a CI-stored test token) would have caught this in seconds. Worth adding to the release workflow.
My current recommendation
Treat this as a doc bug, not a code bug. The SDK transport is correct (sends Authorization: Bearer <token> like the docs say). The only thing broken is the claim that some endpoints can be hit without that token.
Easiest path:
Now: I push wiki updates (no PR) striking the "public, no auth" claim from every Recipes + Comparison page. ~9 commits, no review.
PR pass per SDK: small PR to each SDK README + Recipes page corrections. (Adds to queue but they're 1-3 line edits each.)
Decision before next release: do we want any actual anonymous endpoints? If yes, the API team needs to configure the gateway accordingly. If no, every SDK example needs a real token.
Going to wait for your signal before sweeping. Wanted to surface this fast.
Iter-52 ran an end-to-end smoke test against the live API and discovered that none of the endpoints documented as "public, no auth needed" across the SDK suite actually accept anonymous calls. Every request to
api.cryptohopper.com/v1/*with no/invalid Authorization header is rejected by the AWS API Gateway in front of the API.This affects published SDKs, freshly-merged wiki content, and pending PRs. Filing as urgent because it's a correctness bug that will bite the first user who tries to call
exchange.tickerwithout a real OAuth token.Reproduction
405 + "Missing Authentication Token"is the AWS API Gateway boilerplate response when no valid auth is provided to a route gated by an authorizer. The Cryptohopper application never sees the request — the gateway rejects it first.With a placeholder
Authorization: Bearer xxx...xxx, the gateway falls through to AWS SigV4 parsing and returns:That's a definitive signal the gateway expects a token mapped to AWS IAM, not a stand-alone bearer.
Endpoints I documented as "public" that don't actually work
/exchange/ticker/exchange/markets/exchange/exchanges/exchange/candle/exchange/orderbook/exchange/forex-rates/market/homepage/market/items/market/signals/tournaments/active/platform/*Where the wrong claim has shipped
This is the painful part. The wrong "public, no auth" claim is in:
pip install cryptohopper,npm i @cryptohopper/sdk, etc.Recipes.mdhas "public ticker" snippets that won't run;Comparison.md(which I just rolled out to all 9 wikis in iter 50 + 51) has a public-endpoint anonymity note.cryptohopper ticker binance BTC/USDTworks without auth.docs/sdks.md) — likely mentions it.public-ticker.tsclaims to need no token. Won't actually work.Why this slipped through
public_html/CryptohopperAPI_1.0.0_swagger.json— the swagger doesn't model the AWS gateway authorizer that actually fronts production.What needs to happen
1. Stop the bleed
Remove the "public, no auth" claim from:
docs/sdks.md) — needs amending before mergedocs/cli.md) — samepublic-ticker.tsexample) — needs auth or removalI can put up a sweep PR per repo if you signal go. Wiki side is direct push (no PR queue impact).
2. Confirm what (if anything) is actually anonymous
Worth asking the API team directly: are there ANY paths on
api.cryptohopper.com/v1/*that are gateway-public? If yes, list them; if no, the SDKs should be honest about it.3. Add a real e2e smoke test to the suite
Even a single integration test per SDK that makes ONE authenticated call against the live API (using a CI-stored test token) would have caught this in seconds. Worth adding to the release workflow.
My current recommendation
Treat this as a doc bug, not a code bug. The SDK transport is correct (sends
Authorization: Bearer <token>like the docs say). The only thing broken is the claim that some endpoints can be hit without that token.Easiest path:
Going to wait for your signal before sweeping. Wanted to surface this fast.