openapi: 3.0.3
info:
title: Open Source Model Models API
description: '# 🚀 Get started here ✨ Link to [Bytez Docs](https://docs.bytez.com/model-api/docs/welcome).'
version: 1.0.0
servers:
- url: https://api.bytez.com
description: Production server
tags:
- name: Models
paths:
/models/v2/{modelId}:
post:
summary: Run Model
description: Runs an open/closed model. Acts serverlessly. (We manage everything behind the scenes.)
operationId: runModel
parameters:
- $ref: '#/components/parameters/modelId'
requestBody:
description: 'The required inputs vary by task. For text-based tasks like text-generation, summarization, and translation, include the "text" field. For chat tasks, use "messages". For image tasks (like image-to-text, image-classification, object-detection, etc.), supply input using either "url" or "base64". For audio tasks such as automatic-speech-recognition, provide audio using "url" or "base64". Question-based tasks like question-answering require both "question" and "context". Zero-shot tasks need "candidate_labels" and may also require "text" or "image". Some tasks, like unconditional-image-generation, may not need any input. Always refer to the specific model''s task to determine the required fields.
'
required: true
content:
application/json:
schema:
type: object
properties:
text:
type: string
description: Input text to be processed by the model (used for most NLP tasks).
messages:
type: array
description: 'An array of chat messages representing the conversation history. Each message must have a `role` (`system`, `user`, or `assistant`) and `content`.
The `content` can be:
- A simple string - An array of content blocks where each block has a `type` (e.g. `text`, `image`, `audio`, or `video`) and the corresponding data via `text`, `url`, or `base64`.
'
items:
type: object
required:
- role
- content
properties:
role:
type: string
enum:
- system
- user
- assistant
description: The sender of the message.
content:
oneOf:
- type: string
description: Text-only message content.
- type: array
description: Multi-modal message content blocks.
items:
type: object
required:
- type
properties:
type:
type: string
enum:
- text
- image
- audio
- video
description: The type of content block.
text:
type: string
description: Text content (used with type 'text').
url:
type: string
format: uri
description: HTTP URL to image/audio/video (used with type 'image/audio/video').
base64:
type: string
description: Base64-encoded image/audio/video (used with type 'image/audio/video').
url:
type: string
format: uri
description: URL to an image, audio, or video file (used for image/audio/video tasks).
base64:
type: string
description: Handles Base64-encoded image, audio, or video. Using URLs is recommended to avoid large payloads, which slow your requests down.
question:
type: string
description: Question text (used in question-answering tasks).
context:
type: string
description: Context paragraph (used in question-answering).
candidate_labels:
type: array
items:
type: string
description: List of candidate labels (used in zero-shot tasks).
stream:
type: boolean
description: Enable/disable text streaming.
json:
type: boolean
description: Similar to stream, but for media. Streams back media instead returning it in JSON format.
params:
type: object
description: Model-specific parameters. See model documentation for details.
properties:
max_new_tokens:
type: integer
description: Maximum length of the response.
temperature:
type: number
description: Sampling temperature for generation.
responses:
'200':
description: Successful response from the model.
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: null
description: Null if everything is fine
output:
description: Model output will either be a string, object, or array of items.
oneOf:
- type: string
- type: object
- type: array
items: {}
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimitError'
security:
- apiKeyAuth: []
tags:
- Models
/models/v2/list/models:
get:
summary: Models
description: 'Retrieve a list of available models for various tasks. Use the query parameter `task` to filter by task type, e.g. `chat`.
'
operationId: getModels
parameters:
- name: task
in: query
description: 'The specific task type to filter models. Run list.tasks() for the full list. Some supported tasks include:
`audio-classification`, `audio-text-to-text`, `automatic-speech-recognition`, `chat`, `depth-estimation`, `document-question-answering`, `feature-extraction`, `fill-mask`, `image-classification`, `image-feature-extraction`, `image-segmentation`, `image-text-to-text`, `image-to-text`, `mask-generation`, `object-detection`, `question-answering`, `sentence-similarity`, `summarization`, `text-classification`, `text-generation`, `text-to-audio`, `text-to-image`, `text-to-speech`, `text-to-video`, `text2text-generation`, `token-classification`, `translation`, `unconditional-image-generation`, `video-classification`, `video-text-to-text`, `visual-question-answering`, `zero-shot-classification`, `zero-shot-image-classification`, `zero-shot-object-detection`.'
required: false
schema:
type: string
example: chat
responses:
'200':
description: A successful response containing the list of models.
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: null
description: Null if everything is fine
output:
type: array
description: An array of models
items:
type: object
properties:
meter:
type: string
example: sm-free
description: The meter is based on GPU RAM required
meterPrice:
type: string
example: 0.0006478333 / sec
description: Price per second to run model
modelId:
type: string
example: 0-hero/Matter-0.1-Slim-7B-C
params:
type: number
example: 7.24
description: Number of parameters in billions
ramRequired:
type: number
example: 29
description: GPU RAM required in GB
task:
type: string
example: chat
required:
- meter
- meterPrice
- modelId
- params
- ramRequired
- task
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimitError'
security:
- apiKeyAuth: []
tags:
- Models
/models/v2/list/tasks:
get:
summary: Tasks
description: Retrieve a list of tasks
operationId: getTasks
responses:
'200':
description: A successful response containing the list of tasks.
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: null
description: Null if everything is fine
output:
type: array
description: An array of tasks
items:
type: string
example:
- text-generation
- text-to-image
- text-to-video
- '...'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimitError'
security:
- apiKeyAuth: []
tags:
- Models
components:
responses:
RateLimitError:
description: Too Many Requests – You have hit the rate limit.
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: Rate limit exceeded
output:
type: string
example: null
Unauthorized:
description: Auth error - check your api key and how you're sending it.
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: Unauthorized
output:
type: string
example: null
parameters:
modelId:
name: modelId
in: path
required: true
description: The model you want to run (e.g., `openai-community/gpt2`).
schema:
type: string
securitySchemes:
apiKeyAuth:
type: apiKey
in: header
name: Authorization
description: "Set `Authorization` header to `BYTEZ_KEY` \n``` 'Authorization: YOUR_KEY_HERE' ```\n"