Documentation Index Fetch the complete documentation index at: https://docs.toapis.com/llms.txt
Use this file to discover all available pages before exploring further.
Playground документации не поддерживает загрузку файлов : Пожалуйста, используйте примеры кода cURL, Python или JavaScript ниже для тестирования.
Важное изменение : Для повышения производительности и контроля затрат мы больше не поддерживаем передачу данных изображений в формате base64 напрямую в API генерации. Пожалуйста, используйте этот эндпоинт для загрузки изображений, а затем используйте полученный URL в запросах генерации.
Зачем сначала загружать?
Производительность - Кодирование base64 увеличивает данные на 33%, предварительная загрузка значительно уменьшает размер запроса
Многократное использование - Загрузите один раз, используйте URL многократно без повторной передачи
Рабочий процесс
Авторизация
Используйте Bearer Token для аутентификации Получите API Key: Посетите Управление API Key Authorization: Bearer YOUR_API_KEY
Body
Файл изображения Поддерживаемые форматы:
JPEG (.jpg, .jpeg)
PNG (.png)
WebP (.webp)
GIF (.gif)
Ограничения:
Максимальный размер файла: 10MB
Цель загрузки (опционально) По умолчанию: generation
Response
ID записи загрузки для отслеживания
Публичный URL загруженного изображения, может использоваться напрямую в API генерации
MIME-тип изображения, например image/jpeg
curl --request POST \
--url https://toapis.com/v1/uploads/images \
--header 'Authorization: Bearer <token>' \
--form 'file=@/path/to/your/image.jpg'
200 Успех
400 Неверный запрос
400 Файл слишком большой
{
"success" : true ,
"message" : "" ,
"data" : {
"id" : "upload_abc12345" ,
"url" : "https://files.toapis.com/uploads/123/1737568800_abc12345.jpg" ,
"mime_type" : "image/jpeg" ,
"size" : 89234
}
}
Полный пример: Рабочий процесс image-to-image
Вот полный пример рабочего процесса image-to-image:
import requests
import time
import os
API_KEY = os.getenv(
"TOAPIS_API_KEY" , "your-ToAPIs-key"
)
BASE_URL = "https://toapis.com"
def _raise_api_error ( resp : requests.Response, payload : dict ) -> None :
if resp.ok:
return
msg = payload.get( "message" ) or payload.get( "error" )
if isinstance (msg, dict ):
msg = msg.get( "message" ) or str (msg)
raise RuntimeError ( f "HTTP { resp.status_code } : { msg or payload } " )
def _require_api_key () -> None :
if not API_KEY :
raise RuntimeError ( "缺少 TOAPIS_API_KEY 环境变量" )
def upload_image ( file_path : str ) -> str :
_require_api_key()
with open (file_path, "rb" ) as f:
resp = requests.post(
f " { BASE_URL } /v1/uploads/images" ,
headers = { "Authorization" : f "Bearer { API_KEY } " },
files = { "file" : f},
)
body = resp.json()
_raise_api_error(resp, body)
if not body.get( "success" ):
raise RuntimeError (body.get( "message" ) or str (body))
return body[ "data" ][ "url" ]
def create_generation ( image_url : str , prompt : str ) -> str :
_require_api_key()
resp = requests.post(
f " { BASE_URL } /v1/images/generations" ,
headers = {
"Authorization" : f "Bearer { API_KEY } " ,
"Content-Type" : "application/json" ,
},
json = {
"model" : "gemini-3-pro-image-preview" ,
"prompt" : prompt,
"image_urls" : [image_url],
"size" : "16:9" ,
},
)
body = resp.json()
_raise_api_error(resp, body)
task_id = body.get( "id" ) or body.get( "task_id" )
if not task_id:
raise RuntimeError ( f "创建任务响应缺少 id: { body } " )
return task_id
def wait_for_result ( task_id : str ) -> str :
_require_api_key()
while True :
resp = requests.get(
f " { BASE_URL } /v1/images/generations/ { task_id } " ,
headers = { "Authorization" : f "Bearer { API_KEY } " },
)
result = resp.json()
_raise_api_error(resp, result)
status = result.get( "status" )
if status == "completed" :
r = result.get( "result" ) or {}
items = r.get( "data" ) or []
if not items or not items[ 0 ].get( "url" ):
raise RuntimeError ( f "completed 但无 URL: { result } " )
return items[ 0 ][ "url" ]
if status == "failed" :
err = result.get( "error" ) or {}
raise RuntimeError (
f "生成失败: { err.get( 'message' ) or result.get( 'fail_reason' ) or result } "
)
time.sleep( 2 )
if __name__ == "__main__" :
image_url = upload_image( "reference.jpg" )
print ( f "✅ 图片已上传: { image_url } " )
task_id = create_generation(image_url, "将这张照片转换为赛博朋克风格" )
print ( f "✅ 任务已创建: { task_id } " )
result_url = wait_for_result(task_id)
print ( f "✅ 生成完成: { result_url } " )