One API Key for Top AI Image & Video Models
Stop juggling provider accounts. One key and one credit balance reach image and video models from Google, OpenAI, ByteDance, Kling and others, with the same request shape.
API calls need credits. Packs from $5.
for MODEL in gemini-3.1-flash-image-preview openai/gpt-image-2 fal-ai/bytedance/seedream/v5/lite; do
curl -X POST https://api.picxstudio.com/v1/images/generate \
-H "Authorization: Bearer $PICX_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"prompt\":\"a red sneaker on white\",\"model\":\"$MODEL\",\"size\":\"1K\"}"
doneimport { PicX } from "picx-ai";
const picx = new PicX(process.env.PICX_API_KEY);
const models = [
"gemini-3.1-flash-image-preview",
"openai/gpt-image-2",
"fal-ai/bytedance/seedream/v5/lite",
];
for (const model of models) {
const image = await picx.images.generate({
prompt: "a red sneaker on white",
model,
size: "1K",
});
console.log(model, image.url, image.credits_used);
}import os
from picx import PicX
picx = PicX(os.environ["PICX_API_KEY"])
models = [
"gemini-3.1-flash-image-preview",
"openai/gpt-image-2",
"fal-ai/bytedance/seedream/v5/lite",
]
for model in models:
image = picx.images.generate("a red sneaker on white", model=model, size="1K")
print(model, image.url, image.credits_used)- Credits never expire
- Failed generations refunded automatically
- Commercial use on every plan
- No auto-renew on crypto
An example result, and what it costs
Every response tells you the credits used, and agents can list each model’s price before spending anything.
Get API key
Ways to integrate
One key and one balance across all four.
REST API
Generate and edit images and video over HTTPS. Sync by default, webhooks when you want them.
QuickstartMCP server
Let Claude, ChatGPT, Cursor, VS Code or Codex call PicX tools directly, signed in with your account.
Connect a clientCLI
picx-cli for the terminal and for agents that shell out. Every command speaks --json.
Install the CLISDKs
Typed clients for JavaScript/TypeScript (picx-ai on npm) and Python (picx-ai on PyPI).
SDK examples
Same code. Change only model
These ids come from the live catalog, with today's price. Copy one into the model field and nothing else changes.
| Model | model | Per image at 1K |
|---|---|---|
| Nano Banana 2 | gemini-3.1-flash-image-preview | 35 credits |
| GPT Image 2 | openai/gpt-image-2 | 53 credits |
| Seedream 5 Lite | fal-ai/bytedance/seedream/v5/lite | 16 credits |
| FLUX.2 Pro | black-forest-labs/flux-2 | 20 credits |
| Model | model | 5s at 720p, with sound |
|---|---|---|
| Seedance 2.0 | fal-ai/bytedance/seedance/v2 | 575 credits |
| Kling 3.0 Standard | fal-ai/kling-video/v3/standard | 320 credits |
| Veo 3.1 Fast | google-deepmind/veo-3-1 | 210 credits |
| Wan 3.0 | alibaba/wan-3.0 | 225 credits |
for MODEL in gemini-3.1-flash-image-preview openai/gpt-image-2 fal-ai/bytedance/seedream/v5/lite; do
curl -X POST https://api.picxstudio.com/v1/images/generate \
-H "Authorization: Bearer $PICX_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"prompt\":\"a red sneaker on white\",\"model\":\"$MODEL\",\"size\":\"1K\"}"
doneimport { PicX } from "picx-ai";
const picx = new PicX(process.env.PICX_API_KEY);
const models = [
"gemini-3.1-flash-image-preview",
"openai/gpt-image-2",
"fal-ai/bytedance/seedream/v5/lite",
];
for (const model of models) {
const image = await picx.images.generate({
prompt: "a red sneaker on white",
model,
size: "1K",
});
console.log(model, image.url, image.credits_used);
}import os
from picx import PicX
picx = PicX(os.environ["PICX_API_KEY"])
models = [
"gemini-3.1-flash-image-preview",
"openai/gpt-image-2",
"fal-ai/bytedance/seedream/v5/lite",
]
for model in models:
image = picx.images.generate("a red sneaker on white", model=model, size="1K")
print(model, image.url, image.credits_used)Video works the same way: pass any video id as model to the video endpoint. Not every model offers every size or resolution, so check its prices in GET /v1/models or the list models reference.
Pick a model
Live from GET /v1/models. Credits are for one generation; video is priced per second.
Built for production
Webhooks
Register an endpoint, or bind one to a single job, and get a POST when it finishes.
Webhooks docsAsync polling and SSE
Video returns a job id at once. Poll GET /v1/generations/{id} or stream its events_url.
Video referenceidempotency_key
Retry a request safely. A replay returns the original generation and charges nothing.
QuickstartRefunds on failure
When a generation fails, its credits go back to your balance automatically.
Credit pricing
Rate limits
Limits apply per key. Read your exact values from GET /v1/account/tier, and honor Retry-After on a 429. Rate limit docs
What you can build
What the terms allow, in plain English.
| Use | Status | Details |
|---|---|---|
| Ads, listings and client work made with outputs | Allowed | On every plan |
| Selling prints or merchandise made with outputs | Allowed | Terms section 5 |
| An AI feature inside a different product, through the API | Allowed | Use your own key on your own backend |
| Reselling raw capacity | Allowed | See the partners page |
| A substantially similar generator built on PicX | Allowed | See the partners page |
| Sharing or reselling API keys, or transferring credits | Not allowed | Terms sections 3 and 4.1 |
Full wording in the Terms of Service.
Start at the price of a coffee
Credit packs from $5 with no plan needed, or plans from $11.99/month. Crypto only: no card, no KYC.
$5
500 credits
$9
1,000 credits
$29
3,200 credits
$59
6,500 credits
The API and MCP spend the same credits as the app. See all prices · How paying with crypto works
Developer FAQ
Do I need a subscription?
No. Credit packs start at $5 and need no plan. Credits never expire. Plans start at $11.99/month if you would rather have a monthly refill.
What happens to credits when a generation fails?
Credits are taken when you submit, and they go back to your balance automatically if the generation fails. The failed generation's error_message tells you why.
Can I use this inside my own app?
Yes. An AI feature inside a different product, through the API, is allowed. Use your own key on your own backend. Sharing or reselling API keys, or transferring credits, is not allowed.
Which models can I call, and how do I pick?
Everything in GET /v1/models, which needs no key. Each entry has an id to pass as model and a credit price per size or per second. The table above is a starting point, and the picker further down lists the full catalog.
Can my agent see prices before spending?
Yes. GET /v1/models returns each model's credit price without a key, and the MCP server has the same list as the picx_list_models tool. An agent can read the price and your balance before it spends anything.
How do I pay without a card?
Pay with crypto: it is the only checkout. 18 coins are accepted, including BTC, USDT, ETH and SOL. There is no KYC and nothing renews by itself.
Is there a default model?
Yes, but pass model on every call. The default follows the catalog order, so it can change, and an explicit id keeps your output and your price stable.
Do all models take the same parameters?
The request shape is the same. What differs is the sizes or resolutions a model offers, and a size with no price for that model is rejected. Video also has modes such as image-to-video, each with its own required inputs.
Can I route by price in my own code?
Yes. Read GET /v1/models, compare the credit price at your size, and pass the id you chose. Read it again from time to time, because prices can change.

One key for all of it
Change a field to change the model. One balance pays for every call.