Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/inaturalist:inaturalist-observation-photos-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
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 Specification
openapi: 3.2.0
info:
title: iNaturalist Observation Photos 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: Observation Photos
description: Create and delete
paths:
/observation_photos/{id}:
put:
summary: Observation Photo Update
description: Update an observation photo
parameters:
- $ref: '#/components/parameters/path_id'
tags:
- Observation Photos
security:
- api_token: []
responses:
'200':
description: OK
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
observation_photo[position]:
type: integer
description: Position in which the photo is displayed for the observation
file:
type: string
description: The photo
format: binary
operationId: putObservationPhotosById
x-operation-id-source: derived
delete:
summary: Observation Photo Delete
description: Delete an observation photo
parameters:
- $ref: '#/components/parameters/path_id'
tags:
- Observation Photos
security:
- api_token: []
responses:
'200':
description: OK
operationId: deleteObservationPhotosById
x-operation-id-source: derived
/observation_photos:
post:
summary: Observation Photo Create
description: Create an observation photo
tags:
- Observation Photos
security:
- api_token: []
responses:
'200':
description: OK
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
observation_photo[observation_id]:
type: integer
description: Observation ID
observation_photo[uuid]:
type: string
description: Observation UUID
file:
type: string
description: The photo
format: binary
operationId: postObservationPhotos
x-operation-id-source: derived
components:
parameters:
path_id:
name: id
in: path
required: true
description: ID of the record
schema:
type: integer
securitySchemes:
api_token:
type: apiKey
name: Authorization
in: header
x-provenance:
method: harvested
publisher: iNaturalist
source: https://api.inaturalist.org/v1/swagger.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)