Rainbrand Models API
Find available models and check their inputs.
Find available models and check their inputs.
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/rainbrand:rainbrand-models-api"
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.
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: 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.