#bindings #server #client #remote #generate #message #org #data-export


iNaturalist API bindings

6 releases (breaking)

0.5.0 Mar 24, 2023
0.4.1 Feb 22, 2023
0.3.0 Feb 4, 2023
0.2.0 May 26, 2022
0.1.0 Apr 29, 2022

#1370 in Web programming

27 downloads per month


24K SLoC

Rust API client for inaturalist


iNaturalist is a global community of naturalists, scientists, and members of the public sharing over a million wildlife sightings to teach one another about the natural world while creating high quality citizen science data for science and conservation. The iNaturalist technology infrastructure and open source software is administered by the California Academy of Sciences as part of their mission to explore, explain, and sustain life on Earth.

These API methods return data in JSON/JSONP and PNG response formats. They are meant to supplement the existing iNaturalist API, implemented in Ruby on Rails, which has more functionality and supports more write operations, but tends to be slower and have less consistent response formats. Visit our developers page for more information. Write operations that expect and return JSON describe a single body parameter that represents the request body, which should be specified as JSON. See the "Model" of each body parameter for attributes that we accept in these JSON objects.

Multiple values for a single URL parameter should be separated by commas, e.g. taxon_id=1,2,3.

Map tiles are generated using the node-mapnik library, following the XYZ map tiling scheme. The "Observation Tile" methods accept nearly all the parameters of the observation search APIs, and will generate map tiles reflecting the same observations returned by searches. These "Observation Tile" methods have corresponding UTFGrid JSON responses which return information needed to make interactive maps.

Authentication in the Node API is handled via JSON Web Tokens (JWT). To obtain one, make an OAuth-authenticated request to https://www.inaturalist.org/users/api_token. Each JWT will expire after 24 hours. Authentication required for all PUT and POST requests. Some GET requests will also include private information like hidden coordinates if the authenticated user has permission to view them.

iNaturalist Website: https://www.inaturalist.org/

Open Source Software: https://github.com/inaturalist/

Terms of Use

Use of this API is subject to the iNaturalist Terms of Service and Privacy Policy. We will block any use of our API that violates our Terms or Privacy Policy without notice. The API is intended to support application development, not data scraping. For pre- generated data exports, see https://www.inaturalist.org/pages/developers.

Please note that we throttle API usage to a max of 100 requests per minute, though we ask that you try to keep it to 60 requests per minute or lower, and to keep under 10,000 requests per day. If we notice usage that has serious impact on our performance we may institute blocks without notification.

Terms of Service: https://www.inaturalist.org/terms

Privacy Policy: https://www.inaturalist.org/privacy


This API client was generated by the OpenAPI Generator project. By using the openapi-spec from a remote server, you can easily generate an API client.

  • API version: 1.3.0
  • Package version: 0.1.0
  • Build package: org.openapitools.codegen.languages.RustClientCodegen


Put the package under your project folder in a directory named inaturalist and add the following to Cargo.toml under [dependencies]:

inaturalist = { path = "./inaturalist" }

Documentation for API Endpoints

All URIs are relative to /v1

