Hi @odole your post and analysis seemed relevant to this recent bug report, so I hope it’s ok that I moved it here.
Thank you for your detailed analysis of the count differences. Not sure I have any definitive answers, and the developers might have to answer for sure. But a couple of factors that might be at play here are:
are only active IDs being counted, or active + inactive?
are they being counted on observations of all quality grades, or are Casual observations being excluded?
Maybe someone else will be able to chime in with better answers.
URL 1 is using the default hidden param verifiable=true, while 2 also includes IDs on observations that are not verifiable.
26675 is smaller than 27515 because 26675 is the number of verifiable observations by tiwane, while 27515 is the number of IDs tiwane made on all of his observations. They’re not asking for the same data – the first is asking for number of observations and only includes verifiable, and the second is asking for number of IDs and includes all observations. He could (and does) have some observations that aren’t verifiable, and he could (and does) have some observations that he never added an ID to, e.g. this one. So we wouldn’t expect these numbers to be the same, either one could be larger.
The profile page includes current=true, while the identifications page shows current=any. This was a design choice that probably only the developers could comment on.
I think some of the confusion is because iNat treats searches for IDs very differently from searches for observations. You can see the API docs for IDs here and for observations here.
Correct, URL 2 is an ID search and doesn’t accept the verifiable parameter.
For URL 1, current isn’t a parameter for observation searches.
For URL 2, the API docs (or some experimenting) show that the default is current=true.
URL 5 is also an ID search, it doesn’t take the verifiable parameter.
I’m not sure what you expect it to show? It’s the number of current IDs that tiwane has made on any of his observations.
the Explore (aka Observation Search) screen by default will look for non-spam, verifiable records. however, the Observation API endpoints don’t apply those parameters by default.
the Explore page and Observation API endpoints return observations. there are other API endpoints that return identifications. observations and identifications are different things. so the user_id parameter on observation endpoints will refer to observers, while the user_id parameter on identification endpoints will refer to identifiers. the ident_user_id parameter is available to the observations endpoints as a way to reference identifiers (users who have current identifications on those observations).