Troubleshooting
The most common problems developers hit while integrating, and how to fix them.
I'm getting 401 Unauthorized
Check three things: the header must be exactly Authorization: Bearer fio_live_...
— not the raw key on its own, and not an X-API-Key header. Confirm the key hasn't
been revoked from the dashboard. And make sure you copied the full string, including the
fio_live_ prefix and the . separator. See
Authentication for the exact format.
I'm getting 400 missing required image
The exact field name in the error message tells you which images.* key is missing or
didn't resolve — for example, a catalog id that doesn't exist. Double check the specific tool's
Request Body table for the field names it expects.
I'm getting 402 Insufficient diamonds
The error message includes exactly how many diamonds were required and how many you have. Top up or upgrade from Pricing & Credits.
I'm getting 429 rate limited
You've hit the 500 requests/day cap for that key — see Rate Limits & Errors. This counts polling too, so back off to a 2–3 second poll interval instead of polling tighter.
My generation is stuck in processing
Most jobs finish in 10–60 seconds. If it's been several minutes, check whether
errorMessage is already populated — some failures update status to
failed after a delay. As a last resort, contact support with
the job id.
CORS error calling the API from a browser
This is expected and intentional. The API is meant to be called server-side only — calling it directly from browser JS would expose your key to anyone viewing the page. Proxy the call through your own backend instead.
A fanout pack tool only returned one URL
This happens with clothing_ecom_pack or jewelry_ecom_pack when the pack
finished partially, or when you read resultUrls[0] instead of the full array. Check
that status is completed (not still processing), then read the
entire resultUrls array.