REST API · OpenAPI 3.1

API документация

Интегрируйте обработку фото в ваш продукт. REST + Webhook callbacks, авторизация по X-API-Key, оплата с баланса в копейках.

Что в API

X-API-Key auth

Ключи формата pp_<24 nanoid> с SHA-256 хэшем в БД. Создаются в ЛК, показываются один раз.

HMAC Webhook

Async-режим присылает POST на ваш URL с подписью X-Webhook-Signature (HMAC-SHA256).

Rate Limits

По умолчанию — 60 RPM на ключ. Сlide window в Redis. Для бизнес-тарифа — выше по запросу.

OpenAPI 3.1

Полная спецификация на /api/v1/openapi.json. Импортируйте в Postman или генерируйте клиенты.

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

cURLbash
curl -X POST https://photopanda.ru/api/v1/photos/remove-bg \
  -H "X-API-Key: pp_YOUR_KEY_HERE" \
  -F "file=@/path/to/photo.jpg"
Pythonpython
import requests

API_URL = "https://photopanda.ru/api/v1/photos/remove-bg"
API_KEY = "pp_YOUR_KEY_HERE"

with open("photo.jpg", "rb") as f:
    response = requests.post(
        API_URL,
        headers={"X-API-Key": API_KEY},
        files={"file": f},
    )

if response.ok:
    with open("photo-no-bg.png", "wb") as out:
        out.write(response.content)
    print("Saved photo-no-bg.png")
else:
    print(f"Error {response.status_code}: {response.text}")
Node.jsjavascript
import fs from "node:fs";

const API_URL = "https://photopanda.ru/api/v1/photos/remove-bg";
const API_KEY = "pp_YOUR_KEY_HERE";

const form = new FormData();
form.append("file", new Blob([fs.readFileSync("photo.jpg")]), "photo.jpg");

const res = await fetch(API_URL, {
  method: "POST",
  headers: { "X-API-Key": API_KEY },
  body: form,
});

if (res.ok) {
  const buf = Buffer.from(await res.arrayBuffer());
  fs.writeFileSync("photo-no-bg.png", buf);
  console.log("Saved photo-no-bg.png");
} else {
  console.error(`Error ${res.status}: ${await res.text()}`);
}

Endpoints

POST/api/v1/v1/photos/remove-bg20 коп

Удаление фона

Возвращает прозрачный PNG с удалённым фоном.

filemultipart/form-data
Файл JPG/PNG/WebP до 20 МБ
webhook_urlstring (optional)
URL для async callback
POST/api/v1/v1/photos/upscale50 коп - 2 ₽

Апскейл

Увеличивает разрешение до 1080p / 2K / 4K через SeedVR2-3B.

filemultipart/form-data
Файл фото
resolution1080p | 2k | 4k
Целевое разрешение
face_restoreboolean (optional)
Включить восстановление лиц (+30 коп)
POST/api/v1/v1/photos/restore-face30 коп

Восстановление лиц

PMRF flow-matching для всех найденных лиц на фото.

filemultipart/form-data
Файл фото
POST/api/v1/v1/photos/edit-prompt6-25 ₽

AI-редактирование

Редактирование промптом через nano-banana-2 или GPT Image 2.

filemultipart/form-data
Исходное фото
promptstring
Описание редактирования
modelnano-banana | gpt-image-2-medium | gpt-image-2-high
Выбор модели
maskfile (optional)
Маска для локального редактирования
POST/api/v1/v1/photos/batchпо операциям

Пакетная обработка

Загрузка нескольких файлов с асинхронным callback.

filesmultipart/form-data (multiple)
Массив файлов
typeremove_bg | upscale | restore_face | prompt_edit
Тип операции для всех
webhook_urlstring
URL callback (обязательно для batch)
GET/api/v1/v1/photos/jobs/{id}

Статус задачи

Проверить статус async-задачи: pending/processing/done/failed.

idstring (UUID)
ID задачи (получен при POST)
GET/api/v1/v1/credits/balance

Баланс

Текущий баланс пользователя в копейках.

Webhook callback

Для async задач (batch обработка, медленные операции вроде GPT Image 2 high) подписывайтесь на webhook. После завершения мы пришлём POST на ваш URL с HMAC-SHA256 подписью.

Payloadjson
{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "type": "remove_bg",
  "status": "done",
  "output_url": "https://photopanda.ru/files/output/abc123.png",
  "cost_kop": 20,
  "duration_ms": 487,
  "created_at": "2026-05-13T12:34:56.789Z"
}

// Подпись HMAC-SHA256 в заголовке:
// X-Webhook-Signature: sha256=<hmac>

Проверка подписи

Заголовок X-Webhook-Signature содержит HMAC-SHA256 от тела запроса с использованием WEBHOOK_SECRET из настроек ключа. Проверьте равенство с своим вычислением перед обработкой.

Коды ошибок

КодНазваниеОписание
400Bad RequestНевалидные параметры запроса
401UnauthorizedОтсутствует или невалидный X-API-Key
402Payment RequiredНедостаточно средств на балансе
403ForbiddenAPI key отозван или истёк
413Payload Too LargeФайл больше 20 МБ
415Unsupported Media TypeФормат не поддерживается
422Unprocessable EntityКонтент заблокирован NSFW-фильтром
429Too Many RequestsПревышен rate limit
500Server ErrorВнутренняя ошибка, фото не обработано
503Service UnavailableGPU-сервер перегружен
50 ₽ welcome бонус

Начни обработку фото
за 30 секунд

Регистрация по email или телефону. На баланс зачислим 50 ₽ — этого хватит на 250 удалений фона. Без карты, без подписки.