Implemented Endpoints

Pyinaturalist functions

Below is a list of all API functions provided by pyinaturalist. Note that some endpoints have more than one function associated with them.

Node-based API

get_all_observations

[Deprecated] Like get_observations(), but gets all pages of results

get_controlled_terms

List controlled terms and their possible values.

get_geojson_observations

Get all observation results combined into a GeoJSON FeatureCollection.

get_identifications

Search identifications.

get_identifications_by_id

Get one or more identification records by ID.

get_observation

Get details about a single observation by ID

get_observation_histogram

Search observations and return histogram data for the given time interval

get_observation_identifiers

Get identifiers of observations matching the search criteria and the count of observations they have identified.

get_observation_observers

Get observers of observations matching the search criteria and the count of observations and distinct taxa of rank species they have observed.

get_observation_species_counts

Get all species (or other ‘leaf taxa’) associated with observations matching the search criteria, and the count of observations they are associated with.

get_observations

Search observations.

get_places_autocomplete

Given a query string, get places with names starting with the search term

get_places_by_id

Get one or more places by ID.

get_places_nearby

Given an bounding box, and an optional name query, return standard iNaturalist curator approved and community non-curated places nearby

get_projects

Given zero to many of following parameters, get projects matching the search criteria.

get_projects_by_id

Get one or more projects by ID.

get_taxa

Given zero to many of following parameters, get taxa matching the search criteria.

get_taxa_autocomplete

Given a query string, return taxa with names starting with the search term

get_taxa_by_id

Get one or more taxa by ID.

get_user_by_id

Get a user by ID.

get_users_autocomplete

Given a query string, return users with names or logins starting with the search term

node_api_get

Make an API call to iNaturalist.

Rails-based API

add_photo_to_observation

Upload a local photo and assign it to an existing observation.

create_observation

Create a new observation.

delete_observation

Delete an observation.

get_all_observation_fields

[Deprecated] Like get_observation_fields(), but gets all pages of results

get_observation_fields

Search observation fields.

get_observations

Get observation data, optionally in an alternative format.

put_observation_field_values

Set an observation field (value) on an observation.

update_observation

Update a single observation.

All iNaturalist endpoints

Note

The two iNaturalist APIs expose a combined total of 102 endpoints. Some of these are generally useful and could potentially be added to pyinaturalist, but many others are primarily for internal use by the iNaturalist web application and mobile apps, and are unlikely to be added unless there are specific use cases for them.

Below is a complete list of iNaturalist API endpoints, and the subset of them that have been implemented in pyinaturalist.

Node-based API

For full documentation, see: http://api.inaturalist.org/v1/docs/

Method

Endpoint

Implemented

POST

/annotations

DELETE

/annotations/{id}

POST

/votes/vote/annotation/{id}

DELETE

/votes/unvote/annotation/{id}

POST

/comments

DELETE

/comments/{id}

PUT

/comments/{id}

GET

/controlled_terms

yes

GET

/controlled_terms/for_taxon

yes

POST

/flags

DELETE

/flags/{id}

PUT

/flags/{id}

DELETE

/identifications/{id}

GET

/identifications/{id}

yes

PUT

/identifications/{id}

GET

/identifications

yes

POST

/identifications

GET

/identifications/categories

GET

/identifications/species_counts

GET

/identifications/identifiers

GET

/identifications/observers

GET

/identifications/recent_taxa

GET

/identifications/similar_species

GET

/messages

POST

/messages

DELETE

/messages/{id}

GET

/messages/{id}

GET

/messages/unread

DELETE

/observation_field_values/{id}

PUT

/observation_field_values/{id}

POST

/observation_field_values

DELETE

/observation_photos/{id}

PUT

/observation_photos/{id}

POST

/observation_photos

DELETE

/observations/{id}

GET

/observations/{id}

yes

PUT

/observations/{id}

POST

/observations/{id}/fave

DELETE

