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/trybloom:trybloom-models-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: Rainbrand Models API
version: 1.0.0
description: Find available models and check their inputs.
servers:
- url: https://www.rainbrand.com/api/v1
security:
- apiKey: []
- bearer: []
- oauth: []
tags:
- name: Models
description: Find available models and check their inputs.
paths:
/models:
get:
operationId: models.list
summary: List models
description: Find a model for the type of file you want to create, then read its input schema before generating.
tags:
- Models
parameters:
- name: type
in: query
schema:
enum:
- image
- video
- audio
- svg
type: string
description: Filter by the type of file the model generates.
allowEmptyValue: true
allowReserved: true
- name: query
in: query
schema:
type: string
maxLength: 200
description: Search available models.
allowEmptyValue: true
allowReserved: true
- name: limit
in: query
schema:
type: integer
minimum: 1
maximum: 50
default: 20
description: Maximum number of models to return. Accepts 1–50; defaults to 20.
allowEmptyValue: true
allowReserved: true
- name: cursor
in: query
schema:
type: string
description: Cursor for the next page. Keep type and query unchanged when using a cursor.
allowEmptyValue: true
allowReserved: true
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
models:
type: array
items:
type: object
properties:
id:
type: string
description: Exact model ID. Use this value when fetching model details or starting a generation.
provider:
type: string
description: Provider that offers the model.
name:
type: string
description: Display name of the model.
type:
enum:
- image
- video
- audio
- svg
type: string
description: Type of file the model generates.
capabilities:
type: array
minItems: 1
items:
enum:
- text-to-image
- image-to-image
- text-to-video
- image-to-video
- audio-to-video
- video-to-video
- text-to-speech
- music-generation
- text-to-svg
type: string
description: Machine-readable tags identifying the model’s supported operations, such as `text-to-image` or `image-to-video`.
description:
type: string
description: Description of the model and its capabilities.
required:
- id
- provider
- name
- type
- capabilities
- description
description: Models matching the filters on this page.
nextCursor:
anyOf:
- type: string
- type: 'null'
description: Pass this value as cursor to get the next page. Null when there are no more results.
hasMore:
type: boolean
description: Whether another page of models is available.
required:
- models
- nextCursor
- hasMore
required:
- data
example:
data:
models:
- id: openai/gpt-image-2.5-sunburst
provider: openai
name: GPT Image 2.5 Sunburst
description: OpenAI's image model for generation and precise editing when overall image quality is the priority.
type: image
capabilities:
- text-to-image
- image-to-image
nextCursor: null
hasMore: false
'400':
description: '400'
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsList400ErrorResponse'
'401':
description: '401'
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsList401ErrorResponse'
'403':
description: '403'
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsList403ErrorResponse'
'429':
description: '429'
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsList429ErrorResponse'
headers:
Retry-After:
description: Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.
schema:
type: integer
minimum: 0
'503':
description: '503'
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsList503ErrorResponse'
headers:
Retry-After:
description: Seconds to wait before retrying, when supplied. Temporary billing unavailability includes this header.
schema:
type: integer
minimum: 1
x-codeSamples:
- lang: bash
label: cURL
source: "curl --request GET \\\n --url 'https://www.rainbrand.com/api/v1/models' \\\n --header \"x-api-key: $RAINBRAND_API_KEY\""
/models/{provider}/{model}:
get:
operationId: models.get
summary: Get a model
description: Read the input schema for a chosen model.
tags:
- Models
parameters:
- name: provider
in: path
required: true
schema:
type: string
minLength: 1
description: First segment of the model ID, before the first slash.
example: openai
example: openai
- name: model
in: path
required: true
schema:
type: string
minLength: 1
description: Remaining model ID after the first slash, URL-encoded as one path segment, including any additional slashes.
example: gpt-image-2.5-sunburst
example: gpt-image-2.5-sunburst
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
description: Exact model ID. Use this value when fetching model details or starting a generation.
provider:
type: string
description: Provider that offers the model.
name:
type: string
description: Display name of the model.
type:
enum:
- image
- video
- audio
- svg
type: string
description: Type of file the model generates.
capabilities:
type: array
minItems: 1
items:
enum:
- text-to-image
- image-to-image
- text-to-video
- image-to-video
- audio-to-video
- video-to-video
- text-to-speech
- music-generation
- text-to-svg
type: string
description: Machine-readable tags identifying the model’s supported operations, such as `text-to-image` or `image-to-video`.
description:
type: string
description: Description of the model and its capabilities.
inputSchema:
type: object
propertyNames:
type: string
additionalProperties: {}
description: JSON Schema for the input sent to POST /generations. Where a reference field accepts HTTPS URLs, Rainbrand handles any conversion required by the provider.
required:
- id
- provider
- name
- type
- capabilities
- description
- inputSchema
required:
- data
example:
data:
id: openai/gpt-image-2.5-sunburst
provider: openai
name: GPT Image 2.5 Sunburst
description: OpenAI's image model for generation and precise editing when overall image quality is the priority.
type: image
capabilities:
- text-to-image
- image-to-image
inputSchema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
prompt:
description: Text prompt describing the image to generate or edit.
type: string
minLength: 1
maxLength: 32000
images:
description: Reference images as stable public HTTPS URLs or PNG, JPEG, or WebP data URIs. URL-based references are subject to limits of 16 MiB per image and 64 MiB combined per request.
type: array
minItems: 1
maxItems: 16
items:
type: string
quality:
description: Output quality.
type: string
enum:
- medium
- high
- xhigh
- max
default: high
size:
description: Output dimensions.
type: string
enum:
- auto
- 1024x1024
- 1536x1024
- 1024x1536
- 2048x2048
- 2048x1152
default: auto
background:
description: Background behavior.
type: string
enum:
- transparent
- opaque
- auto
default: auto
output_format:
description: Generated image format.
type: string
enum:
- png
- webp
- jpeg
default: png
required:
- prompt
allOf:
- if:
properties:
background:
const: transparent
required:
- background
then:
not:
properties:
output_format:
const: jpeg
required:
- output_format
additionalProperties: false
'401':
description: '401'
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsGet401ErrorResponse'
'403':
description: '403'
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsGet403ErrorResponse'
'404':
description: '404'
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsGet404ErrorResponse'
'429':
description: '429'
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsGet429ErrorResponse'
headers:
Retry-After:
description: Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.
schema:
type: integer
minimum: 0
'503':
description: '503'
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsGet503ErrorResponse'
headers:
Retry-After:
description: Seconds to wait before retrying, when supplied. Temporary billing unavailability includes this header.
schema:
type: integer
minimum: 1
x-codeSamples:
- lang: bash
label: cURL
source: "curl --request GET \\\n --url 'https://www.rainbrand.com/api/v1/models/openai/gpt-image-2.5-sunburst' \\\n --header \"x-api-key: $RAINBRAND_API_KEY\""
components:
schemas:
ModelsGet404ErrorResponse:
type: object
properties:
error:
allOf:
- $ref: '#/components/schemas/ApiError'
- anyOf:
- type: object
properties:
code:
const: MODEL_NOT_FOUND
status:
const: 404
message:
type: string
default: Generation model not found
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
type: string
status:
type: integer
message:
type: string
data: {}
required:
- code
- status
- message
required:
- error
ModelsList503ErrorResponse:
type: object
properties:
error:
allOf:
- $ref: '#/components/schemas/ApiError'
- anyOf:
- type: object
properties:
code:
const: CATALOG_UNAVAILABLE
status:
const: 503
message:
type: string
default: Could not load generation models
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
type: string
status:
type: integer
message:
type: string
data: {}
required:
- code
- status
- message
required:
- error
ApiError:
type: object
properties:
code:
type: string
status:
type: integer
message:
type: string
data: {}
required:
- code
- status
- message
ModelsList403ErrorResponse:
type: object
properties:
error:
allOf:
- $ref: '#/components/schemas/ApiError'
- anyOf:
- type: object
properties:
code:
const: ACCOUNT_BANNED
status:
const: 403
message:
type: string
default: This account has been suspended.
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
const: FORBIDDEN
status:
const: 403
message:
type: string
default: Plan upgrade required
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
const: FEATURE_NOT_AVAILABLE
status:
const: 403
message:
type: string
default: This operation isn't available for this integration.
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
type: string
status:
type: integer
message:
type: string
data: {}
required:
- code
- status
- message
required:
- error
ModelsList400ErrorResponse:
type: object
properties:
error:
allOf:
- $ref: '#/components/schemas/ApiError'
- anyOf:
- type: object
properties:
code:
const: INVALID_CURSOR
status:
const: 400
message:
type: string
default: Invalid generation model cursor
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
type: string
status:
type: integer
message:
type: string
data: {}
required:
- code
- status
- message
required:
- error
ModelsGet429ErrorResponse:
type: object
properties:
error:
allOf:
- $ref: '#/components/schemas/ApiError'
- anyOf:
- type: object
properties:
code:
const: TOO_MANY_REQUESTS
status:
const: 429
message:
type: string
default: Rate limit exceeded
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
type: string
status:
type: integer
message:
type: string
data: {}
required:
- code
- status
- message
required:
- error
ModelsGet401ErrorResponse:
type: object
properties:
error:
allOf:
- $ref: '#/components/schemas/ApiError'
- anyOf:
- type: object
properties:
code:
const: UNAUTHORIZED
status:
const: 401
message:
type: string
default: Invalid or missing API credentials
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
type: string
status:
type: integer
message:
type: string
data: {}
required:
- code
- status
- message
required:
- error
ModelsList401ErrorResponse:
type: object
properties:
error:
allOf:
- $ref: '#/components/schemas/ApiError'
- anyOf:
- type: object
properties:
code:
const: UNAUTHORIZED
status:
const: 401
message:
type: string
default: Invalid or missing API credentials
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
type: string
status:
type: integer
message:
type: string
data: {}
required:
- code
- status
- message
required:
- error
ModelsList429ErrorResponse:
type: object
properties:
error:
allOf:
- $ref: '#/components/schemas/ApiError'
- anyOf:
- type: object
properties:
code:
const: TOO_MANY_REQUESTS
status:
const: 429
message:
type: string
default: Rate limit exceeded
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
type: string
status:
type: integer
message:
type: string
data: {}
required:
- code
- status
- message
required:
- error
ModelsGet403ErrorResponse:
type: object
properties:
error:
allOf:
- $ref: '#/components/schemas/ApiError'
- anyOf:
- type: object
properties:
code:
const: ACCOUNT_BANNED
status:
const: 403
message:
type: string
default: This account has been suspended.
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
const: FORBIDDEN
status:
const: 403
message:
type: string
default: Plan upgrade required
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
const: FEATURE_NOT_AVAILABLE
status:
const: 403
message:
type: string
default: This operation isn't available for this integration.
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
type: string
status:
type: integer
message:
type: string
data: {}
required:
- code
- status
- message
required:
- error
ModelsGet503ErrorResponse:
type: object
properties:
error:
allOf:
- $ref: '#/components/schemas/ApiError'
- anyOf:
- type: object
properties:
code:
const: CATALOG_UNAVAILABLE
status:
const: 503
message:
type: string
default: Could not load generation models
data: {}
required:
- code
- status
- message
- type: object
properties:
code:
type: string
status:
type: integer
message:
type: string
data: {}
required:
- code
- status
- message
required:
- error
securitySchemes:
apiKey:
type: apiKey
in: header
name: x-api-key
description: 'Rainbrand API key, for example `x-api-key: bloom_sk_...`.'
bearer:
type: http
scheme: bearer
description: Rainbrand API key (`Bearer bloom_sk_...`) or Rainbrand OAuth access token.
oauth:
type: oauth2
description: Authorization Code with PKCE S256. See [Authentication](https://docs.rainbrand.com/api/authentication).
flows:
authorizationCode:
authorizationUrl: https://www.rainbrand.com/api/auth/oauth2/authorize
tokenUrl: https://www.rainbrand.com/api/auth/oauth2/token
scopes:
openid: Authenticate the user's identity with OpenID Connect.
offline_access: Request a refresh token for access when the user is offline.