Summary of identifications by users

Is it possible to get a summary of species identified by user. Something like:
https://www.inaturalist.org/observations?place_id=any&subview=grid&user_id=tonyrebelo&verifiable=any&view=species
but for identifications.
(oh, and for a place too, not just the total).

I need to check the credentials of an identifier (no profile interests listed) in a genus/family outside of their continent.

The closest I can get is this:
https://www.inaturalist.org/identifications?place_id=any&subview=grid&user_id=tonyrebelo&verifiable=any&taxon_id=49360
but I would like a summary by species in the taxon, without having to count dozens of observations.

Not important enough for a feature request, but interested enough to know if their is a way of doing it via the urls.

Was going to post the same question myself, would love ID summaries for each user

I was also just about to post this request. I’d love to know the ID data of myself and others. This can be useful information to determine whether a user might have any experience in a particular taxon. And I think it’d be interesting to know the total number of species I’ve identified and which groups I identify most often or least often.

You can add ?ident_user_id=[username] and look at the species grid view to see a summary of IDs made by a user for each species. You can use the search to narrow by taxa or location.

For example, here is a summary of your South African frog and toad IDs:

https://www.inaturalist.org/observations?ident_user_id=tonyrebelo&place_id=6986&subview=grid&taxon_id=20979&view=species

At least for me, it can take awhile to load the next set of species when you scroll down. Most ID’ed taxa are at the top.

i think hanly’s answer probably gets you what you want in most cases, but i do also want to mention that there is this: https://api.inaturalist.org/v1/docs/#!/Identifications/get_identifications_species_counts. this will accept a taxon_of parameter which will allow you to specify whether you want the taxon of the identification or of the observation, and it also provides a few other identification-related parameters/filters that might be useful. it doesn’t have a nice user interface that i know of (though it wouldn’t be too hard to write something to display the results in a user-friendly format, i think).

That’s great. Is any way to do something similar but for where a person made the leading ID, and exclude IDs where they are just agreeing?

You would have to use the above API link from pisum with category=leading. If it’s a one time thing you can convert the JSON output for a single request to an HTML table with an online tool if you just want the info and not an interface.

For example, this is your leading IDs of bees:

https://api.inaturalist.org/v1/identifications/species_counts?user_id=vynbos&current=true&category=leading&taxon_id=630955&order=desc&order_by=created_at&taxon_of=iden

Which you can plug into Option 2 at a site like http://convertjson.com/json-to-html-table.htm to make a table (with lots of superfluous information). Not super elegant but a way to get the info without accessing the API more traditionally.

It’s a shame that this feature is so deeply hidden. It’s potentially very useful for someone like myself who contributes a large number of identifications. For instance, I can tweak the view so that I see all the observations of a particular group that I’ve identified to Order or Family. It allows me to easily see which identifications I might be able to diagnose to a lower taxonomic level. This seems like something that could easily be incorporated into the user identifications page.

MS Excel actually does a respectable job of putting JSON data into a relatively friendly format, if you don’t care about seeing pictures. see https://support.office.com/en-us/article/Connect-to-a-JSON-file-f65207ab-d957-4bf0-bec3-a08bb53cd4c0.

