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/nexgen-cloud-conversations-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 email required.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: AI Studio Conversations API
version: '0.1'
description: 'The AI Studio API is a REST API for the full lifecycle of custom AI models on Hyperstack AI Studio: curate and generate training datasets, fine-tune foundation models on your data, evaluate training results, deploy models, and run inference. Inference runs on base and fine-tuned models, covering text chat (OpenAI-compatible chat completions) and image generation and editing.
## Base URL
All requests are sent to:
```
https://console.hyperstack.cloud/ai/api/v1
```
## Authentication
Every request requires an API key. Pass it as the `api_key` request header, with the raw key as the value and no prefix (`api_key: YOUR_API_KEY`). Generate a key on the [API Keys](https://console.hyperstack.cloud/api-keys) page in the Hyperstack console. See [Getting Started with the API](https://docs.hyperstack.cloud/docs/ai-studio/getting-started#getting-started-with-the-api) for the full walkthrough.
## Request and response format
Requests use standard HTTP methods (`GET`, `POST`, `PUT`, `PATCH`, `DELETE`) with `application/json` bodies unless noted otherwise. Responses are `application/json`. The text inference endpoints, such as [chat completions](https://docs.hyperstack.cloud/docs/ai-studio-api-reference/chat-completions), are OpenAI-compatible.'
servers:
- url: https://console.hyperstack.cloud/ai/api/v1
security:
- apiKey: []
tags:
- name: Conversations
description: Conversation threads and message history for AI Studio chat sessions. These endpoints let you create conversations, send messages, retrieve message history, and delete conversation threads.
paths:
/conversations:
get:
description: Returns all conversation threads for the authenticated user. Conversations are persistent chat sessions, created in the AI Studio Playground or via the Send message API, that retain message history, model selection, and parameter settings across sessions.
operationId: getConversations
parameters:
- in: query
name: page
required: false
description: Page number to retrieve. Defaults to 1.
schema:
type: integer
default: 1
- in: query
name: per_page
required: false
description: Number of conversations per page. Defaults to 20.
schema:
type: integer
default: 20
- in: query
name: search
required: false
description: Filter conversations by title (case-insensitive).
schema:
type: string
responses:
'200':
description: A paginated list of your conversations.
content:
application/json:
schema:
type: object
properties:
conversations:
type: array
description: The conversations on this page, ordered by most recent activity.
items:
type: object
properties:
id:
type: integer
description: Unique conversation ID.
title:
type: string
description: Conversation title, generated automatically from the first message and editable via the rename endpoint.
model_name:
type: string
description: The model used in the conversation.
base_model_id:
type: integer
description: ID of the base model used in the conversation.
message_count:
type: integer
description: Number of messages in the conversation.
last_message_preview:
type: string
description: A short preview of the most recent message.
settings:
type: object
description: Inference settings applied to the conversation, such as temperature or top_p.
system_prompt_id:
type: integer
nullable: true
description: ID of the saved system prompt applied to the conversation, or null if none.
created_at:
type: string
description: When the conversation was created.
modified_at:
type: string
nullable: true
description: When the conversation was last updated, or null if it has not changed since creation.
is_deleted:
type: boolean
description: Whether the conversation has been soft-deleted.
deleted_at:
type: string
nullable: true
description: When the conversation was deleted, or null if it has not been deleted.
user_id:
type: integer
description: ID of the user who owns the conversation.
organization_id:
type: integer
description: ID of the organization that owns the conversation.
lorax_model_id:
type: integer
nullable: true
description: ID of the LoRA-served fine-tuned model used for the conversation, or null if not applicable.
page:
type: integer
description: The current page number.
pages:
type: integer
description: Total number of pages.
per_page:
type: integer
description: Number of conversations per page.
total:
type: integer
description: Total number of conversations.
example:
conversations:
- id: 1001
title: Describe the attached image
model_name: Qwen/Qwen3-VL-8B-Instruct
base_model_id: 1001
message_count: 1
last_message_preview: This image is a stylized, pixel-art depiction of a sunset over mountains.
settings: {}
system_prompt_id: null
created_at: Wed, 15 Jan 2025 10:30:00 GMT
modified_at: Wed, 15 Jan 2025 10:31:00 GMT
is_deleted: false
deleted_at: null
user_id: 1001
organization_id: 1001
lorax_model_id: null
page: 1
pages: 1
per_page: 20
total: 1
example:
conversations:
- id: 1001
title: Describe the attached image
model_name: Qwen/Qwen3-VL-8B-Instruct
base_model_id: 1001
message_count: 1
last_message_preview: This image is a stylized, pixel-art depiction of a sunset over mountains.
settings: {}
system_prompt_id: null
created_at: Wed, 15 Jan 2025 10:30:00 GMT
modified_at: Wed, 15 Jan 2025 10:31:00 GMT
is_deleted: false
deleted_at: null
user_id: 1001
organization_id: 1001
lorax_model_id: null
page: 1
pages: 1
per_page: 20
total: 1
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorSchema'
description: Bad Request
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorSchema'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorSchema'
description: Not Found
'422':
description: Validation Error
summary: List conversations
tags:
- Conversations
/conversations/send_message:
post:
description: Sends a message to a conversation thread and returns the model's response. If `conversation_id` is omitted or null, a new conversation thread is created. Supports both streaming and non-streaming response modes via the `stream` flag. An optional `system_prompt_id` attaches a saved system prompt template to the request.
operationId: sendMessage
parameters: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConversationSendMessageRequestSchema'
example:
message: What is in this image?
model: Qwen/Qwen3-VL-8B-Instruct
image_attachments:
- a1b2c3d4-e5f6-7890-abcd-ef1234567890
stream: false
example:
message: What is in this image?
model: Qwen/Qwen3-VL-8B-Instruct
image_attachments:
- a1b2c3d4-e5f6-7890-abcd-ef1234567890
stream: false
responses:
'200':
content:
application/json:
example:
choices:
- finish_reason: stop
index: 0
message:
content: 'This image is a stylized, pixel-art depiction of a sunset or sunrise over mountains.
Here''s a breakdown of what''s in the image:
- **The Sun:** A large, pale yellow/cream-colored circle sits just above the mountain ridge, appearing to be setting or rising.
- **The Mountains:** Two dark purple, jagged peaks form the foreground. The silhouette suggests a simple, stylized mountain range.
- **The Sky:** The background sky features a gradient of colors, transitioning from deep purple at the top to a warm orange/pink near the horizon where the sun is located.
The overall aesthetic is minimalist and retro, reminiscent of early video game graphics or digital art with a pixelated style. It evokes a sense of calm and natural beauty through its simple composition.'
role: assistant
conversation:
id: 1001
title: Image content unknown.
created: 1736932200
id: a1b2c3d4e5f6789012345678901234ab
model: qwen/qwen3-vl-8b-instruct
object: chat.completion
system_fingerprint: ''
usage:
completion_tokens: 159
completion_tokens_details:
accepted_prediction_tokens: 0
audio_tokens: 0
image_tokens: 0
reasoning_tokens: 0
rejected_prediction_tokens: 0
text_tokens: 159
video_tokens: 0
prompt_tokens: 93
prompt_tokens_details:
audio_tokens: 0
cache_creation_input_tokens: 0
cache_read_input_tokens: 0
cached_tokens: 0
image_tokens: 79
text_tokens: 14
video_tokens: 0
total_tokens: 252
schema:
type: object
properties:
choices:
type: array
description: Array of completion choices (typically one).
items:
type: object
properties:
finish_reason:
type: string
description: Reason the model stopped generating tokens (e.g. `stop`, `length`).
index:
type: integer
description: Index of this choice in the array.
message:
type: object
description: The generated assistant message.
properties:
role:
type: string
description: Always `"assistant"`.
content:
type: string
description: The text content of the generated response.
conversation:
type: object
description: The conversation this message belongs to.
properties:
id:
type: integer
description: Unique conversation ID.
title:
type: string
description: Conversation title, generated automatically from the first message and editable via the rename endpoint.
created:
type: integer
description: Unix timestamp of when the completion was created.
model:
type: string
description: Model used for this completion.
usage:
type: object
description: Token usage statistics for this completion.
properties:
prompt_tokens:
type: integer
description: Tokens in the prompt.
completion_tokens:
type: integer
description: Tokens in the generated response.
total_tokens:
type: integer
description: Total tokens consumed.
completion_tokens_details:
type: object
description: Breakdown of the completion (output) token count by category.
properties:
accepted_prediction_tokens:
type: integer
description: Tokens from accepted predictions.
audio_tokens:
type: integer
description: Audio tokens in the completion.
image_tokens:
type: integer
description: Image tokens in the completion.
reasoning_tokens:
type: integer
description: Tokens used for reasoning.
rejected_prediction_tokens:
type: integer
description: Tokens from rejected predictions.
text_tokens:
type: integer
description: Text tokens in the completion.
video_tokens:
type: integer
description: Video tokens in the completion.
prompt_tokens_details:
type: object
description: Breakdown of the prompt (input) token count by category.
properties:
audio_tokens:
type: integer
description: Audio tokens in the prompt.
cache_creation_input_tokens:
type: integer
description: Input tokens used to create a cache entry.
cache_read_input_tokens:
type: integer
description: Input tokens read from the cache.
cached_tokens:
type: integer
description: Cached tokens in the prompt.
image_tokens:
type: integer
description: Image tokens in the prompt.
text_tokens:
type: integer
description: Text tokens in the prompt.
video_tokens:
type: integer
description: Video tokens in the prompt.
id:
type: string
description: Unique identifier for the chat completion.
object:
type: string
description: The object type. Always `chat.completion`.
system_fingerprint:
type: string
description: Backend configuration fingerprint for the model serving the request. May be an empty string.
example:
choices:
- finish_reason: stop
index: 0
message:
content: 'This image is a stylized, pixel-art depiction of a sunset or sunrise over mountains.
Here''s a breakdown of what''s in the image:
- **The Sun:** A large, pale yellow/cream-colored circle sits just above the mountain ridge, appearing to be setting or rising.
- **The Mountains:** Two dark purple, jagged peaks form the foreground. The silhouette suggests a simple, stylized mountain range.
- **The Sky:** The background sky features a gradient of colors, transitioning from deep purple at the top to a warm orange/pink near the horizon where the sun is located.
The overall aesthetic is minimalist and retro, reminiscent of early video game graphics or digital art with a pixelated style. It evokes a sense of calm and natural beauty through its simple composition.'
role: assistant
conversation:
id: 1001
title: Image content unknown.
created: 1736932200
id: a1b2c3d4e5f6789012345678901234ab
model: qwen/qwen3-vl-8b-instruct
object: chat.completion
system_fingerprint: ''
usage:
completion_tokens: 159
completion_tokens_details:
accepted_prediction_tokens: 0
audio_tokens: 0
image_tokens: 0
reasoning_tokens: 0
rejected_prediction_tokens: 0
text_tokens: 159
video_tokens: 0
prompt_tokens: 93
prompt_tokens_details:
audio_tokens: 0
cache_creation_input_tokens: 0
cache_read_input_tokens: 0
cached_tokens: 0
image_tokens: 79
text_tokens: 14
video_tokens: 0
total_tokens: 252
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorSchema'
description: Bad Request
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorSchema'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorSchema'
description: Not Found
'422':
description: Validation Error
summary: Send message
tags:
- Conversations
/conversations/{conversation_id}:
delete:
description: Permanently deletes a conversation thread and all of its messages. This action is irreversible and cannot be undone.
operationId: deleteConversation
parameters:
- in: path
name: conversation_id
required: true
schema:
format: int32
type: integer
description: Unique identifier of the conversation to delete. Use the `id` from [List conversations](https://docs.hyperstack.cloud/docs/ai-studio-api-reference/get-conversations).
responses:
'200':
content:
application/json:
example:
message: Conversation deleted successfully
schema:
type: object
properties:
message:
type: string
description: Confirmation that the conversation was deleted.
example:
message: Conversation deleted successfully
description: Conversation deleted successfully
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorSchema'
description: Bad Request
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorSchema'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorSchema'
description: Not Found
'422':
description: Validation Error
summary: Delete conversation
tags:
- Conversations
patch:
tags:
- Conversations
operationId: renameConversation
summary: Rename conversation
description: Rename a conversation that you own. Provide the new title in the request body. Returns the updated conversation.
parameters:
- in: path
name: conversation_id
required: true
description: Unique identifier of the conversation to rename. Use the `id` from [List conversations](https://docs.hyperstack.cloud/docs/ai-studio-api-reference/get-conversations).
schema:
type: integer
format: int32
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConversationRenameSchema'
example:
title: Describe the attached image
example:
title: Describe the attached image
responses:
'200':
description: The conversation was renamed. Returns the updated conversation.
content:
application/json:
schema:
type: object
properties:
conversation:
type: object
description: The updated conversation.
properties:
id:
type: integer
description: Unique conversation ID.
title:
type: string
description: Conversation title, generated automatically from the first message and editable via the rename endpoint.
base_model_id:
type: integer
description: ID of the base model used in the conversation.
user_id:
type: integer
description: ID of the user who owns the conversation.
organization_id:
type: integer
description: ID of the organization that owns the conversation.
settings:
type: object
description: Inference settings applied to the conversation, such as temperature or top_p.
system_prompt_id:
type: integer
nullable: true
description: ID of the saved system prompt applied to the conversation, or null if none.
created_at:
type: string
description: When the conversation was created.
modified_at:
type: string
nullable: true
description: When the conversation was last updated, or null if it has not changed since creation.
is_deleted:
type: boolean
description: Whether the conversation has been soft-deleted.
deleted_at:
type: string
nullable: true
description: When the conversation was deleted, or null if it has not been deleted.
lorax_model_id:
type: integer
nullable: true
description: ID of the LoRA-served fine-tuned model used for the conversation, or null if not applicable.
example:
conversation:
id: 1001
title: Describe the attached image
base_model_id: 1001
user_id: 1001
organization_id: 1001
settings: {}
system_prompt_id: null
created_at: Wed, 15 Jan 2025 10:30:00 GMT
modified_at: Wed, 15 Jan 2025 10:31:00 GMT
is_deleted: false
deleted_at: null
lorax_model_id: null
example:
conversation:
id: 1001
title: Describe the attached image
base_model_id: 1001
user_id: 1001
organization_id: 1001
settings: {}
system_prompt_id: null
created_at: Wed, 15 Jan 2025 10:30:00 GMT
modified_at: Wed, 15 Jan 2025 10:31:00 GMT
is_deleted: false
deleted_at: null
lorax_model_id: null
'400':
description: The request was invalid, for example an empty title.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorSchema'
'401':
description: Authentication failed.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorSchema'
'404':
description: The conversation was not found or is not owned by you.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorSchema'
/conversations/{conversation_id}/messages:
get:
description: Returns the complete message history for the specified conversation thread, ordered chronologically. Each message includes its role, content, and metadata.
operationId: getConversationMessages
parameters:
- in: path
name: conversation_id
required: true
schema:
format: int32
type: integer
description: Unique identifier of the conversation whose messages to retrieve. Use the `id` from [List conversations](https://docs.hyperstack.cloud/docs/ai-studio-api-reference/get-conversations).
responses:
'200':
content:
application/json:
example:
messages:
- content: What is in this image?
image_attachment:
file_reference: a1b2c3d4-e5f6-7890-abcd-ef1234567890
url: https://your-bucket.s3.amazonaws.com/<file_reference>?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&X-Amz-Signature=...
role: user
usage:
completion_tokens: 159
completion_tokens_details:
accepted_prediction_tokens: 0
audio_tokens: 0
image_tokens: 0
reasoning_tokens: 0
rejected_prediction_tokens: 0
text_tokens: 159
video_tokens: 0
prompt_tokens: 93
prompt_tokens_details:
audio_tokens: 0
cache_creation_input_tokens: 0
cache_read_input_tokens: 0
cached_tokens: 0
image_tokens: 79
text_tokens: 14
video_tokens: 0
total_tokens: 252
schema:
type: object
properties:
messages:
type: array
description: Ordered message history for this conversation.
items:
type: object
properties:
content:
type: string
description: Text content of the message.
role:
type: string
description: 'Message author role: `user` or `assistant`.'
image_attachment:
type: object
nullable: true
description: Present on a `user` message that was sent with an image, absent otherwise.
properties:
file_reference:
type: string
description: Reference for the attached image, as returned by [Request an image upload URL](https://docs.hyperstack.cloud/docs/ai-studio-api-reference/upload-image).
url:
type: string
description: A short-lived URL for downloading the attached image.
usage:
type: object
description: Aggregate token usage across the conversation.
properties:
prompt_tokens:
type: integer
completion_tokens:
type: integer
total_tokens:
type: integer
completion_tokens_details:
type: object
description: Breakdown of the completion (output) token count by category.
properties:
accepted_prediction_tokens:
type: integer
description: Tokens from accepted predictions.
audio_tokens:
type: integer
description: Audio tokens in the completion.
image_tokens:
type: integer
description: Image tokens in the completion.
reasoning_tokens:
type: integer
description: Tokens used for reasoning.
rejected_prediction_tokens:
type: integer
description: Tokens from rejected predictions.
text_tokens:
type: integer
description: Text tokens in the completion.
video_tokens:
type: integer
description: Video tokens in the completion.
prompt_tokens_details:
type: object
description: Breakdown of the prompt
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nexgen-cloud/refs/heads/main/openapi/nexgen-cloud-conversations-api-openapi.yml