curl --request GET \
--url https://www.modellix.ai/models/{model_slug}/api_schemaconst options = {method: 'GET'};
fetch('https://www.modellix.ai/models/{model_slug}/api_schema', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://www.modellix.ai/models/{model_slug}/api_schema"
response = requests.get(url)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.modellix.ai/models/{model_slug}/api_schema"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.modellix.ai/models/{model_slug}/api_schema")
.asString();const url = 'https://www.modellix.ai/models/{model_slug}/api_schema';
const options = {method: 'GET'};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.modellix.ai/models/{model_slug}/api_schema",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://www.modellix.ai/models/{model_slug}/api_schema")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyimport Foundation
let url = URL(string: "https://www.modellix.ai/models/{model_slug}/api_schema")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.timeoutInterval = 10
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))$response = Invoke-WebRequest -Uri 'https://www.modellix.ai/models/{model_slug}/api_schema' -Method GET{
"servers": [
{
"url": "https://api.modellix.ai/api/v1/alibaba/qwen-image-3.0-pro"
}
],
"post": {
"description": "[Core Function] Qwen Image 3.0 Pro is Alibaba's latest text-to-image model with strong prompt following and photorealism. [Strengths] It supports free-form output size (width*height), optional negative prompts, intelligent prompt rewrite, batch generation of 1-6 images, and long structured prompts for complex layouts. [Best For] Highly recommended for: photorealistic stills, marketing posters with readable text, detailed scene compositions, multi-panel layouts, product hero shots, and multi-variant creative exploration (n up to 6). [Limitations] Do NOT use this if the user needs native 4K output, thinking-mode reasoning, or image editing with reference images (use Qwen Image 3.0 Pro Edit for edits). Keep total pixels within 512*512 to 2048*2048. Very long prompts combined with a long negative_prompt may exceed the model input capacity (about 4.5k tokens total). [Routing] Prefer this over Qwen Image 2.0 Pro for new Qwen Image text-to-image work. If the user provides reference image(s) to edit, route to Qwen Image 3.0 Pro Edit instead.",
"operationId": "qwenImage30ProAsync",
"requestBody": {
"content": {
"application/json": {
"examples": {
"basic": {
"summary": "Basic image generation",
"value": {
"prompt": "A cinematic still of an astronaut exploring an alien planet"
}
},
"custom_size": {
"summary": "Custom size and batch",
"value": {
"n": 2,
"negative_prompt": "blurry text, misspelling",
"prompt": "A movie poster with the title STELLAR ODYSSEY",
"prompt_extend": true,
"size": "1024*1536"
}
}
},
"schema": {
"properties": {
"n": {
"default": 1,
"description": "Number of images to generate (1-6)",
"example": 1,
"maximum": 6,
"minimum": 1,
"type": "integer"
},
"negative_prompt": {
"description": "Negative prompt describing unwanted content",
"example": "blurry, low quality",
"maxLength": 500,
"type": "string"
},
"prompt": {
"description": "Image description text, supports Chinese and English",
"example": "A serene Japanese garden with cherry blossoms",
"maxLength": 4500,
"minLength": 1,
"type": "string"
},
"prompt_extend": {
"default": true,
"description": "Whether to enable intelligent prompt rewriting. Default true (recommended). When enabled, the model rewrites the positive prompt using the mode specified by prompt_extend_mode; most effective for short or simple prompts.",
"example": true,
"type": "boolean"
},
"prompt_extend_mode": {
"default": "direct",
"description": "Prompt rewrite mode when prompt_extend is true. Default direct. direct: Direct Prompt Enhancement (DPE), suitable for most scenarios (T2I and I2I). agent: Agent Prompt Enhancement (APE), finer rewrite; text-to-image (T2I) only.",
"enum": [
"direct",
"agent"
],
"example": "direct",
"type": "string"
},
"seed": {
"description": "Random seed for reproducible results",
"example": 42,
"maximum": 2147483647,
"minimum": 0,
"type": "integer"
},
"size": {
"description": "Output image resolution as width*height (e.g. 1024*1024). Optional; when omitted the model auto-selects. Total pixels should stay within 512*512 to 2048*2048.",
"example": "1024*1024",
"pattern": "^\\d+\\*\\d+$",
"type": "string"
}
},
"required": [
"prompt"
],
"type": "object"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"properties": {
"code": {
"description": "Response code, 0 indicates success",
"example": 0,
"type": "integer"
},
"data": {
"description": "Detailed data about the submitted asynchronous task.",
"properties": {
"get_result": {
"description": "API information to query the task result",
"properties": {
"method": {
"description": "HTTP method",
"example": "GET",
"type": "string"
},
"url": {
"description": "Full URL to query the task result",
"example": "https://api.modellix.ai/api/v1/tasks/task-abc123",
"type": "string"
}
},
"type": "object"
},
"model_id": {
"description": "Model ID",
"example": "model-123",
"type": "string"
},
"status": {
"description": "Task status",
"enum": [
"pending",
"processing"
],
"example": "pending",
"type": "string"
},
"task_id": {
"description": "Unique task identifier",
"example": "task-abc123",
"type": "string"
}
},
"required": [
"status",
"task_id",
"model_id"
],
"type": "object"
},
"message": {
"description": "Response message",
"example": "success",
"type": "string"
}
},
"required": [
"code",
"message",
"data"
],
"type": "object"
}
}
},
"description": "Task submitted successfully"
},
"400": {
"content": {
"application/json": {
"example": {
"code": 400,
"message": "Invalid parameters: parameter 'prompt' is required"
},
"schema": {
"properties": {
"code": {
"description": "Error code (equals HTTP status code)",
"example": 400,
"type": "integer"
},
"message": {
"description": "Error message in format 'Category: detail'",
"example": "Invalid parameters: parameter 'prompt' is required",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
}
}
},
"description": "Invalid request parameters"
},
"401": {
"content": {
"application/json": {
"example": {
"code": 401,
"message": "Authentication failed: invalid API key"
},
"schema": {
"properties": {
"code": {
"description": "Error code (equals HTTP status code)",
"example": 400,
"type": "integer"
},
"message": {
"description": "Error message in format 'Category: detail'",
"example": "Invalid parameters: parameter 'prompt' is required",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
}
}
},
"description": "Unauthorized - Invalid or missing API Key"
},
"429": {
"content": {
"application/json": {
"example": {
"code": 429,
"message": "Rate limit exceeded: 100 requests per minute, retry after 60 seconds"
},
"schema": {
"properties": {
"code": {
"description": "Error code (equals HTTP status code)",
"example": 400,
"type": "integer"
},
"message": {
"description": "Error message in format 'Category: detail'",
"example": "Invalid parameters: parameter 'prompt' is required",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
}
}
},
"description": "Too many requests - Rate limit exceeded",
"headers": {
"X-RateLimit-Limit": {
"description": "Maximum requests per minute",
"schema": {
"example": 100,
"type": "integer"
}
},
"X-RateLimit-Remaining": {
"description": "Remaining quota in current window",
"schema": {
"example": 0,
"type": "integer"
}
},
"X-RateLimit-Reset": {
"description": "Rate limit window reset time (Unix timestamp)",
"schema": {
"example": 1704067260,
"type": "integer"
}
}
}
},
"500": {
"content": {
"application/json": {
"example": {
"code": 500,
"message": "Internal server error"
},
"schema": {
"properties": {
"code": {
"description": "Error code (equals HTTP status code)",
"example": 400,
"type": "integer"
},
"message": {
"description": "Error message in format 'Category: detail'",
"example": "Invalid parameters: parameter 'prompt' is required",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
}
}
},
"description": "Internal server error"
}
},
"summary": "Qwen Image 3.0 Pro",
"tags": [
"Qwen Image"
],
"x-mint": {
"href": "alibaba/qwen-image-3-0-pro"
}
}
}{
"error": true,
"url": "http://www.modellix.ai/models/not-a-real/model-slug/api_schema",
"statusCode": 404,
"statusMessage": "Model Not Found",
"message": "Model Not Found"
}Get Schema
Returns the request and response schema for a Media Model. Pass the model slug in the path (for example alibaba/qwen-image-3.0-pro). This endpoint is public and does not require an API key. The response includes servers (inference base URL) and post (OpenAPI-style operation: description, requestBody JSON Schema, examples, and async task responses). Use servers[0].url as the async generate URL; that call still requires a Bearer API key on https://api.modellix.ai. Resolve slugs from List Active Models.
curl --request GET \
--url https://www.modellix.ai/models/{model_slug}/api_schemaconst options = {method: 'GET'};
fetch('https://www.modellix.ai/models/{model_slug}/api_schema', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://www.modellix.ai/models/{model_slug}/api_schema"
response = requests.get(url)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.modellix.ai/models/{model_slug}/api_schema"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.modellix.ai/models/{model_slug}/api_schema")
.asString();const url = 'https://www.modellix.ai/models/{model_slug}/api_schema';
const options = {method: 'GET'};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.modellix.ai/models/{model_slug}/api_schema",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://www.modellix.ai/models/{model_slug}/api_schema")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyimport Foundation
let url = URL(string: "https://www.modellix.ai/models/{model_slug}/api_schema")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.timeoutInterval = 10
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))$response = Invoke-WebRequest -Uri 'https://www.modellix.ai/models/{model_slug}/api_schema' -Method GET{
"servers": [
{
"url": "https://api.modellix.ai/api/v1/alibaba/qwen-image-3.0-pro"
}
],
"post": {
"description": "[Core Function] Qwen Image 3.0 Pro is Alibaba's latest text-to-image model with strong prompt following and photorealism. [Strengths] It supports free-form output size (width*height), optional negative prompts, intelligent prompt rewrite, batch generation of 1-6 images, and long structured prompts for complex layouts. [Best For] Highly recommended for: photorealistic stills, marketing posters with readable text, detailed scene compositions, multi-panel layouts, product hero shots, and multi-variant creative exploration (n up to 6). [Limitations] Do NOT use this if the user needs native 4K output, thinking-mode reasoning, or image editing with reference images (use Qwen Image 3.0 Pro Edit for edits). Keep total pixels within 512*512 to 2048*2048. Very long prompts combined with a long negative_prompt may exceed the model input capacity (about 4.5k tokens total). [Routing] Prefer this over Qwen Image 2.0 Pro for new Qwen Image text-to-image work. If the user provides reference image(s) to edit, route to Qwen Image 3.0 Pro Edit instead.",
"operationId": "qwenImage30ProAsync",
"requestBody": {
"content": {
"application/json": {
"examples": {
"basic": {
"summary": "Basic image generation",
"value": {
"prompt": "A cinematic still of an astronaut exploring an alien planet"
}
},
"custom_size": {
"summary": "Custom size and batch",
"value": {
"n": 2,
"negative_prompt": "blurry text, misspelling",
"prompt": "A movie poster with the title STELLAR ODYSSEY",
"prompt_extend": true,
"size": "1024*1536"
}
}
},
"schema": {
"properties": {
"n": {
"default": 1,
"description": "Number of images to generate (1-6)",
"example": 1,
"maximum": 6,
"minimum": 1,
"type": "integer"
},
"negative_prompt": {
"description": "Negative prompt describing unwanted content",
"example": "blurry, low quality",
"maxLength": 500,
"type": "string"
},
"prompt": {
"description": "Image description text, supports Chinese and English",
"example": "A serene Japanese garden with cherry blossoms",
"maxLength": 4500,
"minLength": 1,
"type": "string"
},
"prompt_extend": {
"default": true,
"description": "Whether to enable intelligent prompt rewriting. Default true (recommended). When enabled, the model rewrites the positive prompt using the mode specified by prompt_extend_mode; most effective for short or simple prompts.",
"example": true,
"type": "boolean"
},
"prompt_extend_mode": {
"default": "direct",
"description": "Prompt rewrite mode when prompt_extend is true. Default direct. direct: Direct Prompt Enhancement (DPE), suitable for most scenarios (T2I and I2I). agent: Agent Prompt Enhancement (APE), finer rewrite; text-to-image (T2I) only.",
"enum": [
"direct",
"agent"
],
"example": "direct",
"type": "string"
},
"seed": {
"description": "Random seed for reproducible results",
"example": 42,
"maximum": 2147483647,
"minimum": 0,
"type": "integer"
},
"size": {
"description": "Output image resolution as width*height (e.g. 1024*1024). Optional; when omitted the model auto-selects. Total pixels should stay within 512*512 to 2048*2048.",
"example": "1024*1024",
"pattern": "^\\d+\\*\\d+$",
"type": "string"
}
},
"required": [
"prompt"
],
"type": "object"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"properties": {
"code": {
"description": "Response code, 0 indicates success",
"example": 0,
"type": "integer"
},
"data": {
"description": "Detailed data about the submitted asynchronous task.",
"properties": {
"get_result": {
"description": "API information to query the task result",
"properties": {
"method": {
"description": "HTTP method",
"example": "GET",
"type": "string"
},
"url": {
"description": "Full URL to query the task result",
"example": "https://api.modellix.ai/api/v1/tasks/task-abc123",
"type": "string"
}
},
"type": "object"
},
"model_id": {
"description": "Model ID",
"example": "model-123",
"type": "string"
},
"status": {
"description": "Task status",
"enum": [
"pending",
"processing"
],
"example": "pending",
"type": "string"
},
"task_id": {
"description": "Unique task identifier",
"example": "task-abc123",
"type": "string"
}
},
"required": [
"status",
"task_id",
"model_id"
],
"type": "object"
},
"message": {
"description": "Response message",
"example": "success",
"type": "string"
}
},
"required": [
"code",
"message",
"data"
],
"type": "object"
}
}
},
"description": "Task submitted successfully"
},
"400": {
"content": {
"application/json": {
"example": {
"code": 400,
"message": "Invalid parameters: parameter 'prompt' is required"
},
"schema": {
"properties": {
"code": {
"description": "Error code (equals HTTP status code)",
"example": 400,
"type": "integer"
},
"message": {
"description": "Error message in format 'Category: detail'",
"example": "Invalid parameters: parameter 'prompt' is required",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
}
}
},
"description": "Invalid request parameters"
},
"401": {
"content": {
"application/json": {
"example": {
"code": 401,
"message": "Authentication failed: invalid API key"
},
"schema": {
"properties": {
"code": {
"description": "Error code (equals HTTP status code)",
"example": 400,
"type": "integer"
},
"message": {
"description": "Error message in format 'Category: detail'",
"example": "Invalid parameters: parameter 'prompt' is required",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
}
}
},
"description": "Unauthorized - Invalid or missing API Key"
},
"429": {
"content": {
"application/json": {
"example": {
"code": 429,
"message": "Rate limit exceeded: 100 requests per minute, retry after 60 seconds"
},
"schema": {
"properties": {
"code": {
"description": "Error code (equals HTTP status code)",
"example": 400,
"type": "integer"
},
"message": {
"description": "Error message in format 'Category: detail'",
"example": "Invalid parameters: parameter 'prompt' is required",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
}
}
},
"description": "Too many requests - Rate limit exceeded",
"headers": {
"X-RateLimit-Limit": {
"description": "Maximum requests per minute",
"schema": {
"example": 100,
"type": "integer"
}
},
"X-RateLimit-Remaining": {
"description": "Remaining quota in current window",
"schema": {
"example": 0,
"type": "integer"
}
},
"X-RateLimit-Reset": {
"description": "Rate limit window reset time (Unix timestamp)",
"schema": {
"example": 1704067260,
"type": "integer"
}
}
}
},
"500": {
"content": {
"application/json": {
"example": {
"code": 500,
"message": "Internal server error"
},
"schema": {
"properties": {
"code": {
"description": "Error code (equals HTTP status code)",
"example": 400,
"type": "integer"
},
"message": {
"description": "Error message in format 'Category: detail'",
"example": "Invalid parameters: parameter 'prompt' is required",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
}
}
},
"description": "Internal server error"
}
},
"summary": "Qwen Image 3.0 Pro",
"tags": [
"Qwen Image"
],
"x-mint": {
"href": "alibaba/qwen-image-3-0-pro"
}
}
}{
"error": true,
"url": "http://www.modellix.ai/models/not-a-real/model-slug/api_schema",
"statusCode": 404,
"statusMessage": "Model Not Found",
"message": "Model Not Found"
}Path Parameters
Model slug in provider/model form (for example alibaba/qwen-image-3.0-pro). Interpolate the slash as a literal path separator. Do not encode it as %2F.
^[^/]+/[^/]+$"alibaba/qwen-image-3.0-pro"
Response
Media Model OpenAPI-style schema
OpenAPI-style fragment for the model's async POST generate endpoint. Field shapes under post.requestBody and post.responses vary by model.
Inference server entries. POST the request body to servers[0].url (typically https://api.modellix.ai/api/v1/{model_slug}). That generate call requires a Bearer API key.
1Show child attributes
Show child attributes
OpenAPI-style POST operation for the model. requestBody and responses follow the same shapes as the corresponding Media Model docs page.
Show child attributes
Show child attributes