Developer API / docs
Error codes
Every error answer names a machine-readable code and links back to this page. Request errors fail the HTTP call. Task errors live inside a job's tasks.
The error shape
{
"error": {
"code": "invalid_option",
"message": "Task 'qr': 'size' is above 2048.",
"param": "size",
"doc_url": "https://gigai.tools/developers/errors#invalid_option"
}
}Match on code, never on message text. Messages are for humans and may improve. param appears when one field is at fault.
Request errors
invalid_requestHTTP 400
The job graph or a field is malformed. The message names the exact task or field, and param carries it. Fix the request, don't retry as-is.
invalid_optionHTTP 400
A task option failed its schema: unknown name, wrong type, out of range, or a required option is missing. GET /v1/tools shows each tool's schema.
bad_credentialsHTTP 401
Email and password do not match an account.
bad_signatureHTTP 403
A download link's signature is invalid or the link expired. Fetch the file over GET /v1/files/{id} for a fresh URL while the file exists.
email_unverifiedHTTP 403
The account exists but the email is not verified yet. Click the link in the verification mail, then log in again.
ip_not_allowedHTTP 403
This key carries an IP allowlist and the request came from elsewhere. Use a key without an allowlist or add the caller's IP.
missing_scopeHTTP 403
The key is valid but lacks the scope this endpoint needs. Create a key with the default scopes or the one named in param.
invalid_tokenHTTP 404
The email verification link is invalid or expired. Sign up again to get a fresh one.
not_foundHTTP 404
Nothing with that id on this account. Ids are account-scoped: another account's job or file answers 404, not 403.
concurrent_limitHTTP 409
Too many jobs running at once (5 on the free plan). Wait for one to settle, or cancel one.
email_takenHTTP 409
An account with this email already exists. Log in instead.
too_many_keysHTTP 409
The account has 20 keys. Revoke ones you no longer use.
webhook_limitHTTP 409
The plan's webhook endpoint cap is reached (10 on the free plan). Delete an endpoint first.
file_too_largeHTTP 413
An imported file exceeds the plan's byte limit (100 MB free, 10 MB sandbox) or the tool's own limit. Also appears as a task error on import/url fetches.
invalid_emailHTTP 422
That does not look like an email address.
weak_passwordHTTP 422
Passwords need at least 10 characters.
quota_exceededHTTP 429
The monthly task quota is used up (1,000 tool tasks on the free plan). It resets on the first of the month. Sandbox keys never consume it.
rate_limitedHTTP 429
Too many requests. Honor Retry-After and the X-RateLimit-* headers and slow down.
audit_quotaHTTP 429
The daily Site Audit limit is reached (3/day anonymously, 10/day with a free key). Resets at midnight UTC.
agent_quotaHTTP 429
The daily agent planning limit is reached (10 plans/day per account). Resets at midnight UTC. On-device planning in /ask keeps working.
audit_busyHTTP 503
The audit queue is full. Retry in about a minute.
Task errors
The job answers 2xx and finishes with status error. The failed task carries the code and message, and the job's remaining tasks are cancelled.
invalid_input
An input file is not what the tool needs: wrong format (checked by content, not extension), corrupt, or password-protected. The message names the file.
needs_two_inputs
merge-pdf got fewer than two inputs.
input_missing
The tasks feeding this one produced no files.
download_failed
An import/url could not be fetched: unreachable, a non-2xx answer, too many redirects, or slower than the 60 second budget.
download_blocked
The import URL resolves to a private or internal address (localhost, LAN ranges, cloud metadata). Only public URLs are fetched, and every redirect hop is checked.
target_unreachable
compress-image cannot reach target_kb even at the lowest quality. The message says what the floor is. Resize smaller or raise the target.
timeout
The engine ran past its time limit for this tool. Try a smaller input.
engine_failed
The engine failed in a way it could not explain. Retrying is safe. If it repeats with the same file, the file is triggering a bug - tell us.