SDK, библиотеки и инструменты
Официальные клиенты для Python, JavaScript, Go, PHP и Java, CLI, MCP-сервер для ИИ-агентов и плагины для инструментов, которые вы уже используете. Всё с открытым исходным кодом.
Быстрый старт
Установите клиент, задайте POPNOW_API_KEY и создайте первое изображение.
pip install popnow
export POPNOW_API_KEY="sk-popnow-..."from popnow import PopNow
client = PopNow() # reads POPNOW_API_KEY
task = client.images.generate(
model="google/nano-banana-2.1/text-to-image",
prompt="A small red fox curled up in a teacup, soft morning light",
)
print(task.state, task.urls[0])
client.files.download(task.assets[0], "fox.png")npm install popnow
export POPNOW_API_KEY="sk-popnow-..."import { PopNow } from "popnow";
const popnow = new PopNow(); // reads POPNOW_API_KEY
const task = await popnow.jobs.createAndWait({
model: "google/nano-banana-2.1/text-to-image",
input: { prompt: "A small red fox curled up in a teacup, soft morning light" },
});
console.log(task.state, task.output?.assets?.[0]?.url);go get github.com/popnow-ai/popnow-go
export POPNOW_API_KEY="sk-popnow-..."package main
import (
"context"
"log"
popnow "github.com/popnow-ai/popnow-go"
)
func main() {
ctx := context.Background()
client, err := popnow.New(popnow.Options{}) // reads POPNOW_API_KEY
if err != nil {
log.Fatal(err)
}
request := popnow.CreateTaskInput{
Model: "google/nano-banana-2.1/text-to-image",
Input: map[string]any{"prompt": "A small red fox curled up in a teacup, soft morning light"},
}
// One idempotency key per piece of work: a resend returns the original task.
task, err := client.CreateTask(ctx, request, "fox-teacup-1", popnow.CreateTaskOptions{})
if err != nil {
log.Fatal(err)
}
final, err := client.WaitForTerminal(ctx, task.TaskID, popnow.WaitOptions{})
if err != nil {
log.Fatal(err)
}
for _, asset := range final.ReadyAssets() {
log.Println(final.State, asset.URL)
}
}composer require popnow/popnow
export POPNOW_API_KEY="sk-popnow-..."<?php
require __DIR__ . '/vendor/autoload.php';
use PopNow\Client;
$client = new Client(); // reads POPNOW_API_KEY
$task = $client->createTask(
model: 'google/nano-banana-2.1/text-to-image',
input: ['prompt' => 'A small red fox curled up in a teacup, soft morning light'],
idempotencyKey: Client::idempotencyKey(),
waitSeconds: 60,
);
if (!Client::isTerminal($task)) {
$task = $client->waitForTerminal($task['taskId']);
}
foreach (Client::readyAssets($task) as $asset) {
echo $asset['url'], "\n";
}// build.gradle.kts
implementation("ai.popnow:popnow-java:0.1.0")import ai.popnow.*;
import java.util.Map;
import java.util.UUID;
public class Quickstart {
public static void main(String[] args) {
PopNowClient client = PopNowClient.builder().apiKeyFromEnvironment().build(); // POPNOW_API_KEY
CreateTaskRequest request = CreateTaskRequest.of("google/nano-banana-2.1/text-to-image",
Map.of("prompt", "A small red fox curled up in a teacup, soft morning light"));
// createTask + waitForTerminal; the key makes a resend return the original task
TaskRecord task = client.run(request, UUID.randomUUID().toString());
System.out.println(task.state());
for (TaskAsset asset : task.assets()) {
asset.url().ifPresent(System.out::println);
}
}
}npm install -g @popnow/cli
export POPNOW_API_KEY="sk-popnow-..."popnow jobs create \
--model google/nano-banana-2.1/text-to-image \
--input-json '{"prompt":"A small red fox curled up in a teacup, soft morning light"}' \
--waitexport POPNOW_API_KEY="sk-popnow-..."curl -X POST https://api.popnow.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "google/nano-banana-2.1/text-to-image",
"input": {
"prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette",
"aspect_ratio": "16:9",
"resolution": "1k",
"output_format": "png"
}
}'Аутентификация
Передавайте ключ как Bearer-токен. Ключи начинаются с sk-popnow- и могут быть ограничены определёнными моделями и IP-адресами, а также дневным, месячным и общим лимитом расходов.
API-ключиcurl https://api.popnow.ai/api/v1/models \
-H "Authorization: Bearer $POPNOW_API_KEY"Все библиотеки и инструменты
Всё размещено на GitHub в организации github.com/popnow-ai.
Языки
- popnow-go
Клиент для Go с типизированными запросами, вспомогательными функциями ожидания и итераторами.
go get github.com/popnow-ai/popnow-goGitHubpkg.go.dev
Инструменты и плагины
- popnow-comfyui
Пользовательские узлы ComfyUI, которые запускают модели PopNow прямо в вашем графе.
GitHubComfy Registry - popnow-bot
Бот для Telegram и Discord, который вы разворачиваете сами: изображения, видео и видеоэффекты с лимитами расходов.
GitHubDocker Hub
Для ИИ-агентов и ассистентов для кода
- MCP-сервер
Добавьте https://api.popnow.ai/mcp в Claude, ChatGPT, Cursor или любой MCP-клиент, и он будет генерировать для вас изображения и видео.
https://api.popnow.ai/mcp - Agent Skills
Навыки для Claude Code, Codex и других агентов для кода: они знают API, модели и цены.
SKILL.md - llms.txt
Текстовая карта API и документации для чтения языковыми моделями.
/llms.txt - Спецификация OpenAPI
Полный API в виде файла OpenAPI для генераторов кода и API-клиентов.
openapi.yaml
Готово для продакшена
- Расчёты
Рассчитайте стоимость запроса без запуска, а затем передайте расчёт при создании задачи.
POST /jobs/quote - Ключи идемпотентности
Повторяйте запросы безопасно: тот же ключ вернёт исходную задачу, а не спишет деньги дважды.
Idempotency-Key - Подписанные вебхуки
Готовая задача отправляется на ваш сервер с подписью, чтобы вы могли проверить, что она пришла от нас.
X-Webhook-Signature - Лимиты запросов
До 1 000 запросов за 10 секунд на аккаунт; ответ 429 сообщает, сколько ждать.
429 · Retry-After
Начните работу за несколько минут
Один ключ для всех моделей, баланс в USD, который вы пополняете по мере необходимости, и точная цена перед каждым запуском.