Introducing the Picverce AI Public API for image tools and generation models Picverce AI has launched a public API (v1.0.0) that allows developers to integrate its image tools and generation models into their own backends. The API supports job-based processing for tools like background removal, enhancement, and upscaling, as well as model-based generation from prompts, with authentication via bearer keys and credit-based billing. Picverce AI just shipped a Public API so you can run the same image tools and generation models from your own backend, not only from picverce.com https://picverce.com/ . Base URL: https://api.picverce.com OpenAPI contract: https://picverce.com/openapi-v1.yaml Human docs: https://picverce.com/api-docs/ Create keys in Account → API Keys: https://picverce.com/account/?tab=api This post is a developer walkthrough of what is live today, how jobs work, which Tools and Models you can call, and how credits + access work. Picverce AI is a bilingual EN/ES studio of image tools: enhance, upscale, restore, colorize, background remove, photo-to-anime, hairstyle, outfit, and a full Generate workspace with many models. Partners kept asking for the same capabilities behind a clean HTTP API: Public API v1.0.0 is that surface. You authenticate with a pk live … or pk test … bearer key. You create a job against either a tool edit an image you supply or a model generate from a prompt . The create call returns immediately with a job id . You poll GET /v1/jobs/{id} until succeeded or failed . Credits are reserved when the job starts and settled when it finishes. There is no CORS on the API on purpose. Keys stay on your server. Authorization: Bearer pk live YOUR KEY Rules that matter in production: 403 plan upgrade required .Check your balance and rate limit standing: curl -s https://api.picverce.com/v1/me \ -H "Authorization: Bearer pk live YOUR KEY" Example shape: { "object": "account", "credits": { "available": 42, "daily": 0, "subscription": 323, "purchased": 55, "reserved open": 0, "plan": "Basic" }, "rate limit": { "limit": 60, "remaining": 58, "reset at": "2026-08-26T12:15:00.000Z" } } Liveness no key : curl -s https://api.picverce.com/health Two catalogs, two job shapes. | Kind | Endpoint to list | Job target | Input | |---|---|---|---| Tool | GET /v1/tools | tool id | Usually image url plus options | Model | GET /v1/models | model id | prompt plus resolution / ratio / etc. | curl -s https://api.picverce.com/v1/tools \ -H "Authorization: Bearer pk live YOUR KEY" curl -s https://api.picverce.com/v1/models \ -H "Authorization: Bearer pk live YOUR KEY" Public ids are stable Picverce AI names. Upstream provider slugs are never returned, so we can move a model without breaking your integration. These map to Picverce AI product tools. Credit numbers match the website TOOL CREDIT COSTS . | API id | Product name | Typical credits | |---|---|---| enhance | Image Enhancer | 2 | enhance pro | Image Enhancer PRO | 6 | upscale | Image Upscaler | 2 / 3 / 6 by scale | sharpen | Image Sharpener | see catalog | text clarity | Text Enhancer | see catalog | restore | Photo Restore | see catalog | face restore | Face Restore | see catalog | anime enhance | Anime Enhancer | see catalog | colorize | Image Colorizer | see catalog | photo to anime | Photo to Anime | see catalog | photo to cartoon | Photo to Cartoon | see catalog | photo to sketch | Photo to Sketch | see catalog | background remover | Background Remover | 2 | object remover | Object Remover | see catalog | watermark remover | Watermark Remover | see catalog | hairstyle | Hairstyle Changer | see catalog | outfit | Outfit Generator | see catalog | Always trust GET /v1/tools / GET /v1/tools/{id} for the live input schema and credit object. v1 catalogs more tools than the worker will execute yet. Runnable job tools right now: background remover Background Remover enhance Image Enhancer upscale Image Upscaler Other tool ids return a clear “in catalog but not yet runnable” style error until we expand the allow-list. Generation models are available through the Models API path as documented in OpenAPI. GET /v1/models lists 26 generation models with display names, credit bands by resolution, ratios, reference-image rules, and variation caps. Examples of public ids and Picverce AI display names: | API id | Display name | |---|---| nano-banana-2 | Nano Banana 2 | nano-banana-pro | Nano Banana Pro | gpt-image-2 | GPT Image 2 | chatgpt-1-5 | Chatgpt 1.5 | seedream-3 | Seedream 3 | seedream-4 | Seedream 4 | seedream-4-5 | Seedream 4.5 | seedream-5-lite | Seedream 5 Lite | qwen-image-2-pro | Qwen Image 2 Pro | qwen-image-2 | Qwen Image 2 | flux-2-pro | Flux 2 Pro | flux-2-max | Flux 2 Max | flux-2-flex | Flux 2 Flex | flux-1-1-pro | Flux 1.1 Pro | flux-schnell | Flux Schnell | imagen-4 | Imagen 4 | imagen-4-ultra | Imagen 4 Ultra | ideogram-3 | Ideogram 3 | ideogram-3-turbo | Ideogram 3 Turbo | recraft-v3 | Recraft V3 | sd-3-5-large | SD 3.5 Large | sd-3-5-turbo | SD 3.5 Turbo | grok-imagine | xAI Grok Imagine | Plus the remaining Qwen / Seedream entries in the live catalog. Credits are variable by resolution. Read them from the catalog, do not hardcode forever. Example: Background Remover on a public image URL. curl -s -X POST https://api.picverce.com/v1/jobs \ -H "Authorization: Bearer pk live YOUR KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: demo-bg-001" \ -d '{ "tool": "background remover", "input": { "image url": "https://example.com/product.jpg" } }' You get a job object back right away queued or similar . Poll: curl -s https://api.picverce.com/v1/jobs/JOB ID \ -H "Authorization: Bearer pk live YOUR KEY" When status is succeeded , the result includes an output image URL. Download it from your server. curl -s -X POST https://api.picverce.com/v1/jobs \ -H "Authorization: Bearer pk live YOUR KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: demo-upscale-4x-001" \ -d '{ "tool": "upscale", "input": { "image url": "https://example.com/hero.jpg", "scale": 4 } }' Credits for upscale depend on 2 , 4 , or 8 see catalog: typically 2 / 3 / 6 . curl -s -X POST https://api.picverce.com/v1/jobs \ -H "Authorization: Bearer pk live YOUR KEY" \ -H "Content-Type: application/json" \ -d '{ "tool": "enhance", "input": { "image url": "https://example.com/soft-phone.jpg", "face enhance": false } }' Shape is the same endpoint, different target field: curl -s -X POST https://api.picverce.com/v1/jobs \ -H "Authorization: Bearer pk live YOUR KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: demo-flux-schnell-001" \ -d '{ "model": "flux-schnell", "input": { "prompt": "16:9 product photo of a ceramic mug on a wooden table, soft daylight, no text", "resolution": "1K", "aspect ratio": "16:9" } }' Exact input fields depend on the model. Always read GET /v1/models/{id} before you ship. js const API = 'https://api.picverce.com'; const KEY = process.env.PICVERCE API KEY; async function createBackgroundJob imageUrl { const res = await fetch ${API}/v1/jobs , { method: 'POST', headers: { Authorization: Bearer ${KEY} , 'Content-Type': 'application/json', 'Idempotency-Key': bg-${Date.now } , }, body: JSON.stringify { tool: 'background remover', input: { image url: imageUrl }, } , } ; if res.ok throw new Error await res.text ; return res.json ; } async function waitForJob id, { intervalMs = 2000, timeoutMs = 120000 } = {} { const start = Date.now ; for ;; { const res = await fetch ${API}/v1/jobs/${id} , { headers: { Authorization: Bearer ${KEY} }, } ; if res.ok throw new Error await res.text ; const job = await res.json ; if job.status === 'succeeded' || job.status === 'failed' || job.status === 'canceled' { return job; } if Date.now - start timeoutMs throw new Error 'job timeout' ; await new Promise r = setTimeout r, intervalMs ; } } const created = await createBackgroundJob 'https://example.com/shoe.png' ; const done = await waitForJob created.id ; console.log done.status, done.output ; | HTTP | Code | Meaning | |---|---|---| | 401 | invalid api key | Missing, malformed, unknown, or revoked | | 402 | insufficient credits | Valid key, not enough balance | | 403 | plan upgrade required | No subscription and no credit pack | | 404 | invalid tool / invalid model / job not found | Bad id or not yours | | 422 | validation error | Body understood and refused | | 429 | rate limited | Too many requests this minute | | 500 | internal error | Our side | Responses include a request id. Rate limit headers X-RateLimit- ride on authenticated calls. API jobs spend the same credits as Picverce AI in the browser. reserved open until they settle.Manage keys and review usage charts under Account → API Keys on Picverce AI. Send Idempotency-Key on POST /v1/jobs when your client may retry. Replays with the same key return the same job instead of double-charging. Use a new key for a new piece of work. GET /v1/tools / GET /v1/models The OpenAPI file at picverce.com/openapi-v1.yaml https://picverce.com/openapi-v1.yaml is the contract. If this article and the YAML disagree, trust the YAML. GET /v1/me GET /v1/tools and GET /v1/models POST /v1/jobs with background remover , enhance , or upscale GET /v1/jobs/{id} until doneIf you build something on the Picverce AI Public API, tell us what you shipped. We are expanding the runnable Tools allow-list next. — Picverce AI