Operations 3
Documentation
Documentation
https://www.inaturalist.org/pages/api+reference
RateLimits
https://raw.githubusercontent.com/api-evangelist/inaturalist/main/rate-limits/rate-limits.yml
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/inaturalist-taxa-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: iNaturalist Taxa API
description: '# https://api.inaturalist.org/v1/
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.'
version: 1.3.0
servers:
- url: /v1
tags:
- name: Taxa
description: Search and fetch
paths:
/taxa/{id}:
get:
summary: Taxon Details
description: 'Given an ID, or an array of IDs in comma-delimited format, returns
corresponding taxa. A maximum of 30 results will be returned'
parameters:
- $ref: '#/components/parameters/path_multi_id'
- $ref: '#/components/parameters/rank_level'
tags:
- Taxa
responses:
'200':
description: 'Returns an object with metadata and a results array of taxa
'
content:
application/json:
schema:
$ref: '#/components/schemas/TaxaShowResponse'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: getTaxaById
x-operation-id-source: derived
/taxa:
get:
summary: Taxon Search
description: Given zero to many of following parameters, returns taxa matching the search criteria
parameters:
- $ref: '#/components/parameters/autocomplete_q_not_required'
- name: is_active
in: query
description: Taxon is `active`
schema:
type: boolean
- name: id
in: query
description: Comma-separated list of taxon IDs
schema:
type: array
items:
type: integer
- $ref: '#/components/parameters/parent_id'
- $ref: '#/components/parameters/rank'
- $ref: '#/components/parameters/rank_level'
- $ref: '#/components/parameters/id_above'
- $ref: '#/components/parameters/id_below'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/locale'
- $ref: '#/components/parameters/preferred_place_id'
- $ref: '#/components/parameters/only_id'
- $ref: '#/components/parameters/all_names'
- $ref: '#/components/parameters/order'
- $ref: '#/components/parameters/taxa_order_by'
tags:
- Taxa
responses:
'200':
description: 'Returns an object with search metadata and a results array of taxa
'
content:
application/json:
schema:
$ref: '#/components/schemas/TaxaShowResponse'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: getTaxa
x-operation-id-source: derived
/taxa/autocomplete:
get:
summary: Taxon Autocomplete
description: Given an string, returns taxa with names starting with the search term
parameters:
- $ref: '#/components/parameters/autocomplete_q'
- name: is_active
in: query
description: Taxon is `active`
schema:
type: boolean
- $ref: '#/components/parameters/taxa_taxon_id'
- $ref: '#/components/parameters/rank'
- $ref: '#/components/parameters/rank_level'
- name: per_page
in: query
description: Number of results to return in a `page`. The maximum value is 30 for this endpoint
schema:
type: string
- $ref: '#/components/parameters/locale'
- $ref: '#/components/parameters/preferred_place_id'
- $ref: '#/components/parameters/all_names'
tags:
- Taxa
responses:
'200':
description: 'Returns an object with search metadata and a results array of taxa
'
content:
application/json:
schema:
$ref: '#/components/schemas/TaxaAutocompleteResponse'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: getTaxaAutocomplete
x-operation-id-source: derived
components:
parameters:
taxa_order_by:
name: order_by
in: query
description: Sort field
schema:
type: string
enum:
- id
- created_at
- observations_count
default: observations_count
preferred_place_id:
name: preferred_place_id
in: query
description: 'Place preference for regional taxon common names
'
schema:
type: integer
path_multi_id:
name: id
in: path
required: true
description: Must have this ID
schema:
type: array
items:
type: integer
autocomplete_q_not_required:
name: q
in: query
description: Search by name (must start with this value) or by ID (exact match).
schema:
type: string
id_above:
name: id_above
in: query
description: Must have an ID above this value
schema:
type: string
taxa_taxon_id:
name: taxon_id
in: query
description: Only show taxa with this ID, or its descendants
schema:
type: array
items:
type: string
minimum: 1
id_below:
name: id_below
in: query
description: Must have an ID below this value
schema:
type: string
rank_level:
name: rank_level
in: query
description: 'Taxon must have this rank level. Some example values are 70 (kingdom),
60 (phylum), 50 (class), 40 (order), 30 (family), 20 (genus),
10 (species), 5 (subspecies)
'
schema:
type: number
order:
name: order
in: query
description: Sort order
schema:
type: string
enum:
- desc
- asc
default: desc
parent_id:
name: parent_id
in: query
description: Taxon's parent must have this ID
schema:
type: integer
all_names:
name: all_names
in: query
description: Include all taxon names in the response
schema:
type: boolean
autocomplete_q:
name: q
in: query
required: true
description: Search by name (must start with this value) or by ID (exact match).
schema:
type: string
per_page:
name: per_page
in: query
description: 'Number of results to return in a `page`. The maximum value is generally
200 unless otherwise noted
'
schema:
type: string
only_id:
name: only_id
in: query
description: Return only the record IDs
schema:
type: boolean
rank:
name: rank
in: query
description: Taxon must have this rank
schema:
type: array
items:
type: string
enum:
- stateofmatter
- kingdom
- phylum
- subphylum
- superclass
- class
- subclass
- superorder
- order
- suborder
- infraorder
- superfamily
- epifamily
- family
- subfamily
- supertribe
- tribe
- subtribe
- genus
- genushybrid
- species
- hybrid
- subspecies
- variety
- form
locale:
name: locale
in: query
description: 'Locale preference for taxon common names
'
schema:
type: string
schemas:
TaxaAutocompleteResponse:
allOf:
- $ref: '#/components/schemas/BaseResponse'
- required:
- results
properties:
results:
type: array
items:
$ref: '#/components/schemas/AutocompleteTaxon'
Color:
type: object
properties:
id:
type: integer
value:
type: string
BaseResponse:
type: object
properties:
total_results:
type: integer
page:
type: integer
per_page:
type: integer
EstablishmentMeans:
type: object
properties:
establishment_means:
type: string
place:
$ref: '#/components/schemas/CorePlace'
TaxonConservationStatus:
allOf:
- $ref: '#/components/schemas/RawConservationStatus'
- type: object
properties:
place:
$ref: '#/components/schemas/CorePlace'
RawConservationStatus:
type: object
properties:
source_id:
type: integer
description: 'Identifier for the iNat source record associated with this status,
retrievable via https://www.inaturalist.org/sources/:id.json
(this endpoint is not a part of our public API and is thus subject to
change or removal)
'
authority:
type: string
description: 'Organization that declared this status
'
status:
type: string
description: 'Body of the status, often coded, particularly when the status comes
from the IUCN or NatureServe. Consult the authority and/or the
status URL for details about the meanings of codes.
'
status_name:
type: string
description: 'Human-readable name of the status if it was coded.
'
iucn:
type: integer
description: 'Coded value representing the equivalent IUCN status. Mappings:
NOT_EVALUATED = 0, DATA_DEFICIENT = 5, LEAST_CONCERN = 10,
NEAR_THREATENED = 20, VULNERABLE = 30, ENDANGERED = 40,
CRITICALLY_ENDANGERED = 50, EXTINCT_IN_THE_WILD = 60, EXTINCT = 70
'
geoprivacy:
type: string
description: 'Default geoprivacy for observations of this taxon in the status''s place.
'
ShowTaxon:
allOf:
- $ref: '#/components/schemas/CoreTaxon'
- type: object
properties:
ancestor_ids:
type: array
items:
type: integer
colors:
type: array
items:
$ref: '#/components/schemas/Color'
conservation_status:
$ref: '#/components/schemas/ConservationStatus'
conservation_statuses:
type: array
items:
$ref: '#/components/schemas/TaxonConservationStatus'
default_photo:
$ref: '#/components/schemas/TaxonPhoto'
establishment_means:
$ref: '#/components/schemas/EstablishmentMeans'
observations_count:
type: integer
preferred_establishment_means:
type: string
CoreTaxon:
type: object
properties:
id:
type: integer
iconic_taxon_id:
type: integer
iconic_taxon_name:
type: string
is_active:
type: boolean
name:
type: string
preferred_common_name:
type: string
rank:
type: string
rank_level:
type: number
CorePlace:
type: object
properties:
id:
type: integer
name:
type: string
display_name:
type: string
AutocompleteTaxon:
allOf:
- $ref: '#/components/schemas/CoreTaxon'
- type: object
properties:
default_photo:
$ref: '#/components/schemas/TaxonPhoto'
matched_term:
type: string
observations_count:
type: integer
TaxaShowResponse:
allOf:
- $ref: '#/components/schemas/BaseResponse'
- required:
- results
properties:
results:
type: array
items:
$ref: '#/components/schemas/ShowTaxon'
TaxonPhoto:
allOf:
- $ref: '#/components/schemas/Photo'
- type: object
properties:
medium_url:
type: string
square_url:
type: string
Photo:
type: object
properties:
id:
type: integer
attribution:
type: string
license_code:
type: string
url:
type: string
Error:
type: object
properties:
code:
type: integer
message:
type: string
ConservationStatus:
type: object
properties:
place_id:
type: integer
place:
$ref: '#/components/schemas/CorePlace'
status:
type: string
securitySchemes:
api_token:
type: apiKey
name: Authorization
in: header