loading
Features / URL API

Генерируйте изображения одним HTTP GET-запросом — без SDK, без настройки и без бэкенда.

Достаточно вставить правильный URL в атрибут <img src="..."> вашего сайта — никаких токенов OAuth, никаких асинхронных POST-запросов и вебхуков для старта работы. Сервер мгновенно вернёт готовое изображение или placeholder.

Самый простой запрос:
https://pixinlink.ru/api/v1/800x400/кофе-на-столе-утром

→ Результат: готовое изображение 800×400px.

TL;DR

URL API PixInLink = GET-запрос → изображение (или 302 редирект из CDN-кеша).
Обязательные параметры: {width}x{height} в пути и ?prompt=.
Ключевые опции: style= (6 значений), seed= (фиксация), format= (webp/avif/png).
Аутентификация: Bearer-токен для тарифов Starter+, без токена для Free.
Справочник ниже — всё для copy-paste.

Ключевые факты

  • done Один GET-запрос → изображение: POST не нужен, тело запроса не нужно.
  • done 6 стилей: realistic, illustration, 3d, pixel-art, cyberpunk, anime.
  • done CDN-кеш 1 год: SHA256-хеш URL → immutable cache.
  • done 500 символов: максимальная длина промпта (обрезается).
  • done Seed диапазон: 1–2 147 483 647 → для воспроизводимых результатов.
  • done 5 форматов ответа HTTP: 302 (hit), 200 (miss), 400, 401, 429.
  • done Rate limit: Free: 5 req/min; Business: 600 req/min.

Что такое URL API?

URL API (URL-based API) — это интерфейс, где все параметры запроса передаются непосредственно в URL-строке, а сервер возвращает готовый ресурс по HTTP GET-запросу. В отличие от стандартного REST API (POST → async job → polling → download), наш URL API можно вставить прямо в HTML, и всю сложную асинхронную работу под капотом выполнит наш сервер. Идеально для статических сайтов (Hugo, Next.js), мета-тегов og:image и email-рассылок.

Как работает запрос (Архитектура)

  1. Шаг 1: Клиент отправляет GET-запрос к pixinlink.ru.
  2. Шаг 2: Мы вычисляем SHA256 хеш от всех переданных параметров и проверяем CDN.
  3. Шаг 3a (Cache Hit): Возвращаем HTTP 302 Found на CDN URL. Клиент получает картинку мгновенно.
  4. Шаг 3b (Cache Miss): Возвращаем HTTP 200 OK с цветным SVG placeholder-ом ("Generating image..."). В фоне запускается AI-пайплайн (Перевод → Kandinsky → WebP → CDN). Следующий запрос (через 3–8 сек) вернёт 302 из шага 3a.

Path Parameters (обязательные)

Параметры пути передаются непосредственно в структуре URL до знака вопроса ?. Порядок строгий: /{width}x{height}/{background_hex}/{foreground_hex}.

Параметр Тип Обязательный Пример Ограничения
width integer ✅ Да 1200 16–8192 px (clamped)
height integer ✅ Да 630 16–8192 px (clamped)
background_hex string ✅ Рекомендован ffffff 6-знач. HEX без #
foreground_hex string ✅ Рекомендован 000000 6-знач. HEX без #

Примечание: Значения размеров вне диапазона «зажимаются» (clamped) без ошибки. Параметры цвета (bg/fg) — это визуальная подсказка для нейросети, а не жесткое правило.

Query Parameters (опциональные)

1. prompt — Текстовое описание

Обязательный параметр (в строке запроса или в slug-пути). Максимум 500 символов (обрезается без ошибки).

  • Поведение: Если промпт короткий (1-3 слова), AI автоматически добавляет дескрипторы для улучшения качества. Русский язык (Kandinsky 3.1) поддерживается нативно.
  • Кодирование: Обязательно используйте URL-encode (пробелы = %20 или +).
2. style — Художественный стиль
Значение (enum) Описание Рекомендованный bg / fg
realistic (default)Фотореализм (люди, еда, интерьеры)ffffff / 000000
illustrationЦифровая живопись (персонажи)fef9e7 / 2c3e50
3dBlender-стиль (продукты, техника)f0f0f0 / 333333
pixel-art16/32-bit графика (ретро, игры)0d0d0d / 39ff14
cyberpunkIT, sci-fi, неон0d0d0d / ff2d78
animeАниме/манга стиль87ceeb / ffffff
3. seed — Фиксация результата

