iNaturalist actually provides two APIs:

  • The original, Rails-based REST API that they also use internally: it is very complete and provides read/write access, but is rather slow and sometimes inconsistent.

  • The Node-based API allows read-only access to most iNaturalist resources, is faster and provides more consistent behavior than the REST API, but with fewer features.

Pyinaturalist provides functions to use both of those APIs. Also see Implemented Endpoints for an overview of which iNaturalist endpoints are currently implemented.