/observations/{id}/unfave

POST

/observations/{id}/review

POST

/observations/{id}/unreview

GET

/observations/{id}/subscriptions

DELETE

/observations/{id}/quality/{metric}

POST

/observations/{id}/quality/{metric}

GET

/observations/{id}/taxon_summary

POST

/subscriptions/observation/{id}/subscribe

POST

/votes/vote/observation/{id}

DELETE

/votes/unvote/observation/{id}

GET

/observations

yes

POST

/observations

GET

/observations/deleted

GET

/observations/histogram

yes

GET

/observations/identifiers

yes

GET

/observations/observers

yes

GET

/observations/popular_field_values

GET

/observations/species_counts

yes

GET

/observations/updates

PUT

/observations/{id}/viewed_updates

GET

/places/{id}

yes

GET

/places/autocomplete

yes

GET

/places/nearby

yes

GET

/posts

POST

/posts

DELETE

/posts/{id}

PUT

/posts/{id}

GET

/posts/for_user

DELETE

/project_observations/{id}

PUT

/project_observations/{id}

POST

/project_observations

GET

/projects

yes

GET

/projects/{id}

yes

POST

/projects/{id}/join

DELETE

/projects/{id}/leave

GET

/projects/{id}/members

GET

/projects/{id}/subscriptions

POST

/projects/{id}/add

DELETE

/projects/{id}/remove

GET

/projects/autocomplete

POST

/subscriptions/project/{id}/subscribe

GET

/search

GET

/taxa/{id}

yes

GET

/taxa

yes

GET

/taxa/autocomplete

yes

GET

/users/{id}

yes

PUT

/users/{id}

GET

/users/{id}/projects

GET

/users/autocomplete

yes

GET

/users/me

DELETE

/users/{id}/mute

POST

/users/{id}/mute

PUT

/users/update_session

GET

/colored_heatmap/{zoom}/{x}/{y}.png

GET

/grid/{zoom}/{x}/{y}.png

GET

/heatmap/{zoom}/{x}/{y}.png

GET

/points/{zoom}/{x}/{y}.png

GET

/places/{place_id}/{zoom}/{x}/{y}.png

GET

/taxon_places/{taxon_id}/{zoom}/{x}/{y}.png

GET

/taxon_ranges/{taxon_id}/{zoom}/{x}/{y}.png

GET

/colored_heatmap/{zoom}/{x}/{y}.grid.json

GET

/grid/{zoom}/{x}/{y}.grid.json

GET

/heatmap/{zoom}/{x}/{y}.grid.json

GET

/points/{zoom}/{x}/{y}.grid.json

POST

/photos

Rails-Based API

For full documentation, see: https://www.inaturalist.org/pages/api+reference

Method

Endpoint

Implemented

POST

/comments

PUT

/comments/{id}

DELETE

/comments/{id}

POST

/identifications

PUT

/identifications/{id}

DELETE

/identifications/{id}

GET

/observations

yes

POST

/observations

yes

GET

/observations/{id}

yes

PUT

/observations/{id}

yes

DELETE

/observations/{id}

yes

POST

/observations/{id}/quality/:metric

DELETE

/observations/{id}/quality/:metric

PUT

/observations/{id}/viewed_updates

GET

/observations/:username

GET

/observations/project/{id}

GET

/observations/taxon_stats

GET

/observations/user_stats

GET

/observation_fields

yes

POST

/observation_field_values

PUT

/observation_field_values/{id}

yes

DELETE

/observation_field_values/{id}

POST

/observation_photos

yes

GET

/places

GET

/projects

GET

/projects/{id}

GET

/projects/{id}/contributors.widget

GET

/projects/user/:login

GET

/projects/{id}/members

POST

/projects/{id}/join

DELETE

/projects/{id}/leave

POST

/project_observations

POST

/users

PUT

/users/{id}

GET

/users/edit

GET

/users/new_updates