POST /v1/enhance
Submit an image URL and a mode: standard, enhance, people_foreground or people_background. Receive a job_id immediately.
One async REST endpoint. Submit an image, receive an HMAC-signed webhook when the enhanced result is ready. Built for render farms, archviz studios, and BIM workflows.
curl -X POST https://api.vaethat.com/v1/enhance \
-H "X-API-Key: vth_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://your-cdn.com/render.jpg",
"scale": 2,
"mode": "enhance",
"webhook_url": "https://your-app.com/hooks/vaethat"
}'
# 202 Accepted
{
"job_id": "db82f184-1a4c-4f9e-9d3a-8b1f2c3d4e5f",
"status": "queued",
"credits_charged": 5,
"estimated_seconds": 21
}
Pick your stack. The endpoint is the same.
curl -X POST https://api.vaethat.com/v1/enhance \
-H "X-API-Key: vth_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://your-cdn.com/render.jpg",
"scale": 2,
"mode": "enhance",
"webhook_url": "https://your-app.com/hooks/vaethat"
}'
# 202 Accepted
{
"job_id": "db82f184-1a4c-4f9e-9d3a-8b1f2c3d4e5f",
"status": "queued",
"credits_charged": 5,
"estimated_seconds": 21
}import fetch from "node-fetch";
const res = await fetch("https://api.vaethat.com/v1/enhance", {
method: "POST",
headers: {
"X-API-Key": process.env.VAETHAT_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
image_url: "https://your-cdn.com/render.jpg",
scale: 2,
mode: "enhance",
webhook_url: "https://your-app.com/hooks/vaethat",
}),
});
const { job_id, credits_charged } = await res.json();
console.log("Queued job", job_id, ":", credits_charged, "credits");import os, requests
r = requests.post(
"https://api.vaethat.com/v1/enhance",
headers={"X-API-Key": os.environ["VAETHAT_API_KEY"]},
json={
"image_url": "https://your-cdn.com/render.jpg",
"scale": 2,
"mode": "enhance",
"webhook_url": "https://your-app.com/hooks/vaethat",
},
)
data = r.json()
print("Queued job", data["job_id"], ":", data["credits_charged"], "credits")The endpoints competitors don't advertise, because they don't have them.
Call /v1/estimate to know exactly what a job will cost and how big the output will be, without spending a credit or invoking a GPU.
Pass an Idempotency-Key header to retry safely. Duplicate submissions return the original job instead of double-charging.
Every callback ships with an HMAC-SHA-256 signature. Documented retry schedule (30s to 6h) plus a GET /jobs/:id fallback.
vth_test_ keys come with every API plan, never charge credits, and echo the input as output: wire up integrations before you ship.
Submit an image URL and a mode: standard, enhance, people_foreground or people_background. Receive a job_id immediately.
We run the enhancement in the mode you chose, at the size and price /v1/estimate quotes.
We POST a signed payload to your webhook_url with the output URL. Poll as a fallback.
Transparent monthly plans. No compute units, no surprises.
99€
per month
Ideal for indie devs and prototypes
299€
per month
For teams shipping to production
799€
per month
For studios with high-volume needs
Custom
per month
For large organizations with custom needs
Any product or app using the vaethat API must display a visible "Powered by vaethat" label, text or badge, in the UI where enhanced images appear. A clickable link to vaethat.com is recommended but not required.
Sandbox keys (vth_test_) are exempt during development.
Add 2x / 4x enhancement as a finishing step in your pipeline. No GPU procurement.
Batch-enhance project deliverables from your internal tools or a Houdini / 3ds Max plugin.
Offer enhanced renders as a feature in your own product: bill clients directly, white-label optional.
No. API plans are a separate billing track. Credits from a Developer / Scale / Studio plan are only spent through the API and never affect your in-app credits.
Live keys (vth_live_) need an active API plan, developer or higher. Sandbox keys (vth_test_) come with the same plans; there is no free trial.
Yes. If a job fails on our side (GPU error, upstream timeout), credits are automatically refunded. You only pay for successful enhancements.
There is no per-minute request cap. Jobs are processed in the order they arrive.
Inputs up to 50 MB; outputs up to 8000px on the long side and 64 megapixels. A larger input is refused, and a larger output is scaled down to fit.
Yes. Live API plans require a visible 'Powered by vaethat' label (text or badge) wherever enhanced images appear in your UI. A clickable link to vaethat.com is recommended but not required. Sandbox/test usage is exempt.
Every API plan comes with sandbox keys. Build against them, then switch to a live key to ship.