Перейти к основному содержанию

Руководство API

GPT Image 2 VIP API

Здесь показаны настройки API, которые сейчас использует YingTu. Пример не содержит ваш настоящий ключ.

Открыть страницу токенов LaoZhang

Быстрый старт

  1. 1

    Создайте или выберите LaoZhang API Key.

  2. 2

    Скопируйте текущий ID модели и Python-пример.

  3. 3

    Сделайте один небольшой запрос и проверьте ответ.

Параметры запроса

Эндпоинт генерации
POST /v1/images/generations
Эндпоинт редактирования
POST /v1/images/edits
Базовый URL
https://api2.laozhang.ai
Авторизация
Bearer API Key
Семейство запроса
OpenAI Images
Референсные изображения
Поддерживается
Лимит референсов
До 5 изображений в YingTu (не максимум провайдера)
Статус проверки
Пока не подтверждено — нет доступной даты проверки.
Открыть документацию API

Пример на Python

Замените ключ-заглушку и свой промпт.

Пример генерации

cURL
export LAOZHANG_API_KEY="replace-with-your-key"

curl --fail-with-body --max-time 500 \
  -X POST 'https://api2.laozhang.ai/v1/images/generations' \
  -H "Authorization: Bearer ${LAOZHANG_API_KEY}" \
  -H "Content-Type: application/json" \
  --data '{"model":"gpt-image-2-vip","prompt":"A minimal coffee poster with the exact headline “COFFEE MADE SIMPLE”, high contrast type, warm natural light, clean commercial layout.","size":"2048x2048","quality":"high"}'

# The JSON response can contain base64 image data or an image URL.
# If this request times out, check request and billing logs before retrying.

Пример редактирования по референсу

gpt-image-2-vip · edit
import base64
import mimetypes
import os
import sys

import requests

API_KEY = os.environ.get("LAOZHANG_API_KEY")
if not API_KEY:
    raise RuntimeError("Set the LAOZHANG_API_KEY environment variable before running this example.")

REQUEST_TIMEOUT_SECONDS = 500
headers = {"Authorization": f"Bearer {API_KEY}"}

def extension_for_mime(mime_type):
    return {
        "image/jpeg": "jpg",
        "image/png": "png",
        "image/webp": "webp",
        "image/gif": "gif",
    }.get(mime_type, "bin")


def decode_base64_image(value, fallback_mime="image/png"):
    mime_type = fallback_mime
    encoded = value
    if value.startswith("data:"):
        header, encoded = value.split(",", 1)
        mime_type = header[5:].split(";", 1)[0] or fallback_mime
    return base64.b64decode(encoded, validate=True), mime_type


def parse_json_response(response):
    try:
        result = response.json()
    except ValueError as error:
        print("API returned a non-JSON response.", file=sys.stderr)
        raise SystemExit(1) from error
    if not isinstance(result, dict):
        print("API returned an unexpected JSON shape.", file=sys.stderr)
        raise SystemExit(1)
    return result


def extract_image(result):
    if not isinstance(result, dict):
        return None
    images = result.get("data") or []
    first_image = images[0] if images and isinstance(images[0], dict) else {}
    encoded = first_image.get("b64_json")
    if isinstance(encoded, str) and encoded:
        return decode_base64_image(encoded)

    image_url = first_image.get("url")
    if isinstance(image_url, str) and image_url:
        image_response = requests.get(image_url, timeout=REQUEST_TIMEOUT_SECONDS)
        image_response.raise_for_status()
        mime_type = image_response.headers.get("Content-Type", "image/png").split(";", 1)[0]
        return image_response.content, mime_type

    return None


def save_result_image(result):
    extracted = extract_image(result)
    if not extracted:
        keys = sorted(result.keys()) if isinstance(result, dict) else []
        print(f"No image data in response. Top-level keys: {keys}", file=sys.stderr)
        raise SystemExit(1)

    image_bytes, mime_type = extracted
    output_path = f"output.{extension_for_mime(mime_type)}"
    with open(output_path, "wb") as output_file:
        output_file.write(image_bytes)
    print(f"Image saved: {output_path} ({mime_type})")


API_URL = "https://api2.laozhang.ai/v1/images/edits"

