Https://api.coinbase.com/api/v3/brokerage/accounts/{account_uuid} <-- doesn't work!

I’ve got this working:
https://api.coinbase.com/api/v3/brokerage/accounts

And it returns a list of accounts with a column of uuid’s.

This doesn’t seem to work:
https://api.coinbase.com/api/v3/brokerage/accounts/{account_uuid}

I take a uuid from the list do do the same GET request with supplied and it doesn’t return anything. There’s no error… just an empty response.

So instead of this:
https://api.coinbase.com/api/v3/brokerage/accounts

I’m doing this:
https://api.coinbase.com/api/v3/brokerage/accounts/00000000-0000-0000-0000-000000000000

The Python examples provided are also basically the same except for the endpoint:

import http.client
import json

conn = http.client.HTTPSConnection(“api.coinbase.com”)
payload = ‘’
headers = {
‘Content-Type’: ‘application/json’
}
conn.request(“GET”, “/api/v3/brokerage/accounts/:account_uuid”, payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode(“utf-8”))

Am I missing something here or do I just supply the “uuid” at the end of the URI?

Just FYI, this isn’t my code above… my code handles the auth properly. The only difference between the working list accounts and the not working get account is just supplying the uuid at the end.

1 Like

Hello @michael.whittle! Thank you for bringing this up to our attention. We’re glad to help, but first, we will be needing some clarification to further assist you with your concern:

  • You mentioned that you retrieve a “UUID” from the List Accounts endpoint and use that UUID to call the Get /account endpoint, however you’re receiving an empty response. Can you try using a different “UUID” on the said endpoint and see if you’re still receiving an empty response?
  • Please share a copy of your code snippet including the API endpoint response. This will help us to further investigate your concern. Please omit any personal information for safety purposes.

Once you send us the information requested above, we’ll work to quickly address your concern.

With regard to your query if you’re missing something or do you just supply the “UUID” at the end of the url, we can confirm that you are correct in supplying the “UUID” at the end of the url.

Looking forward to hearing from you soon.

Thanks for your reply.

I have written some Python code that eventually runs an authenticated version of this:

https://api.coinbase.com/api/v3/brokerage/accounts

And the result looks like this as a Pandas dataframe.

That all works fine.

According to the documentation I should be able to retrieve a single account using the uuid like this:

https://api.coinbase.com/api/v3/brokerage/accounts/687c96ec-24bd-5607-9682-REMOVED

The top uuid in the screenshot matches what is being passed.

After some debugging I see the API is returning a non fatal error:

KeyError(‘687c96ec-24bd-5607-9682-REMOVED’)

It doesn’t seem to like the uuid what is being passed, but it’s one of the items from the list.

The documentation on this page:

https://docs.cloud.coinbase.com/advanced-trade-api/reference/retailbrokerageapi_getaccount

Says it needs to be this, which matches above…

https://api.coinbase.com/api/v3/brokerage/accounts/{account_uuid}

Using the helper in the documentation it says the Python code needs to be this…

    import http.client
    import json
    
    conn = http.client.HTTPSConnection("api.coinbase.com")
    payload = ''
    headers = {
      'Content-Type': 'application/json'
    }
    conn.request("GET", "/api/v3/brokerage/accounts/687c96ec-24bd-5607-9682-REMOVED", payload, headers)
    res = conn.getresponse()
    data = res.read()
    print(data.decode("utf-8"))

Also the same as mine.

I don’t think it’s a permissions issue as both the list accounts and get account both need: wallet:accounts:read

This looks like a bug to me but if you spot anything I’ve done wrong, please let me know.

Thanks,
Mike

1 Like

Hello @michael.whittle!

Thank you for all the information you have provided. We are able to use the python code you shared to call the List Accounts and Get Account endpoint and the API response seems to work just fine. Hence, we will need you to log a support ticket as we may need to check sensitive information that must not be publicly shared.When logging a ticket, please use an email address that is associated with your Coinbase account. Include on the ticket message the following:

  • Kindly include the link of this forum so that the team will be aware that it’s you.
  • Provide us once again the screenshot of the returned data when calling the list accounts endpoint and this time please specify the UUID that you are using on the get accounts endpoint.

Aside from the items mentioned above, we will also be needing the answer to these questions we asked before.

  • Have you tried using the other UUIDs when calling the get accounts endpoint? If yes, do you receive the same response?
  • Please share a copy of your code snippet including the API endpoint response.

Looking forward to hearing from you again soon. We appreciate your patience and understanding as we investigate your concern. Have a great day!

I might be totally wrong, but the KeyError(‘687c96ec-24bd-5607-9682-REMOVED’) makes me think something is wrong in the parsing of the response. The JSON responses for the two endpoints are slightly different:

{"accounts":[{"uuid":… from List Accounts; accounts is an array
{"account":{"uuid": … from Get Account; account is an object

It might be that. I convert the JSON response into a Pandas dataframe, so maybe that’s where the issue is happening. I will check and confirm.

Thanks @pigglety, you were right. The JSON response looks totally different when retrieving one item verse a list. I’ve got both working now.