X-API-Key auth
Ключи формата pp_<24 nanoid> с SHA-256 хэшем в БД. Создаются в ЛК, показываются один раз.
Интегрируйте обработку фото в ваш продукт. REST + Webhook callbacks, авторизация по X-API-Key, оплата с баланса в копейках.
Ключи формата pp_<24 nanoid> с SHA-256 хэшем в БД. Создаются в ЛК, показываются один раз.
Async-режим присылает POST на ваш URL с подписью X-Webhook-Signature (HMAC-SHA256).
По умолчанию — 60 RPM на ключ. Сlide window в Redis. Для бизнес-тарифа — выше по запросу.
Полная спецификация на /api/v1/openapi.json. Импортируйте в Postman или генерируйте клиенты.
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"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}")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()}`);
}/api/v1/v1/photos/remove-bg20 копВозвращает прозрачный PNG с удалённым фоном.
/api/v1/v1/photos/upscale50 коп - 2 ₽Увеличивает разрешение до 1080p / 2K / 4K через SeedVR2-3B.
/api/v1/v1/photos/restore-face30 копPMRF flow-matching для всех найденных лиц на фото.
/api/v1/v1/photos/edit-prompt6-25 ₽Редактирование промптом через nano-banana-2 или GPT Image 2.
/api/v1/v1/photos/batchпо операциямЗагрузка нескольких файлов с асинхронным callback.
/api/v1/v1/photos/jobs/{id}—Проверить статус async-задачи: pending/processing/done/failed.
/api/v1/v1/credits/balance—Текущий баланс пользователя в копейках.
Для async задач (batch обработка, медленные операции вроде GPT Image 2 high) подписывайтесь на webhook. После завершения мы пришлём POST на ваш URL с HMAC-SHA256 подписью.
{
"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 из настроек ключа. Проверьте равенство с своим вычислением перед обработкой.
| Код | Название | Описание |
|---|---|---|
| 400 | Bad Request | Невалидные параметры запроса |
| 401 | Unauthorized | Отсутствует или невалидный X-API-Key |
| 402 | Payment Required | Недостаточно средств на балансе |
| 403 | Forbidden | API key отозван или истёк |
| 413 | Payload Too Large | Файл больше 20 МБ |
| 415 | Unsupported Media Type | Формат не поддерживается |
| 422 | Unprocessable Entity | Контент заблокирован NSFW-фильтром |
| 429 | Too Many Requests | Превышен rate limit |
| 500 | Server Error | Внутренняя ошибка, фото не обработано |
| 503 | Service Unavailable | GPU-сервер перегружен |
Регистрация по email или телефону. На баланс зачислим 50 ₽ — этого хватит на 250 удалений фона. Без карты, без подписки.