Тип: integer (1–2 147 483 647). Если не передан — при каждом новом запросе (cache-miss) генерируется уникальное изображение. Если передан — комбинация «тот же prompt + тот же seed» всегда возвращает одну и ту же картинку. Незаменимо для og:image.

PHP (Алгоритм из slug)
function pixinlink_seed(string $slug): int {
    return abs(crc32($slug)) % 2147483647;
}
JavaScript
function getSeed(slug) {
  let hash = 0;
  for (let i=0; i<slug.length; i++) {
    hash = ((hash << 5) - hash) + slug.charCodeAt(i);
  }
  return Math.abs(hash) % 2147483647 || 1;
}
4. format — Формат вывода
Формат Сжатие Поддержка Когда использовать
webp (default)~80% vs JPEGВсе современныеОптимальный выбор по умолчанию
avif~50% vs JPEGChrome 85+, Safari 16+Для максимальной скорости LCP
pngLosslessВсе браузерыДля прозрачного фона (RGBA)
5. watermark

Управление водяным знаком (boolean). На тарифе Free игнорируется (всегда true). На Starter, Pro и Business по умолчанию false.

&watermark=false — убрать (Starter+).

6. callback (Webhook)

Тип: URL. Доступно для Pro+. Сервер отправит POST-запрос с JSON-payload, когда генерация завершится. Идеально для прогрева кеша.

// Пример payload на ваш callback URL
{
  "job_id": "job_abc123",
  "status": "done",
  "url": "https://cdn.pixinlink.ru/images/ab/cd/ef123.webp",
  "prompt": "офис разработчиков"
}

Аутентификация

API поддерживает две схемы работы: анонимную (Free-тариф) и авторизованную (Starter+). Для авторизации используется стандартный заголовок Authorization: Bearer.

1. Free тариф (Без токена)
GET https://pixinlink.ru/800x400/офис

Лимит 50 генераций/мес. Водяной знак.

2. Starter+ (Bearer Token)
GET https://pixinlink.ru/800x400/офис
Authorization: Bearer pk_live_вашключ

Полные права, без watermark.

Коды ответов HTTP

API использует стандартные HTTP-коды. При успешном попадании в кэш возвращается 302 Found, при промахе — 200 OK с временным SVG (и запускается фоновая генерация).

Код Статус Описание Как обработать
200 OK Cache miss: отдаётся placeholder SVG Показать placeholder, img перезагрузится
302 Found Cache hit: редирект на CDN-ссылку Браузер автоматически следует редиректу
400 Bad Request Ошибка в параметрах запроса Проверить JSON, поле field
401 Unauthorized Неверный или отсутствующий API-ключ Проверить заголовок Authorization
429 Too Many Req. Превышен Rate Limit или месячная квота Ждать retry_after или сброса квоты
502 Bad Gateway AI провайдер временно недоступен Повторить запрос через 10-20 сек
Пример тела ответа (400 Bad Request):
{
  "error": "invalid_parameter",
  "detail": "width must be between 16 and 8192",
  "field": "width"
}

Rate Limits и квоты

Cache hit (302) не считается генерацией — квота не расходуется. Списание происходит только при Cache miss (200).

Тариф Rate Limit (req/min) Квота (генераций/мес) Сброс квоты
Free5501-го числа UTC
Starter305001-го числа UTC
Pro1202 0001-го числа UTC
Business60010 0001-го числа UTC

Полный пример API-запроса

GET https://pixinlink.ru/1200x630/ffffff/000000
?prompt=современный%20офис%20разработчиков%20вечер
&style=realistic
&seed=20260515
&format=webp
&watermark=false
&callback=https%3A%2F%2Fmysite.ru%2Fhook
Authorization: Bearer pk_live_вашключздесь

Попробуйте прямо сейчас

50 бесплатных генераций. Вставьте URL прямо в браузер.

Получить API-ключ Примеры кода GitHub