My keys are valid for Binance.US. For spot trading. I am on the open source version 2. The keys were accepted before all the new updates. What has happened?
Hello! Thank you for reaching out and reporting this issue. We have received your report regarding the API keys not being valid for spot trading on Binance.US with the open-source version 2, and our team will look into this and update you shortly.
Could you please let us know if this issue is specifically affecting a particular bot? If so, please provide the bot URL so we can investigate further. Thank you for us to help you troubleshoot, if there are any specific deals associated with this, please share the deal ID as well.
That means either wrong permission (read only) or wrong IP whitelisting. Make sure the API whitelist includes your IPs and your server, not Gainiumâs IPs. You can also try recreating the api key, sometimes the second time works.
I created another key, ensured spot trading was checked, even enabled unrestricted IPâs. Still same error message.
Unfortunately I cannot test this as I have no Binance.US account. If you can create a subaccount with no funds and share your api key/secret in a DM I could check on my computer.
index-BFJb8nR7.js:50 [2026-07-02T14:20:06.311Z] [GraphQLClient] ERROR: HTTP error {status: 400, statusText: âBad Requestâ, endpoint: âhttp://localhost:7503â, responseBody: â{âerrorsâ:[{âmessageâ:"Cannot query field \âassetCâŚensionsâ:{âcodeâ:âGRAPHQL_VALIDATION_FAILEDâ}}]}\nâ, graphQLErrors: Array(1), âŚ}
writeToConsole @ index-BFJb8nR7.js:50
log @ index-BFJb8nR7.js:50
error @ index-BFJb8nR7.js:50
makeActualRequest @ index-BFJb8nR7.js:51
await in makeActualRequest
request @ index-BFJb8nR7.js:51
await in request
queryFn @ index-BFJb8nR7.js:7113
fetchFn @ index-BFJb8nR7.js:2
run @ index-BFJb8nR7.js:2
start @ index-BFJb8nR7.js:2
fetch @ index-BFJb8nR7.js:2
#executeFetch @ index-BFJb8nR7.js:2
setOptions @ index-BFJb8nR7.js:2
(anonymous) @ index-BFJb8nR7.js:2
commitHookEffectListMount @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
flushPassiveEffects @ index-BFJb8nR7.js:47
flushPendingEffects @ index-BFJb8nR7.js:47
flushSpawnedWork @ index-BFJb8nR7.js:47
commitRoot @ index-BFJb8nR7.js:47
commitRootWhenReady @ index-BFJb8nR7.js:47
performWorkOnRoot @ index-BFJb8nR7.js:47
performSyncWorkOnRoot @ index-BFJb8nR7.js:47
flushSyncWorkAcrossRoots_impl @ index-BFJb8nR7.js:47
processRootScheduleInMicrotask @ index-BFJb8nR7.js:47
(anonymous) @ index-BFJb8nR7.js:47
index-BFJb8nR7.js:50 [2026-07-02T14:20:06.312Z] [general] ERROR: GraphQL request failed {error: âHTTP error! status: 400 - Cannot query field âassetCategoryâ on type âpairDetailedInfoâ.â, endpoint: âhttp://localhost:7503â, query: âquery getAllPairs{\n getAllPairs{\n ⌠pair\n exchaâŚâ}
writeToConsole @ index-BFJb8nR7.js:50
log @ index-BFJb8nR7.js:50
error @ index-BFJb8nR7.js:50
makeActualRequest @ index-BFJb8nR7.js:51
await in makeActualRequest
request @ index-BFJb8nR7.js:51
await in request
queryFn @ index-BFJb8nR7.js:7113
fetchFn @ index-BFJb8nR7.js:2
run @ index-BFJb8nR7.js:2
start @ index-BFJb8nR7.js:2
fetch @ index-BFJb8nR7.js:2
#executeFetch @ index-BFJb8nR7.js:2
setOptions @ index-BFJb8nR7.js:2
(anonymous) @ index-BFJb8nR7.js:2
commitHookEffectListMount @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
flushPassiveEffects @ index-BFJb8nR7.js:47
flushPendingEffects @ index-BFJb8nR7.js:47
flushSpawnedWork @ index-BFJb8nR7.js:47
commitRoot @ index-BFJb8nR7.js:47
commitRootWhenReady @ index-BFJb8nR7.js:47
performWorkOnRoot @ index-BFJb8nR7.js:47
performSyncWorkOnRoot @ index-BFJb8nR7.js:47
flushSyncWorkAcrossRoots_impl @ index-BFJb8nR7.js:47
processRootScheduleInMicrotask @ index-BFJb8nR7.js:47
(anonymous) @ index-BFJb8nR7.js:47
index-BFJb8nR7.js:7113 [useGraphQL] Request error: {key: âgetAllPairsâ, message: âHTTP error! status: 400 - Cannot query field âassetCategoryâ on type âpairDetailedInfoâ.â}
queryFn @ index-BFJb8nR7.js:7113
await in queryFn
fetchFn @ index-BFJb8nR7.js:2
run @ index-BFJb8nR7.js:2
start @ index-BFJb8nR7.js:2
fetch @ index-BFJb8nR7.js:2
#executeFetch @ index-BFJb8nR7.js:2
setOptions @ index-BFJb8nR7.js:2
(anonymous) @ index-BFJb8nR7.js:2
commitHookEffectListMount @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
flushPassiveEffects @ index-BFJb8nR7.js:47
flushPendingEffects @ index-BFJb8nR7.js:47
flushSpawnedWork @ index-BFJb8nR7.js:47
commitRoot @ index-BFJb8nR7.js:47
commitRootWhenReady @ index-BFJb8nR7.js:47
performWorkOnRoot @ index-BFJb8nR7.js:47
performSyncWorkOnRoot @ index-BFJb8nR7.js:47
flushSyncWorkAcrossRoots_impl @ index-BFJb8nR7.js:47
processRootScheduleInMicrotask @ index-BFJb8nR7.js:47
(anonymous) @ index-BFJb8nR7.js:47
index-BFJb8nR7.js:50 [2026-07-02T14:20:07.387Z] [GraphQLClient] ERROR: HTTP error {status: 400, statusText: âBad Requestâ, endpoint: âhttp://localhost:7503â, responseBody: â{âerrorsâ:[{âmessageâ:"Cannot query field \âassetCâŚensionsâ:{âcodeâ:âGRAPHQL_VALIDATION_FAILEDâ}}]}\nâ, graphQLErrors: Array(1), âŚ}
writeToConsole @ index-BFJb8nR7.js:50
log @ index-BFJb8nR7.js:50
error @ index-BFJb8nR7.js:50
makeActualRequest @ index-BFJb8nR7.js:51
await in makeActualRequest
request @ index-BFJb8nR7.js:51
await in request
queryFn @ index-BFJb8nR7.js:7113
fetchFn @ index-BFJb8nR7.js:2
run @ index-BFJb8nR7.js:2
(anonymous) @ index-BFJb8nR7.js:2
Promise.then
(anonymous) @ index-BFJb8nR7.js:2
Promise.catch
run @ index-BFJb8nR7.js:2
start @ index-BFJb8nR7.js:2
fetch @ index-BFJb8nR7.js:2
#executeFetch @ index-BFJb8nR7.js:2
setOptions @ index-BFJb8nR7.js:2
(anonymous) @ index-BFJb8nR7.js:2
commitHookEffectListMount @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
flushPassiveEffects @ index-BFJb8nR7.js:47
flushPendingEffects @ index-BFJb8nR7.js:47
flushSpawnedWork @ index-BFJb8nR7.js:47
commitRoot @ index-BFJb8nR7.js:47
commitRootWhenReady @ index-BFJb8nR7.js:47
performWorkOnRoot @ index-BFJb8nR7.js:47
performSyncWorkOnRoot @ index-BFJb8nR7.js:47
flushSyncWorkAcrossRoots_impl @ index-BFJb8nR7.js:47
processRootScheduleInMicrotask @ index-BFJb8nR7.js:47
(anonymous) @ index-BFJb8nR7.js:47
index-BFJb8nR7.js:50 [2026-07-02T14:20:07.388Z] [general] ERROR: GraphQL request failed {error: âHTTP error! status: 400 - Cannot query field âassetCategoryâ on type âpairDetailedInfoâ.â, endpoint: âhttp://localhost:7503â, query: âquery getAllPairs{\n getAllPairs{\n ⌠pair\n exchaâŚâ}
writeToConsole @ index-BFJb8nR7.js:50
log @ index-BFJb8nR7.js:50
error @ index-BFJb8nR7.js:50
makeActualRequest @ index-BFJb8nR7.js:51
await in makeActualRequest
request @ index-BFJb8nR7.js:51
await in request
queryFn @ index-BFJb8nR7.js:7113
fetchFn @ index-BFJb8nR7.js:2
run @ index-BFJb8nR7.js:2
(anonymous) @ index-BFJb8nR7.js:2
Promise.then
(anonymous) @ index-BFJb8nR7.js:2
Promise.catch
run @ index-BFJb8nR7.js:2
start @ index-BFJb8nR7.js:2
fetch @ index-BFJb8nR7.js:2
#executeFetch @ index-BFJb8nR7.js:2
setOptions @ index-BFJb8nR7.js:2
(anonymous) @ index-BFJb8nR7.js:2
commitHookEffectListMount @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
flushPassiveEffects @ index-BFJb8nR7.js:47
flushPendingEffects @ index-BFJb8nR7.js:47
flushSpawnedWork @ index-BFJb8nR7.js:47
commitRoot @ index-BFJb8nR7.js:47
commitRootWhenReady @ index-BFJb8nR7.js:47
performWorkOnRoot @ index-BFJb8nR7.js:47
performSyncWorkOnRoot @ index-BFJb8nR7.js:47
flushSyncWorkAcrossRoots_impl @ index-BFJb8nR7.js:47
processRootScheduleInMicrotask @ index-BFJb8nR7.js:47
(anonymous) @ index-BFJb8nR7.js:47
index-BFJb8nR7.js:7113 [useGraphQL] Request error: {key: âgetAllPairsâ, message: âHTTP error! status: 400 - Cannot query field âassetCategoryâ on type âpairDetailedInfoâ.â}
queryFn @ index-BFJb8nR7.js:7113
await in queryFn
fetchFn @ index-BFJb8nR7.js:2
run @ index-BFJb8nR7.js:2
(anonymous) @ index-BFJb8nR7.js:2
Promise.then
(anonymous) @ index-BFJb8nR7.js:2
Promise.catch
run @ index-BFJb8nR7.js:2
start @ index-BFJb8nR7.js:2
fetch @ index-BFJb8nR7.js:2
#executeFetch @ index-BFJb8nR7.js:2
setOptions @ index-BFJb8nR7.js:2
(anonymous) @ index-BFJb8nR7.js:2
commitHookEffectListMount @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
recursivelyTraversePassiveMountEffects @ index-BFJb8nR7.js:47
commitPassiveMountOnFiber @ index-BFJb8nR7.js:47
flushPassiveEffects @ index-BFJb8nR7.js:47
flushPendingEffects @ index-BFJb8nR7.js:47
flushSpawnedWork @ index-BFJb8nR7.js:47
commitRoot @ index-BFJb8nR7.js:47
commitRootWhenReady @ index-BFJb8nR7.js:47
performWorkOnRoot @ index-BFJb8nR7.js:47
performSyncWorkOnRoot @ index-BFJb8nR7.js:47
flushSyncWorkAcrossRoots_impl @ index-BFJb8nR7.js:47
processRootScheduleInMicrotask @ index-BFJb8nR7.js:47
(anonymous) @ index-BFJb8nR7.js:47
index-BFJb8nR7.js:50 [2026-07-02T14:20:09.480Z] [GraphQLClient] ERROR: HTTP error
This error and many more. is the source file available so I can work on it?
index-BFJb8nR7.js:7395 [BotTypeRegistry] registerBotModule is deprecated in production and will be ignored.
registerBotModule @ index-BFJb8nR7.js:7395
index-BFJb8nR7.js:7395 [BotTypeRegistry] registerBotModule is deprecated in production and will be ignored.
registerBotModule @ index-BFJb8nR7.js:7395
index-BFJb8nR7.js:7395 [BotTypeRegistry] registerBotModule is deprecated in production and will be ignored.
registerBotModule @ index-BFJb8nR7.js:7395
index-BFJb8nR7.js:50 [Logger] Initialized with IndexedDB storage
index-BFJb8nR7.js:50 [2026-07-02T14:29:59.137Z] [general] ERROR: Failed to add exchange: Object
writeToConsole @ index-BFJb8nR7.js:50
index-BFJb8nR7.js:50 [2026-07-02T14:29:59.138Z] [general] ERROR: Failed to add exchange: Object
writeToConsole @ index-BFJb8nR7.js:50
Yes you can check the source of everything in this guide: Gainium Self-Hosted â Deployment Guide - Help Center | Gainium
I think those errors are not related to the API key.
Thanks
It is a nightmare. I believe the V2 open source may be trying to use Binance. Not Binacce.US and that is why it is not accepting my keys. I changed the yaml file and other tweaks, but it is not recognizing Binance.US keys. This is posssibly related to the front end, but I donât have time to dig into all of that. But I added the same keys to another exchange, and they were immediately accepted and I could immediately trade with them. So there is something deep in the code not letting it accept Binance.US keys.
yep, it is trying to use my API keys for Binance..not Binance.US. On the add exchange page, if I choose Binance.US, the purple buttton below it shows connect to Binance. it should show how to connect to Binance.US, if it was really using my keys for Binance.US, correct?
Hi @starrevolutions â quick update.
Weâve temporarily upgraded your Gainium cloud account (app.gainium.io) to the Mini plan for the next several days. Could you log in there with this same account and try adding your Binance.US API keys on the Add Exchange page? That lets us cleanly separate a key/permission problem from something specific to your self-hosted machine.
- If the keys connect fine on the cloud â the issue is almost certainly that your self-hosted serverâs outbound IP isnât whitelisted on the Binance.US key (or the key is missing spot permissions). Binance validates a key against the IP of the machine making the request, so the exact same key can work in one place and be rejected from another.
- If theyâre rejected on the cloud too â then itâs something on the key itself, and weâll dig in from there.
On the âConnect to Binanceâ button you spotted in the screenshot: thatâs just a mislabeled help link on the Add Exchange page. When you select Binance.US, the app does route to Binance.US (api.binance.us) under the hood â not Binance.com â so your keys are being used against the right exchange. The wrong label doesnât change where the keys go, and weâll get it fixed.
Let us know how the cloud test goes.
Thanks. But I just tried with brand new keys. it still says they cannot be used for spot trading. It was on the cloud.
Thanks for testing on the cloud â that was actually the key data point. It ruled out your machineâs IP, and it pointed us at a bug on our side: when Binance.US rejected the connection, our connector was swallowing the exact reason and logging a useless [object Object], so we couldnât see why it was being rejected.
Weâve just deployed a fix to the cloud that surfaces Binance.USâs real error message. Your account still has the Mini plan active, so:
Could you try adding your Binance.US keys one more time on the cloud (app.gainium.io)?
It may still fail â but this time weâll be able to read the precise reason Binance.US is returning (key permissions, IP, account status, etc.) and tell you exactly what to fix. Once youâve tried, let us know roughly what time (with your timezone) so we can pull the matching log line.
Found it â and it was our bug, not your keys.
With the improved logging we could finally see the real error: our exchange connector was verifying Binance.US keys against a Binance.com-only endpoint (/sapi/v1/account/info) that doesnât exist on Binance.US, so it returned a 404 and we rejected every Binance.US key as âinvalidâ regardless of whether it was actually fine. Your keys were never the problem.
Weâve deployed a fix to the cloud that verifies Binance.US against the correct endpoint (/api/v3/account). Please try adding your Binance.US keys one more time on the cloud (app.gainium.io).
If it connects now (which we expect), weâll ship the same fix to the self-hosted Docker images so your open-source V2 build gets it too. Let us know how it goes â and roughly what time you try, with your timezone, so we can confirm from our side.
Thanks Claus! That works! 4:39 AM Eastern USA, New York
Great to hear itâs working, and thanks for confirming â we saw the Binance.US account connect cleanly on our side too.
Weâve now built the same fix into the self-hosted image: exchange-connector version 1.14.1 on docker.gainium.io. Itâll become the default pin in the next self-hosted release. If youâd like it on your open-source V2 right away, set this in your .env:
EXCHANGE_CONNECTOR_VERSION=1.14.1
then recreate that one container:
docker compose pull exchange-connector && docker compose up -d exchange-connector
Your Binance.US keys will then verify the same way they did on the cloud. Shout if anythingâs off.
Thanks. I placed it at the end of the env file, saved it. Still gives same errror. Per-service image version pins. Override to force a specific version
instead of the compose default. admin-sh writes here when you Upgrade
from the dashboard, so anything set manually here gets replaced.
MAIN_APP_VERSION=1.18.0
EXCHANGE_CONNECTOR_VERSION=1.5.0
WEBSOCKET_CONNECTOR_VERSION=1.8.0
PAPER_TRADING_VERSION=1.2.3
FRONTEND_VERSION=2.5.1
ADMIN_SH_VERSION=1.0.0
EXCHANGE_CONNECTOR_VERSION=1.14.1


