You don't have permissions to access this endpoint

Hi there,

I signed up for a paid API key yesterday. I wanted to set up a Google sheet using the endpoint in the docs.

No matter what API endpoint I try I get: You don’t have permissions to access this endpoint. Check your API key and our documentation at docs.nomics.com for details.

When I check my API usage it comes back with the correct number so I believe my API key is correct.

Can someone please help me out?

Are you able to access the Currencies Ticker?
https://nomics.com/docs/#operation/getCurrenciesTicker

Hi there,

Yes, I’m able to access that, the only thing that doesn’t work is the csv export: https://api.nomics.com/v1/prices?key=your-key-here&format=csv

/prices is a deprecated endpoint. New accounts do not get access to deprecated endpoints.

Alright well, that’s a bit crap.

It doesn’t say anywhere on your API docs that have depreciated?

Also, you mention it at the bottom of your sales page:

I’m not a programmer or developer, do you have a Google Sheets script I can try out?
Sure thing. Here is a functioning Google Sheets portfolio tracker demo.

Which is a bit misleading.

I also can’t see any endpoints where you can list all the tokens anymore. Can you point me in the right direction for that please.

It is in the deprecated section and has a deprecated label:

I’ll get our sales page updated, it shouldn’t reference the google doc. Google reduced support for pulling in API data dynamically so the sheet doesn’t work any more.

You can find current prices for all tokens in our first endpoint, the Currencies Ticker:
https://nomics.com/docs/#operation/getCurrenciesTicker

1 Like

Hey @MattyG,

I’m working on a Google Sheet Tracker with the free API key and found a workaround with the endpoint @nrg suggests. I can share the link to the sheet with you if you’d like so you can have a look.

I also use the paid key privately but this endpoint is available both ways. Just need to convert JSON format to something workable for Google Sheets.

Let me know if you already solved your problem.

1 Like

Hi Mdmazing - could you share that goog sheet with me.
I was using Prices endpoint in Goog sheets and it was working fine till about a week or two ago until it decided not to? Then they advised “Prices endpoint has been deprecated for over a ar. Please use the currencies ticker endpoint instead.” But I couldnt get that to work?

I’d like to get just “Symbol, Name and Price” of all coins (say all the 16K or so coins that report prices, perhaps sorted by market cap rank). I only need about 250 or so crypto prices but they’re smattered all over the crypto universe- some very new coins are the last on rank-basis.

1 Like

@nycapo22 sure, I know what you mean, I’ve been having the exact same problem with the sheet.

I made a copy of it and removed my =importJSON() call. Find latest version of the sheet here:

Please use your own key and construct the full URL on sheet Nomics API - the rest should populate automatically.

Remember, it can only call 100 results per page…

If you want specific coin tickers, construct a dedicated URL for those:

