Fragility of the API? in get_data raise RDError(-1, except_msg)

Working with Refinitiv Data Python library I have some bond titles for which I pull the Ultimate Parent Id in order to further query some data:

>>> import refinitiv.data as 
>>> import pandas as pd

...

>>> ParentIDs
Instrument Ultimate Parent Id
0 US013822AC54 5051045063
1 US013822AE11 5051045063
2 US013822AG68 5051045063
3 US013822AH42 5051045063
4 XS2342910689 5057937159
... ... ...
3238 US98955DAA81 5053129374
3239 XS2431015655 5053129374
3240 US98980BAA17 5043459833
3241 US98981BAA08 5041798671
3242 US98980HAA86 4295893641

[3243 rows x 2 columns]


>>> ParentIDs['Ultimate Parent Id'].unique().dropna()
<StringArray>
['5051045063', '5057937159', '4295903254', '4295901827', '5083796424',
'4298089043', '5038907093', '4295906590', '5000065666', '4295900267',
...
'5069399010', '4295908523', '5042953645', '5067514871', '4296579444',
'5082038238', '5053129374', '5043459833', '5041798671', '4295893641']
Length: 1431, dtype: string


However, if I pull the Primary Quote, I get the following error:

>>> RICs = rd.get_data(
... universe = ParentIDs['Ultimate Parent Id'].unique().dropna(),
... fields = ["TR.PrimaryQuote"]
... )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\...\AppData\Roaming\Python\Python311\site-packages\refinitiv\data\_access_layer\get_data_func.py", line 126, in get_data
raise RDError(-1, except_msg)
refinitiv.data._errors.RDError: Error code -1 | Backend error. 400 Bad Request Requested universes: ['5051045063', '5057937159', '4295903254',
'4295901827', '5083796424', '4298089043', '5038907093', '4295906590', '5000065666', '4295900267', '5082539928', '5063764430', '4295863289', ...


At a second attempt it worked.

  1. What does this error message mean?
  2. Is the API "fragile"? It also takes sometimes a very long time just to get some data (e.g. "Ultimate Parent Id")

Best Answer

  • @fabian.echterling Thanks for your question - so during busier periods of high load - occasionally some requests are dropped - the only real solution is to code defensively in a try-except structure and re-present the call - perhaps after a small sleep. I will contact the service team and see if there are any specific issues and report back. Could you also provide a full universe list to see if I can replicate or if there is some issue with the identifiers.

    The API Limits for get_data are 10,000 datapoints per API call - so you are well within that. I hope this can help.

Answers

  • Thank you! That already explains it for me. Would be great if the Refinitiv infrastructure will be strong enough in the future to built reliable workflows.