Developers
A keyed API on the same credits as the tool
Send a photo, name a mode, and download the result with a bearer key. The key spends the account’s credits, including a credit pack after the plan balance. Free plan is $0. Pro is $12 a month or $120 a year. Studio is $29 a month or $290 a year. Packs are 60 credits for $7.99, 125 credits for $11.99, 500 credits for $29.99, 1200 credits for $54.99.
Authorization
Create the key while signed in, on the account page. The token starts with lf_. Send it on every request. The server stores only the hash. Revoking a key sets a timestamp and the next call is rejected.
Authorization: Bearer lf_…
Create a job
POST /api/v1/jobs accepts multipart form data. The field mode is one of upscale2, upscale4, upscale8, denoise, unblur, face, or colorize. Repeat the file field for a batch. The batch size, byte size, and long edge are the plan’s limits. 4× and face restore require Pro. 8× requires Studio. Colorize costs two credits and is available on Free plan.
curl -X POST https://fixphotoquality.com/api/v1/jobs \ -H "Authorization: Bearer lf_…" \ -F "mode=colorize" \ -F "[email protected]"
A 201 response is { jobs, account }. Each job includes id, status, creditsCharged, and expiresAt. Status moves from QUEUED or PROCESSING to SUCCEEDED or FAILED. A failure returns the credit, including the part that came from a pack.
Read and download
GET /api/v1/jobs/:id returns that job for the key’s account. GET /api/v1/jobs/:id/download returns the WebP. On Free plan the long edge is limited to 3,200 px. On Pro and Studio the response redirects to the full file. Both objects are deleted 24 hours after the job is created.
curl https://fixphotoquality.com/api/v1/jobs/JOB_ID \ -H "Authorization: Bearer lf_…" curl -L https://fixphotoquality.com/api/v1/jobs/JOB_ID/download \ -H "Authorization: Bearer lf_…" \ -o result.webp
Credits, windows, and deletion
2×, denoise, and unblur cost one credit. Colorize, 4×, and face restore cost two. 8× costs four. Free plan has 3 credits a day. Pro has 120 each period, or 1,440 when the year starts. Studio has 500 each period, or 6,000 for the year. Plan credits are spent before pack credits. Packs last 365 days and are not refunded. The rate window is ten minutes, counted per key: 20, 60, and 180 calls.
JPEG, PNG, WebP, and AVIF are decoded. HEIC and TIFF are not. With ENHANCE_PROVIDER=mock, colorize is a local split-tone placeholder and the response provider is mock. A configured Replicate token runs the model in REPLICATE_MODEL_COLORIZE, which defaults to piddnad/ddcolor. The dyes are a guess either way.
Questions
Who can create a key?
A signed-in account. Guests use the tool in the browser. Keys are created on the account page, stored as a SHA-256 hash, and shown in full only once. An account can keep 8 live keys.
How is a call limited?
Each key is counted inside a 10-minute window: 20 calls on Free plan, 60 on Pro, and 180 on Studio. The same call also spends the mode’s credits. A failed job returns the credit. The rate-limit count is not returned.
Is the free download capped on the API?
Yes. Free plan downloads are capped at 3,200 px on the long edge, the same as the tool. Pro and Studio download the full file.
Can I use an API result commercially?
Yes, on every plan, when you have the rights to process the file. There is no separate license tier.
How long do API uploads last?
Uploads and results are deleted 24 hours after the job is created, on every plan. Download before then. Subscriptions and credit packs are not refunded. You can cancel a subscription anytime.