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.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/gems-exchange-apis"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.1.0
info:
title: soil
description: Soil Related Datasets
contact:
name: GEMS
url: https://gems.umn.edu/exchange
email: gemssupport@umn.edu
version: '2.0'
servers:
- url: https://exchange-1.gems.msi.umn.edu/soil/v2
description: GEMS Informatics Exchange production gateway, University of Minnesota
paths:
/grid:
get:
tags:
- dataset
summary: Get All Grids
description: Get grid metadata.
operationId: get_all_grids_grid_get
parameters:
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/GridDetails'
title: Response Get All Grids Grid Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/grid/{id}:
get:
tags:
- dataset
summary: Get Grid
description: Get grid metadata for a target grid resolution (specified by the grid id).
operationId: get_grid_grid__id__get
parameters:
- name: id
in: path
required: true
schema:
type: integer
description: GEMS Grid resolution ID. To explore ID choices and their resolutions, call the
base grid endpoint.
title: Id
description: GEMS Grid resolution ID. To explore ID choices and their resolutions, call the base
grid endpoint.
example: 5
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/GridDetails'
- type: 'null'
title: Response Get Grid Grid Id Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/datasets:
get:
tags:
- dataset
summary: Get Datasets
operationId: get_datasets_datasets_get
parameters:
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DatasetOut'
title: Response Get Datasets Datasets Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/{keyname}/object/search:
get:
tags:
- dataset
summary: Get Search Object
description: Find objects. Bounding box and other filters may be applied.
operationId: get_search_object__keyname__object_search_get
parameters:
- name: keyname
in: path
required: true
schema:
type: string
description: A dataset keyname
title: Keyname
description: A dataset keyname
example: my_dataset
- name: layer
in: query
required: false
schema:
anyOf:
- type: integer
- type: 'null'
description: ID of target layer.
title: Layer
description: ID of target layer.
example: 1
- name: grid
in: query
required: false
schema:
anyOf:
- type: integer
maximum: 6
minimum: 0
- type: 'null'
description: GEMS grid resolution ID, see /grid.
title: Grid
description: GEMS grid resolution ID, see /grid.
example: 3
- name: bbox
in: query
required: false
schema:
anyOf:
- type: string
pattern: ^-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?$
- type: 'null'
description: 'Bounding box filter. Format: minx,miny,maxx,maxy'
title: Bbox
description: 'Bounding box filter. Format: minx,miny,maxx,maxy'
example: -97.2,43.4,-89.4,49.3
- name: offset
in: query
required: false
schema:
anyOf:
- type: integer
- type: 'null'
description: Result number offset. Use with 'limit' parameter to obtain all results.
default: 0
title: Offset
description: Result number offset. Use with 'limit' parameter to obtain all results.
- name: limit
in: query
required: false
schema:
anyOf:
- type: integer
maximum: 300
- type: 'null'
description: 'Pagination: maximum number of returned objects.'
default: 100
title: Limit
description: 'Pagination: maximum number of returned objects.'
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Body_get_search_object__keyname__object_search_get'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ObjectOut'
title: Response Get Search Object Keyname Object Search Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- dataset
summary: Post Search Object
description: Find objects. Bounding box and other filters may be applied.
operationId: post_search_object__keyname__object_search_post
parameters:
- name: keyname
in: path
required: true
schema:
type: string
description: A dataset keyname
title: Keyname
description: A dataset keyname
example: my_dataset
- name: layer
in: query
required: false
schema:
anyOf:
- type: integer
- type: 'null'
description: ID of target layer.
title: Layer
description: ID of target layer.
example: 1
- name: grid
in: query
required: false
schema:
anyOf:
- type: integer
maximum: 6
minimum: 0
- type: 'null'
description: GEMS grid resolution ID, see /grid.
title: Grid
description: GEMS grid resolution ID, see /grid.
example: 3
- name: offset
in: query
required: false
schema:
anyOf:
- type: integer
- type: 'null'
description: Result number offset. Use with 'limit' parameter to obtain all results.
default: 0
title: Offset
description: Result number offset. Use with 'limit' parameter to obtain all results.
- name: limit
in: query
required: false
schema:
anyOf:
- type: integer
maximum: 300
- type: 'null'
description: 'Pagination: maximum number of returned objects.'
default: 100
title: Limit
description: 'Pagination: maximum number of returned objects.'
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
requestBody:
required: true
content:
application/json:
schema:
anyOf:
- type: object
additionalProperties: true
example:
type: MultiPolygon
coordinates:
- - - - -93.56866141384278
- 48.27239561689682
- - -93.74651022075412
- 47.95575515478085
- - -93.26113118522528
- 47.49466006006172
- - -91.31961504310993
- 47.46961968985513
- - -90.98985371362852
- 47.756863557224186
- - -91.54933641870373
- 48.14894016189724
- - -93.56866141384278
- 48.27239561689682
- type: object
additionalProperties: true
example:
type: Polygon
coordinates:
- - - -93.56866141384278
- 48.27239561689682
- - -93.74651022075412
- 47.95575515478085
- - -93.26113118522528
- 47.49466006006172
- - -91.31961504310993
- 47.46961968985513
- - -90.98985371362852
- 47.756863557224186
- - -91.54933641870373
- 48.14894016189724
- - -93.56866141384278
- 48.27239561689682
title: Geojson
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ObjectOut'
title: Response Post Search Object Keyname Object Search Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/{keyname}/object/{id}:
get:
tags:
- dataset
summary: Get Object Metadata
description: Get object metadata for object of interest.
operationId: get_object_metadata__keyname__object__id__get
parameters:
- name: id
in: path
required: true
schema:
type: integer
description: Object ID. Can be obtained using object and layer search endpoints.
title: Id
description: Object ID. Can be obtained using object and layer search endpoints.
example: 4
- name: keyname
in: path
required: true
schema:
type: string
description: A dataset keyname
title: Keyname
description: A dataset keyname
example: my_dataset
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ObjectOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/{keyname}/object/{id}/point:
get:
tags:
- dataset
summary: Get Object Point
description: Get point data for object of interest
operationId: get_object_point__keyname__object__id__point_get
parameters:
- name: id
in: path
required: true
schema:
type: integer
description: Object ID. Can be obtained using object and layer search endpoints.
title: Id
description: Object ID. Can be obtained using object and layer search endpoints.
example: 4
- name: keyname
in: path
required: true
schema:
type: string
description: A dataset keyname
title: Keyname
description: A dataset keyname
example: my_dataset
- name: lon
in: query
required: true
schema:
type: number
maximum: 180
minimum: -180
description: Longitude, in decimal degrees.
title: Lon
description: Longitude, in decimal degrees.
- name: lat
in: query
required: true
schema:
type: number
maximum: 90
minimum: -90
description: Latitude, in decimal degrees.
title: Lat
description: Latitude, in decimal degrees.
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ValueOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/{keyname}/object/{id}/envelope:
get:
tags:
- dataset
summary: Get Object Envelope
operationId: get_object_envelope__keyname__object__id__envelope_get
parameters:
- name: id
in: path
required: true
schema:
type: integer
description: Object ID. Can be obtained using object and layer search endpoints.
title: Id
description: Object ID. Can be obtained using object and layer search endpoints.
example: 4
- name: keyname
in: path
required: true
schema:
type: string
description: A dataset keyname
title: Keyname
description: A dataset keyname
example: my_dataset
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
example:
type: Polygon
coordinates:
- - - -93.56866141384278
- 48.27239561689682
- - -93.74651022075412
- 47.95575515478085
- - -93.26113118522528
- 47.49466006006172
- - -91.31961504310993
- 47.46961968985513
- - -90.98985371362852
- 47.756863557224186
- - -91.54933641870373
- 48.14894016189724
- - -93.56866141384278
- 48.27239561689682
title: Response Get Object Envelope Keyname Object Id Envelope Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/{keyname}/object/{id}/raster:
get:
tags:
- dataset
summary: Get Object Spatial
description: Get object raster data for object of interest. Bounding box filter must be applied.
operationId: get_object_spatial__keyname__object__id__raster_get
parameters:
- name: id
in: path
required: true
schema:
type: integer
description: Object ID. Can be obtained using object and layer search endpoints.
title: Id
description: Object ID. Can be obtained using object and layer search endpoints.
example: 4
- name: keyname
in: path
required: true
schema:
type: string
description: A dataset keyname
title: Keyname
description: A dataset keyname
example: my_dataset
- name: bbox
in: query
required: true
schema:
type: string
pattern: ^-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?$
description: 'Bounding box filter. Format: minx,miny,maxx,maxy'
title: Bbox
description: 'Bounding box filter. Format: minx,miny,maxx,maxy'
example: -97.2,43.4,-89.4,49.3
- name: compress
in: query
required: false
schema:
$ref: '#/components/schemas/CompressEnum'
description: 'Method of Compression. Options: DEFLATE9, LZW, NONE'
default: LZW
description: 'Method of Compression. Options: DEFLATE9, LZW, NONE'
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- dataset
summary: Post Object Spatial
description: Get object raster data for object of interest filtered by GeoJSON geometry.
operationId: post_object_spatial__keyname__object__id__raster_post
parameters:
- name: id
in: path
required: true
schema:
type: integer
description: Object ID. Can be obtained using object and layer search endpoints.
title: Id
description: Object ID. Can be obtained using object and layer search endpoints.
example: 4
- name: keyname
in: path
required: true
schema:
type: string
description: A dataset keyname
title: Keyname
description: A dataset keyname
example: my_dataset
- name: compress
in: query
required: false
schema:
$ref: '#/components/schemas/CompressEnum'
description: 'Method of Compression. Options: DEFLATE9, LZW, NONE'
default: LZW
description: 'Method of Compression. Options: DEFLATE9, LZW, NONE'
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
requestBody:
required: true
content:
application/json:
schema:
anyOf:
- type: object
additionalProperties: true
example:
type: MultiPolygon
coordinates:
- - - - -93.56866141384278
- 48.27239561689682
- - -93.74651022075412
- 47.95575515478085
- - -93.26113118522528
- 47.49466006006172
- - -91.31961504310993
- 47.46961968985513
- - -90.98985371362852
- 47.756863557224186
- - -91.54933641870373
- 48.14894016189724
- - -93.56866141384278
- 48.27239561689682
- type: object
additionalProperties: true
example:
type: Polygon
coordinates:
- - - -93.56866141384278
- 48.27239561689682
- - -93.74651022075412
- 47.95575515478085
- - -93.26113118522528
- 47.49466006006172
- - -91.31961504310993
- 47.46961968985513
- - -90.98985371362852
- 47.756863557224186
- - -91.54933641870373
- 48.14894016189724
- - -93.56866141384278
- 48.27239561689682
title: Geojson
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/{keyname}/object/{id}/stats:
get:
tags:
- dataset
summary: Get Object Stats
description: Get object raster summary statistics for object of interest. Bounding box filter must
be applied.
operationId: get_object_stats__keyname__object__id__stats_get
parameters:
- name: id
in: path
required: true
schema:
type: integer
description: Object ID. Can be obtained using object and layer search endpoints.
title: Id
description: Object ID. Can be obtained using object and layer search endpoints.
example: 4
- name: keyname
in: path
required: true
schema:
type: string
description: A dataset keyname
title: Keyname
description: A dataset keyname
example: my_dataset
- name: bbox
in: query
required: true
schema:
type: string
pattern: ^-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?$
description: 'Bounding box filter. Format: minx,miny,maxx,maxy'
title: Bbox
description: 'Bounding box filter. Format: minx,miny,maxx,maxy'
example: -97.2,43.4,-89.4,49.3
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/StatsOut'
- type: 'null'
title: Response Get Object Stats Keyname Object Id Stats Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- dataset
summary: Post Object Stats
description: Get object raster summary statistics for object of interest. Bounding box filter must
be applied.
operationId: post_object_stats__keyname__object__id__stats_post
parameters:
- name: id
in: path
required: true
schema:
type: integer
description: Object ID. Can be obtained using object and layer search endpoints.
title: Id
description: Object ID. Can be obtained using object and layer search endpoints.
example: 4
- name: keyname
in: path
required: true
schema:
type: string
description: A dataset keyname
title: Keyname
description: A dataset keyname
example: my_dataset
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
requestBody:
required: true
content:
application/json:
schema:
anyOf:
- type: object
additionalProperties: true
example:
type: MultiPolygon
coordinates:
- - - - -93.56866141384278
- 48.27239561689682
- - -93.74651022075412
- 47.95575515478085
- - -93.26113118522528
- 47.49466006006172
- - -91.31961504310993
- 47.46961968985513
- - -90.98985371362852
- 47.756863557224186
- - -91.54933641870373
- 48.14894016189724
- - -93.56866141384278
- 48.27239561689682
- type: object
additionalProperties: true
example:
type: Polygon
coordinates:
- - - -93.56866141384278
- 48.27239561689682
- - -93.74651022075412
- 47.95575515478085
- - -93.26113118522528
- 47.49466006006172
- - -91.31961504310993
- 47.46961968985513
- - -90.98985371362852
- 47.756863557224186
- - -91.54933641870373
- 48.14894016189724
- - -93.56866141384278
- 48.27239561689682
title: Geojson
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/StatsOut'
- type: 'null'
title: Response Post Object Stats Keyname Object Id Stats Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/{keyname}/object/{id}/histogram:
get:
tags:
- dataset
summary: Get Object Hist
description: Get object raster histogram for object of interest filtered by GeoJSON geometry.
operationId: get_object_hist__keyname__object__id__histogram_get
parameters:
- name: id
in: path
required: true
schema:
type: integer
description: Object ID. Can be obtained using object and layer search endpoints.
title: Id
description: Object ID. Can be obtained using object and layer search endpoints.
example: 4
- name: keyname
in: path
required: true
schema:
type: string
description: A dataset keyname
title: Keyname
description: A dataset keyname
example: my_dataset
- name: bbox
in: query
required: true
schema:
type: string
pattern: ^-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?$
description: 'Bounding box filter. Format: minx,miny,maxx,maxy'
title: Bbox
description: 'Bounding box filter. Format: minx,miny,maxx,maxy'
example: -97.2,43.4,-89.4,49.3
- name: nbin
in: query
required: false
schema:
anyOf:
- type: integer
- type: 'null'
title: Nbin
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Histogram'
title: Response Get Object Hist Keyname Object Id Histogram Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- dataset
summary: Post Object Hist
description: Get object raster histogram for object of interest filtered by GeoJSON geometry.
operationId: post_object_hist__keyname__object__id__histogram_post
parameters:
- name: id
in: path
required: true
schema:
type: integer
description: Object ID. Can be obtained using object and layer search endpoints.
title: Id
description: Object ID. Can be obtained using object and layer search endpoints.
example: 4
- name: keyname
in: path
required: true
schema:
type: string
description: A dataset keyname
title: Keyname
description: A dataset keyname
example: my_dataset
- name: nbin
in: query
required: false
schema:
anyOf:
- type: integer
- type: 'null'
title: Nbin
- name: apikey
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: apikey
requestBody:
required: true
content:
application/json:
schema:
anyOf:
- type: object
additionalProperties: true
example:
type: MultiPolygon
coordinates:
- - - - -93.56866141384278
- 48.27239561689682
- - -93.74651022075412
- 47.95575515478085
- - -93.26113118522528
- 47.49466006006172
- - -91.31961504310993
- 47.46961968985513
- - -90.98985371362852
- 47.756863557224186
- - -91.54933641870373
- 48.14894016189724
- - -93.56866141384278
- 48.27239561689682
- type: object
additionalProperties: true
example:
type: Polygon
coordinates:
- - - -93.56866141384278
- 48.27239561689682
- - -93.74651022075412
- 47.95575515478085
- - -93.26113118522528
- 47.49466006006172
- - -91.31961504310993
- 47.46961968985513
- - -90.98985371362852
- 47.756863557224186
- - -91.54933641870373
- 48.14894016189724
- - -93.56866141384278
- 48.27239561689682
title: Geojson
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Histogram'
title: Response Post Object Hist Keyname Object Id Histogram Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/{keyname}/object/{id}/quantiles:
get:
tags:
- dataset
summary: Get Object Quantiles
description: Get object raster data quantiles for object of interest filtered by GeoJSON geometry.
operationId: get_object_quantiles__keyname__object__id__quantiles_get
parameters:
- name: id
in: path
required: true
schema:
type: integer
description: Object ID. Can be obtained using object and layer search endpoints.
title: Id
description: Object ID. Can be obtained using object and layer search endpoints.
example: 4
- name: keyname
in: path
required: true
# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/university-of-minnesota/refs/heads/main/openapi/university-of-minnesota-gems-exchange-soil-openapi.yml