Перейти к основному содержанию
POST
/
v1
/
uploads
/
images
curl --request POST \
  --url https://toapis.com/v1/uploads/images \
  --header 'Authorization: Bearer <token>' \
  --form 'file=@/path/to/your/image.jpg'
{
  "success": true,
  "message": "",
  "data": {
    "id": "upload_abc12345",
    "url": "https://files.toapis.com/uploads/123/1737568800_abc12345.jpg",
    "mime_type": "image/jpeg",
    "size": 89234
  }
}
Playground документации не поддерживает загрузку файлов: Пожалуйста, используйте примеры кода cURL, Python или JavaScript ниже для тестирования.
Важное изменение: Для повышения производительности и контроля затрат мы больше не поддерживаем передачу данных изображений в формате base64 напрямую в API генерации. Пожалуйста, используйте этот эндпоинт для загрузки изображений, а затем используйте полученный URL в запросах генерации.

Зачем сначала загружать?

  1. Производительность - Кодирование base64 увеличивает данные на 33%, предварительная загрузка значительно уменьшает размер запроса
  2. Многократное использование - Загрузите один раз, используйте URL многократно без повторной передачи

Рабочий процесс

Авторизация

Authorization
string
обязательно
Используйте Bearer Token для аутентификацииПолучите API Key: Посетите Управление API Key
Authorization: Bearer YOUR_API_KEY

Body

file
file
обязательно
Файл изображенияПоддерживаемые форматы:
  • JPEG (.jpg, .jpeg)
  • PNG (.png)
  • WebP (.webp)
  • GIF (.gif)
Ограничения:
  • Максимальный размер файла: 10MB
purpose
string
Цель загрузки (опционально)По умолчанию: generation

Response

success
boolean
Успешность запроса
data
object
curl --request POST \
  --url https://toapis.com/v1/uploads/images \
  --header 'Authorization: Bearer <token>' \
  --form 'file=@/path/to/your/image.jpg'
{
  "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:
Python Полный пример
import requests
import time

API_KEY = "your-ToAPIs-key"
BASE_URL = "https://toapis.com"

# Шаг 1: Загрузка референсного изображения
def upload_image(file_path):
    with open(file_path, 'rb') as f:
        response = requests.post(
            f"{BASE_URL}/v1/uploads/images",
            headers={"Authorization": f"Bearer {API_KEY}"},
            files={"file": f}
        )
    return response.json()['data']['url']

# Шаг 2: Создание задачи генерации
def create_generation(image_url, prompt):
    response = 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": [{"url": image_url}],
            "size": "16:9"
        }
    )
    return response.json()['id']

# Шаг 3: Опрос статуса задачи
def wait_for_result(task_id):
    while True:
        response = requests.get(
            f"{BASE_URL}/v1/images/generations/{task_id}",
            headers={"Authorization": f"Bearer {API_KEY}"}
        )
        result = response.json()
        
        if result['status'] == 'completed':
            return result['data']['url']
        elif result['status'] == 'failed':
            raise Exception(f"Генерация не удалась: {result.get('fail_reason')}")
        
        time.sleep(2)

# Выполнение рабочего процесса
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}")