Class Method HTTP request Description
AnnotationsApi annotations_id_delete DELETE /annotations/{id} Annotation Delete
AnnotationsApi annotations_post POST /annotations Annotation Create
AnnotationsApi votes_unvote_annotation_id_delete DELETE /votes/unvote/annotation/{id} Annotation Unvote
AnnotationsApi votes_vote_annotation_id_post POST /votes/vote/annotation/{id} Annotation Vote
CommentsApi comments_id_delete DELETE /comments/{id} Comment Delete
CommentsApi comments_id_put PUT /comments/{id} Comment Update
CommentsApi comments_post POST /comments Comment Create
ControlledTermsApi controlled_terms_for_taxon_get GET /controlled_terms/for_taxon Terms for Taxon
ControlledTermsApi controlled_terms_get GET /controlled_terms Terms Index
FlagsApi flags_id_delete DELETE /flags/{id} Flag Delete
FlagsApi flags_id_put PUT /flags/{id} Flag Update
FlagsApi flags_post POST /flags Flag Create
IdentificationsApi identifications_categories_get GET /identifications/categories Identification Categories
IdentificationsApi identifications_get GET /identifications Identification Search
IdentificationsApi identifications_id_delete DELETE /identifications/{id} Identification Delete
IdentificationsApi identifications_id_get GET /identifications/{id} Identification Details
IdentificationsApi identifications_id_put PUT /identifications/{id} Identification Update
IdentificationsApi identifications_identifiers_get GET /identifications/identifiers Identification Identifiers
IdentificationsApi identifications_observers_get GET /identifications/observers Identification Observers
IdentificationsApi identifications_post POST /identifications Identification Create
IdentificationsApi identifications_recent_taxa_get GET /identifications/recent_taxa Identification Recent Taxa
IdentificationsApi identifications_similar_species_get GET /identifications/similar_species Identification Similar Species
IdentificationsApi identifications_species_counts_get GET /identifications/species_counts Identification Species Counts
MessagesApi messages_get GET /messages Retrieve messages for the authenticated user. This does not mark them as read.
MessagesApi messages_id_delete DELETE /messages/{id} Delete a message / thread
MessagesApi messages_id_get GET /messages/{id} Retrieve messages in a thread
MessagesApi messages_post POST /messages Create a new message
MessagesApi messages_unread_get GET /messages/unread Gets a count of messages the authenticated user has not read
ObservationFieldValuesApi observation_field_values_id_delete DELETE /observation_field_values/{id} Observation Field Value Delete
ObservationFieldValuesApi observation_field_values_id_put PUT /observation_field_values/{id} Observation Field Value Update
ObservationFieldValuesApi observation_field_values_post POST /observation_field_values Observation Field Value Create
ObservationPhotosApi observation_photos_id_delete DELETE /observation_photos/{id} Observation Photo Delete
ObservationPhotosApi observation_photos_id_put PUT /observation_photos/{id} Observation Photo Update
ObservationPhotosApi observation_photos_post POST /observation_photos Observation Photo Create
ObservationTilesApi colored_heatmap_zoom_xy_png_get GET /colored_heatmap/{zoom}/{x}/{y}.png Colored Heatmap Tiles
ObservationTilesApi grid_zoom_xy_png_get GET /grid/{zoom}/{x}/{y}.png Grid Tiles
ObservationTilesApi heatmap_zoom_xy_png_get GET /heatmap/{zoom}/{x}/{y}.png Heatmap Tiles
ObservationTilesApi points_zoom_xy_png_get GET /points/{zoom}/{x}/{y}.png Points Tiles
ObservationsApi observations_deleted_get GET /observations/deleted Observations Deleted
ObservationsApi observations_get GET /observations Observation Search
ObservationsApi observations_histogram_get GET /observations/histogram Observation Histogram
ObservationsApi observations_id_delete DELETE /observations/{id} Observation Delete
ObservationsApi observations_id_fave_post POST /observations/{id}/fave Observations Fave
ObservationsApi observations_id_get GET /observations/{id} Observation Details
ObservationsApi observations_id_put PUT /observations/{id} Observation Update
ObservationsApi observations_id_quality_metric_delete DELETE /observations/{id}/quality/{metric} Quality Metric Delete
ObservationsApi observations_id_quality_metric_post POST /observations/{id}/quality/{metric} Quality Metric Set
ObservationsApi observations_id_review_post POST /observations/{id}/review Observations Review
ObservationsApi observations_id_subscriptions_get GET /observations/{id}/subscriptions Observation Subscriptions
ObservationsApi observations_id_taxon_summary_get GET /observations/{id}/taxon_summary Observation Taxon Summary
ObservationsApi observations_id_unfave_delete DELETE /observations/{id}/unfave Observations Unfave
ObservationsApi observations_id_unreview_post POST /observations/{id}/unreview Observations Unreview
ObservationsApi observations_id_viewed_updates_put PUT /observations/{id}/viewed_updates Observation Field Value Update
ObservationsApi observations_identifiers_get GET /observations/identifiers Observation Identifiers
ObservationsApi observations_observers_get GET /observations/observers Observation Observers
ObservationsApi observations_popular_field_values_get GET /observations/popular_field_values Observation Popular Field Values
ObservationsApi observations_post POST /observations Observation Create
ObservationsApi observations_species_counts_get GET /observations/species_counts Observation Species Counts
ObservationsApi observations_updates_get GET /observations/updates Observation User Updates
ObservationsApi subscriptions_observation_id_subscribe_post POST /subscriptions/observation/{id}/subscribe Observation Subscribe
ObservationsApi votes_unvote_observation_id_delete DELETE /votes/unvote/observation/{id} Observation Unvote
ObservationsApi votes_vote_observation_id_post POST /votes/vote/observation/{id} Observation Vote
PhotosApi photos_post POST /photos Photo Create
PlacesApi places_autocomplete_get GET /places/autocomplete Place Autocomplete
PlacesApi places_id_get GET /places/{id} Place Details
PlacesApi places_nearby_get GET /places/nearby Nearby Places
PolygonTilesApi places_place_id_zoom_xy_png_get GET /places/{place_id}/{zoom}/{x}/{y}.png Place Tiles
PolygonTilesApi taxon_places_taxon_id_zoom_xy_png_get GET /taxon_places/{taxon_id}/{zoom}/{x}/{y}.png Taxon Place Tiles
PolygonTilesApi taxon_ranges_taxon_id_zoom_xy_png_get GET /taxon_ranges/{taxon_id}/{zoom}/{x}/{y}.png Taxon Range Tiles
PostsApi posts_for_user_get GET /posts/for_user Posts For User
PostsApi posts_get GET /posts Posts Search
PostsApi posts_id_delete DELETE /posts/{id} Post Delete
PostsApi posts_id_put PUT /posts/{id} Post Update
PostsApi posts_post POST /posts Post Create
ProjectObservationsApi project_observations_id_delete DELETE /project_observations/{id} Project Observation Delete
ProjectObservationsApi project_observations_id_put PUT /project_observations/{id} Project Observation Update
ProjectObservationsApi project_observations_post POST /project_observations Project Observation Create
ProjectsApi projects_autocomplete_get GET /projects/autocomplete Project Autocomplete
ProjectsApi projects_get GET /projects Project Search
ProjectsApi projects_id_add_post POST /projects/{id}/add Project Add
ProjectsApi projects_id_get GET /projects/{id} Project Details
ProjectsApi projects_id_join_post POST /projects/{id}/join Projects Join
ProjectsApi projects_id_leave_delete DELETE /projects/{id}/leave Projects Leave
ProjectsApi projects_id_members_get GET /projects/{id}/members Project Members
ProjectsApi projects_id_membership_get GET /projects/{id}/membership Membership of current user
ProjectsApi projects_id_remove_delete DELETE /projects/{id}/remove Project Add
ProjectsApi projects_id_subscriptions_get GET /projects/{id}/subscriptions Project Subscriptions
ProjectsApi subscriptions_project_id_subscribe_post POST /subscriptions/project/{id}/subscribe Project Subscribe
SearchApi search_get GET /search Site Search
TaxaApi taxa_autocomplete_get GET /taxa/autocomplete Taxon Autocomplete
TaxaApi taxa_get GET /taxa Taxon Search
TaxaApi taxa_id_get GET /taxa/{id} Taxon Details
UtfGridApi colored_heatmap_zoom_xy_grid_json_get GET /colored_heatmap/{zoom}/{x}/{y}.grid.json Colored Heatmap Tiles UTFGrid
UtfGridApi grid_zoom_xy_grid_json_get GET /grid/{zoom}/{x}/{y}.grid.json Grid Tiles UTFGrid
UtfGridApi heatmap_zoom_xy_grid_json_get GET /heatmap/{zoom}/{x}/{y}.grid.json Heatmap Tiles UTFGrid
UtfGridApi points_zoom_xy_grid_json_get GET /points/{zoom}/{x}/{y}.grid.json Points Tiles UTFGrid
UsersApi users_autocomplete_get GET /users/autocomplete User Autocomplete
UsersApi users_id_get GET /users/{id} User Details
UsersApi users_id_mute_delete DELETE /users/{id}/mute Unmute a User
UsersApi users_id_mute_post POST /users/{id}/mute Mute a User
UsersApi users_id_projects_get GET /users/{id}/projects User Projects
UsersApi users_id_put PUT /users/{id} User Update
UsersApi users_me_get GET /users/me Users Me
UsersApi users_update_session_put PUT /users/update_session User Update Session

Documentation For Models

To get access to the crate's generated documentation, use:

cargo doc --open



~255K SLoC