below, i’ve adapted some code that i wrote earlier (https://forum.inaturalist.org/t/how-to-find-the-top-improving-identifiers-for-a-taxon/5478/2) to help display the results of this API endpoint in a slightly more user-friendly format, along with a screenshot of what the results look like for my id below the code. one day i will put my code into something like GitHub so that it’s easier to use, but today is not that day. to use the code, copy it, and paste it into a text or code editor. then save as an .html or .htm file, and open the saved file with your browser.

<!DOCTYPE html>
<html lang="en">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="iNaturalist API Get Identification Leaf Taxa Counts" />
<title>iNaturalist API Get Identification Leaf Taxa Counts</title>
<style>
   body { font:10pt Sans-Serif; }
   .tar { text-align:right; }
   #main { width:100%; }
   table, thead, tbody, tr, td { margin:0px; padding:3px; border-width:1px 0px;border-style:solid; border-color:lightgray; border-spacing:0px; border-collapse:collapse; }
   thead tr { font-weight:600; background:green; color:white; }
   tr { background:whitesmoke; }
   tr:nth-child(even) {background-color:white }
   .icon { height:48px; width:48px; border-radius:50%; }
   img { margin:0px; padding:0px; border:0px; }
   a { text-decoration:none; }
</style>
</head>

<body>
<script>
function furl(url,txt=url) { return '<a href="'+url+'">'+txt+'</a>'; };
function famp(str) { return str.replace(/&/g,'&amp;'); };
function faddelem(etype,eparent,eclass=null,eid=null,ehtml=null) {
   var eobj = document.createElement(etype);
   if (eclass!==null) { eobj.classList = eclass };
   if (eid!==null) { eobj.id = eid };
   if (ehtml!==null) { eobj.innerHTML = ehtml };
   eparent.appendChild(eobj);
   return eobj;
};
function fresults(xobj) {
   faddelem('p',document.body,null,null,furl(famp(apiurl)));
   var results = xobj.results;
   if (results) {
      faddelem('p',document.body,null,null,'total leaf taxa: '+xobj.total_results);
      var table = faddelem('table',document.body,null,'main');
      var thead = faddelem('thead',table);
      var hrow = faddelem('tr',thead);
      faddelem('td',hrow,null,null,'#');
      faddelem('td',hrow,null,null,'id');
      faddelem('td',hrow,null,null,'photo');
      faddelem('td',hrow,null,null,'name');
      faddelem('td',hrow,null,null,'common name');
      faddelem('td',hrow,null,null,'rank');
      faddelem('td',hrow,'tar',null,'taxon obs/id count');
      faddelem('td',hrow,'tar',null,'taxon ttl obs count');
      var tbody = faddelem('tbody',table);
      for (var i=0; i<results.length; i++) {
         var brow = faddelem('tr',tbody);
         faddelem('td',brow,null,null,i+1);
         faddelem('td',brow,null,null,furl('https://www.inaturalist.org/taxa/'+results[i].taxon.id,results[i].taxon.id));
         faddelem('td',brow,null,null,'<img class="icon" src="'+results[i].taxon.default_photo.square_url+'" />');
         faddelem('td',brow,null,null,results[i].taxon.name);
         faddelem('td',brow,null,null,results[i].taxon.preferred_common_name);
         faddelem('td',brow,null,null,results[i].taxon.rank);
         faddelem('td',brow,'tar',null,results[i].count);
         faddelem('td',brow,'tar',null,results[i].taxon.observations_count);
      };
   }
   else { faddelem('p',document.body,null,null,'No results returned.'); };
};
var apiurl = 'https://api.inaturalist.org/v1/identifications/species_counts'+window.location.search;
if (window.location.search==='') {
   faddelem('p',document.body,null,null,'This page displays the results of a request to the iNaturalist Identification Species Counts API in a user-friendly format. To use this page, add at least one query parameter to the URL. See '+furl('https://api.inaturalist.org/v1/docs/#!/Identifications/get_identifications_species_counts')+' for available query parameters.');
   faddelem('p',document.body,null,null,'Suppose this page is saved locally as C:\\example.html, <br />and you want to see the results of '+furl(famp('https://api.inaturalist.org/v1/identifications/species_counts?user_id=bob&current=true&order=desc&order_by=created_at&taxon_of=identification'))+' in a friendly format, <br />then you would open '+furl(famp('file:///C:/example.html?user_id=bob&current=true&order=desc&order_by=created_at&taxon_of=identification'))+' in your browser.');
}
else {
   fetch(apiurl)
      .then((response) => {
         if (!response.ok) { throw Error(response.statusText); };
         return response.json();
      })
      .then((data) => { fresults(data); })
      .catch((err) => { console.log('Error: '+err); });
}
</script>
</body>
</html>

Cool thanks. I did get the answer elsewhere, but dont remember where.
The api is superb.

https://www.inaturalist.org/observations?ident_user_id=rangertreaty50
Replace the username and your good to go!

here’s my code above hosted as a GitHub page so that you don’t have to save it locally to use it:
https://jumear.github.io/stirfry/iNatAPIv1_identifications_species_counts.html

and this is the code saved in GitHub:
https://github.com/jumear/stirfry/blob/gh-pages/iNatAPIv1_identifications_species_counts.html

while i’m at it here is the same thing for this (https://forum.inaturalist.org/t/how-to-find-the-top-improving-identifiers-for-a-taxon/5478/3):
https://jumear.github.io/stirfry/iNatAPIv1_identifications_identifiers.html
https://github.com/jumear/stirfry/blob/gh-pages/iNatAPIv1_identifications_identifiers.html

I was using that for our Illinois Botanists Big Year identifiers, but it doesn’t work anymore. :\

https://jumear.github.io/stirfry/iNatAPIv1_identifications_identifiers.html?taxon_id=47126&category=improving,leading&place_id=35&observed_d1=2019-01-01&own_observation=false did I accidentally change something?

Edit: Looks like it’s the observed_d1 that triggers it to fail. But it worked before…
https://jumear.github.io/stirfry/iNatAPIv1_identifications_identifiers.html?taxon_id=47126&category=improving,leading&place_id=35&own_observation=false

And since the API shows no results with observed_d1 is included doesn’t look like something changed on your end. will file a bug report.

Edit edit: here https://forum.inaturalist.org/t/api-identifications-identifers-including-observed-d1-or-observed-d2-returns-no-results/8748

@tonyrebelo I think you should turn this into a feature request.

(to follow up on my last post, the issue with the observed date parameters was fixed)