data = {
    "model": "gpt-image-2-vip",
    "prompt": "A minimal coffee poster with the exact headline “COFFEE MADE SIMPLE”, high contrast type, warm natural light, clean commercial layout.",
    "size": "2048x2048",
    "quality": "high"
}

opened_files = []
files = []
image_1_path = "image_1.jpg"  # Replace with your reference image path
image_1_mime = mimetypes.guess_type(image_1_path)[0] or "image/jpeg"
image_1_file = open(image_1_path, "rb")
opened_files.append(image_1_file)
files.append(("image", (image_1_path, image_1_file, image_1_mime)))

try:
    try:
        response = requests.post(
            API_URL,
            headers=headers,
            data=data,
            files=files,
            timeout=REQUEST_TIMEOUT_SECONDS,
        )
    except requests.Timeout as error:
        print(
            "Request timed out after 500 seconds. The result status may be unknown; "
            "check call and billing logs before retrying.",
            file=sys.stderr,
        )
        raise SystemExit(1) from error
finally:
    for image_file in opened_files:
        image_file.close()

if response.status_code != 200:
    print(f"API error {response.status_code}: {response.text}", file=sys.stderr)
    raise SystemExit(1)

save_result_image(parse_json_response(response))
Перед рабочим запуском проверьте актуальную цену, баланс и доступ в аккаунте LaoZhang.

Параметры запроса

Поля соответствуют текущему клиенту YingTu и примерам кода.

model
Обязателен. Используйте точный ID модели с этой страницы.
prompt
Обязателен. Передайте инструкцию, но не API Key.
настройки вывода
size выбирается из точных размеров в реестре модели.
quality
Необязательно. Используйте настроенный для маршрута уровень качества.
референсы
Необязательно. До 5 файлов в браузере YingTu передаются как multipart-поля image в эндпоинт редактирования.

Ответ и тайм-аут

Ответ с изображением
Клиент декодирует data[0].b64_json, включая data URL, либо загружает data[0].url и сохраняет MIME-тип.
Ответ без изображения
Без b64_json или url ответ не считается успешным; сообщение API показывается при наличии.

Тайм-аут клиента: 500 секунд

Через 500 секунд текущий клиент YingTu прекращает ожидание; результат и списание могут оставаться неизвестными.

Без автоматического повтора

YingTu не повторяет запрос автоматически. Перед новым платным вызовом проверьте журналы запросов и списаний.

Типичные ошибки

Аутентификация
Проверьте ключ в переменной окружения и Bearer-заголовок.
Доступ или баланс
Проверьте в LaoZhang доступ к модели, баланс, биллинг и ограничения аккаунта.
Лимит запросов
Снизьте параллелизм и изучите сообщение провайдера или аккаунта.
Нет изображения
Проверьте причины блокировки и завершения, сообщение API и response ID.
Тайм-аут
Итог может быть неизвестен; проверьте журналы вызовов и списаний до повтора.

Известные ограничения

Проверьте эти пункты перед использованием результата.

  • Проверьте реальные размеры загруженного файла.
  • Проверяйте весь видимый текст, цифры и знаки.
  • Проверьте идентичность, логотипы, упаковку, цвета и мелкие детали.
  • Доступность и задержка могут меняться.
  • Цены, баланс, доступ и списания уточняйте в LaoZhang.

Вопросы об API

Где хранить API Key?

Используйте переменную окружения из примера. Не сохраняйте ключ в коде, логах или промпте.

Тайм-аут означает ошибку?

Не всегда. После 500 секунд результат или списание могут быть неизвестны; проверьте журналы.

Лимит референсов задан провайдером?

Нет. Это текущий лимит браузера YingTu из реестра модели.

Где проверить цену и доступ?

Актуальные цена, баланс, доступ и списания находятся в аккаунте LaoZhang.

Цена и оплата

На странице указана справочная цена. Актуальные цена, баланс, доступ и списания находятся в аккаунте LaoZhang.

Данные модели
ID модели
gpt-image-2-vip
Справочная цена
$0.03/ вызов
Размеры вывода
1K / 2K / 4K
Точные размеры
30 доступных размеров
Уровни качества
low / medium / high
Формат API
OpenAI Images

Проверить модель в студии

Эти настройки сейчас доступны в студии изображений.

YingTuLaoZhang