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/nhost-storage-api"
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 Specification
openapi: 3.2.0
info:
version: 1.0.0
title: Nhost Storage API
description: Nhost Storage API - A service for managing and serving files with powerful access control capabilities
license:
name: Apache License 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
contact:
name: Nhost Support
email: support@nhost.io
url: https://nhost.io
servers:
- url: https://{subdomain}.storage.{region}.nhost.run/v1
description: Nhost Storage API Server
tags:
- name: storage
description: Storage operations and presigned URLs
paths:
/files/{id}/presignedurl:
get:
summary: Retrieve presigned URL to retrieve the file
operationId: getFilePresignedURL
description: 'Retrieve presigned URL to retrieve the file. Expiration of the URL is
determined by bucket configuration
'
tags:
- storage
security:
- Authorization: []
parameters:
- name: id
required: true
in: path
description: Unique identifier of the file
schema:
type: string
responses:
'200':
description: File gathered successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PresignedURLResponse'
default:
description: Some error occurred
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/files/{id}/presignedurl/contents:
get:
summary: Retrieve contents of file
operationId: getFileWithPresignedURL
description: Retrieve contents of file
tags:
- storage
security:
- Authorization: []
parameters:
- name: id
required: true
in: path
description: Unique identifier of the file
schema:
type: string
- name: X-Amz-Algorithm
description: Use presignedurl endpoint to generate this automatically
required: true
in: query
schema:
type: string
- name: X-Amz-Credential
description: Use presignedurl endpoint to generate this automatically
required: true
in: query
schema:
type: string
- name: X-Amz-Date
description: Use presignedurl endpoint to generate this automatically
required: true
in: query
schema:
type: string
- name: X-Amz-Expires
description: Use presignedurl endpoint to generate this automatically
required: true
in: query
schema:
type: string
- name: X-Amz-Signature
description: Use presignedurl endpoint to generate this automatically
required: true
in: query
schema:
type: string
- name: X-Amz-SignedHeaders
description: Use presignedurl endpoint to generate this automatically
required: true
in: query
schema:
type: string
- name: X-Amz-Checksum-Mode
description: Use presignedurl endpoint to generate this automatically
required: true
in: query
schema:
type: string
- name: X-Amz-Security-Token
description: Use presignedurl endpoint to generate this automatically
required: false
in: query
schema:
type: string
- name: x-id
description: Use presignedurl endpoint to generate this automatically
required: true
in: query
schema:
type: string
- name: if-match
description: Only return the file if the current ETag matches one of the values provided
in: header
schema:
type: string
- name: if-none-match
description: Only return the file if the current ETag does not match any of the values provided
in: header
schema:
type: string
- name: if-modified-since
description: Only return the file if it has been modified after the given date
in: header
schema:
$ref: '#/components/schemas/RFC2822Date'
- name: if-unmodified-since
description: Only return the file if it has not been modified after the given date
in: header
schema:
$ref: '#/components/schemas/RFC2822Date'
- name: q
description: Image quality (1-100). Only applies to JPEG, WebP and PNG files
in: query
schema:
type: integer
minimum: 1
maximum: 100
- name: h
description: Maximum height to resize image to while maintaining aspect ratio. Only applies to image files
in: query
schema:
type: integer
minimum: 1
- name: w
description: Maximum width to resize image to while maintaining aspect ratio. Only applies to image files
in: query
schema:
type: integer
minimum: 1
- name: b
description: Blur the image using this sigma value. Only applies to image files
in: query
schema:
type: number
minimum: 0
- name: f
description: Output format for image files. Use 'auto' for content negotiation based on Accept header
in: query
schema:
$ref: '#/components/schemas/OutputImageFormat'
- name: Range
description: 'Range of bytes to retrieve from the file. Format: bytes=start-end'
in: header
schema:
type: string
pattern: ^bytes=(\d+-\d*|\d*-\d+)(,(\d+-\d*|\d*-\d+))*$
responses:
'200':
description: File content retrieved successfully
headers:
Cache-Control:
description: Directives for caching mechanisms
schema:
type: string
Content-Type:
description: MIME type of the file
schema:
type: string
Etag:
description: Entity tag for cache validation
schema:
type: string
Content-Disposition:
description: Indicates if the content should be displayed inline or as an attachment
schema:
type: string
Last-Modified:
description: Date and time the file was last modified
schema:
type: string
format: date-time
Surrogate-Key:
description: Cache key for surrogate caching
schema:
type: string
Surrogate-Control:
description: Cache control directives for surrogate caching
schema:
type: string
Accept-Ranges:
description: Always set to bytes. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Ranges
schema:
type: string
content:
application/octet-stream: {}
'206':
description: Partial file content retrieved successfully
headers:
Cache-Control:
description: Directives for caching mechanisms
schema:
type: string
Content-Type:
description: MIME type of the file
schema:
type: string
Content-Range:
description: Range of bytes returned in the response
schema:
type: string
Etag:
description: Entity tag for cache validation
schema:
type: string
Content-Disposition:
description: Indicates if the content should be displayed inline or as an attachment
schema:
type: string
Last-Modified:
description: Date and time the file was last modified
schema:
type: string
format: date-time
Surrogate-Key:
description: Cache key for surrogate caching
schema:
type: string
Surrogate-Control:
description: Cache control directives for surrogate caching
schema:
type: string
content:
application/octet-stream: {}
'304':
description: File not modified since the condition specified in If-Modified-Since or If-None-Match headers
headers:
Cache-Control:
description: Directives for caching mechanisms
schema:
type: string
Etag:
description: Entity tag for cache validation
schema:
type: string
Surrogate-Control:
description: Cache control directives for surrogate caching
schema:
type: string
'412':
description: Precondition failed for conditional request headers (If-Match, If-Unmodified-Since, If-None-Match)
headers:
Cache-Control:
description: Directives for caching mechanisms
schema:
type: string
Etag:
description: Entity tag for cache validation
schema:
type: string
Surrogate-Control:
description: Cache control directives for surrogate caching
schema:
type: string
default:
description: Error occurred
headers:
X-Error:
description: Error message details
schema:
type: string
components:
schemas:
RFC2822Date:
type: string
description: Date in RFC 2822 format
pattern: ^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{1,2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} \w+$
example: Tue, 12 Aug 2025 12:03:50 GMT
x-go-type: Time
OutputImageFormat:
type: string
description: Output format for image files. Use 'auto' for content negotiation based on Accept header
default: same
enum:
- auto
- same
- jpeg
- webp
- png
- avif
example: same
ErrorResponse:
type: object
description: Error information returned by the API.
properties:
error:
type: object
additionalProperties: false
description: Error details.
properties:
message:
type: string
description: Human-readable error message.
example: File not found
data:
type: object
additionalProperties: true
description: Additional data related to the error, if any.
required:
- message
additionalProperties: false
PresignedURLResponse:
type: object
description: Contains a presigned URL for direct file operations.
properties:
url:
type: string
description: The presigned URL for file operations.
example: https://storage.example.com/files/abc123?signature=xyz
expiration:
type: integer
description: The time in seconds until the URL expires.
example: 3600
required:
- url
- expiration
additionalProperties: false
securitySchemes:
Authorization:
type: http
scheme: bearer
bearerFormat: JWT
description: API key to authorize requests.
X-Hasura-Admin-Secret:
type: apiKey
name: X-Hasura-Admin-Secret
in: header
description: Hasura admin secret key for backend/administrative operations.