=ImportJSON(“https://api.nomics.com/v1/currencies/ticker?key=YOUR_KEY&ids=DAI,BTC,UNI,ETH,ZRX,BAT,ADA,HEX,LTC,1INCH,DOGE,XRP,XLM,USDT,USDC&currency=EUR&interval=1d,7d,30d,365d,ytd&per-page=100&page=1”)

This way you could have 1 API call for the top 100 and 1 API call for custom coins on another sheet I guess. Didn’t implement that yet but I see not other way around is atm.

Let me know what you think

1 Like

thanks…I sent request for access to your file…pls. accept.

so I guess regardless of what all data is requested (1d, 3d, 5d…) each 100 coins only constitutes 1 call? And this can be refreshed free every 10 seconds if needed?

1 Like

@nycapo22 Access granted. Changed the permission so anyone with the link can view and copy.

And yes, regarding the number of calls and the refreshing. I think I’m going to have 2 or 3 calls (with 100 row spacing) eventually. For the first page(s) and a custom call with the ones that are way down the list.

1 Like

somethng seems off- when I copy your sheet its locked or something - nothing in text is showing up. If its better I can share my mail - you can share a copy of entire sheet just delete ur data except some sample data so I can make sense - is thats OK - I can send u my email. I dunno why they dont have PM facility on this forum?

1 Like

Yea I was looking for PM functionality too… I have unlocked all tabs and tweaked info tab, can you try again??

thanks…this one shows up ok. I will try to test this. Based on what you wrote about 2 calls for top 200 and then another for custom ordered balance coins - thats a nice solution. Not sure if you tried the unique formulae and lets say someone has a list of 150 coins in a col- perhaps a formula can look at this list; compare it to list of top 200 coins from nomics 2 calls- then find the balance uniques and pass them in a URL call for 3rd? If you do happen to test a formula for this- pls. let me know, its above my pay grade ;:slight_smile:

1 Like

Hello @nycapo22, that should be rather easy I think, there are two ways:

  1. Google App Script (harder but perhaps more elegant)
  2. Use =CONCATENATE() function in a cell to construct the full URL, then call it with =importJSON()

I will show you option 2, since it’s easy to do on your sheet.

Cell A1 contains the list of tickers:
BTC,HOT,ETH,XRP,ADA,HEX (no comma at the start and end!)

Cell A2 contains function to construct the URL:
=CONCATENATE("https://api.nomics.com/v1/currencies/ticker?key=YOUR_KEY&ids=",A1,"&currency=EUR&interval=1d,7d,30d,365d,ytd&per-page=100&page=1")

Cell A3 calls function importJSON()
importJSON(A2)

Combined functions
=importJSON(CONCATENATE("https://api.nomics.com/v1/currencies/ticker?key=YOUR_KEY&ids=",A1,"&currency=EUR&interval=1d,7d,30d,365d,ytd&per-page=100&page=1")

I wanted to fix this myself for a long time so I’m glad you asked :stuck_out_tongue:

Good luck!

PS while reading your question again I’m not sure if I understand it correctly though…

Hi Mdmazing - Yeah that should work but was not my whole ques…I’ve attached a sample sheet to explain it. Pls. feel free to use this as a test sheet (make your copy to test)

my sheet

  • It has a sheet with name “Nomics” that has formula for first 100 coins in A2 and then we can do another in cell A 102 that takes the next 200 coins. So we get top 200 coin prices this way directly.
  • Now in cell A202 I’d like to put a formulae that takes all unique IDs or symbols from sheetname “Ref2” col B (all of them where col A says “Crypto” and then Deletes those IDs - for which price data is already contained in first 200 coins, and then passes that as a custom string for,mula (just like u wrote) in cell A202. Hope this is clear.
  • Also - I think no need to waste server download times to include all data that currencies ticker supplies - only current price and %age change over 1 day & 7 d. shd. work fine.
  • I think this will work for you too…right?

Just so I understand you correctly. What you mean is that only the coins that are NOT in the first 200 results but that ARE listed on the Ref2 sheet, those you want to put in the custom URL.

So basically a comparison between the results and the reference tab.

  • Step 1:
    Create an additional column (next to your tickers) where you check if the value is missing from top 100/200 results, returns TRUE if a ticker is missing:
    =ISERROR(VLOOKUP(A2,'Nomics API'!A:A,1,0)).

  • Step 2:
    Paste all tickers from the original list together based on the returns of the logical:
    =ARRAYFORMULA(TEXTJOIN(",",TRUE,(IF(B2:B=TRUE,A2:A,""))))

  • Step 3:
    Then call CONCATENATE() on the result:
    =importJSON(CONCATENATE("https://api.nomics.com/v1/currencies/ticker?key=YOUR_KEY&ids=",RESULT_FROM_STEP_2,"&currency=EUR&interval=1d,7d,30d,365d,ytd&per-page=100&page=1")

You have to fix your own references to the cells for your sheet.

Should do it, no?

PS Make sure you don’t loop yourself here. I just had myself constantly refreshing the API call based on the ‘missing’ currency IDs. I do the last step manually.

Yeah…you’re right…this may work but will have to be done manually, like you said. And I was waiting to get an email when you responded but this forum’s tools are also loose prolly- I never got an email but I see u responded 14 hrs ago! :wink:

BTW, the standard call =ImportJSON(“https://api.nomics.com/v1/currencies/ticker?key=KEY HERE&interval=1d,30d&per-page=100&page=1”) - downloads over 40 columns of data.

If I just want current price, 1d and 7d, 30d price only - NO time stamp etc. - just 4 columns - do you know what that call string should run exactly as?

I think perhaps @nrg knows how to reduce data delivery but as far as I know from the documentation I have not seen any relevant parameter. I remember he mentioned somewhere in the forums an addition to the query to reduce the amount of columns…

1 Like

You can control the fields returned from the Currencies Metadata endpoint but not the Currencies Ticker. The Currencies Ticker you can only control which intervals are returned and if you want transparency data returned (if your plan allows).

1 Like