Genace

allow_all for personGeneration is currently not supported. — Veo and Imagen API person generation error

HTTP 400 INVALID_ARGUMENT Do not retry as-is

The exact error

allow_all for personGeneration is currently not supported.

What it means

The request set personGeneration to allow_all, and the service will not accept that value for this request. This is a parameter validation error, not a safety filter result: nothing was generated.

Google’s Veo docs give two rules that decide which value is accepted:

  • By mode. The parameter table on the Veo page lists text-to-video and video extension as "allow_all" only, and image-to-video, interpolation (first and last frame) and reference images as "allow_adult" only.
  • By region. Under Limitations, the same page says that in EU, UK, CH and MENA locations, allow_adult is the only allowed value for personGeneration.

So allow_all fails in two situations: the request is an image-based mode, or it comes from one of the listed locations.

The error is not specific to Veo. In SillyTavern issue #4824, a user on a Tier 1 Google AI Studio key got this exact message as a 400 INVALID_ARGUMENT from Imagen, because the app hardcoded allow_all. The reporter said Veo still accepted allow_all for them at the time. A SillyTavern maintainer pointed to a note in Google’s Imagen docs saying allow_all was not allowed in EU, UK, CH and MENA locations, and the reporter confirmed they were in the EU. The maintainer also remarked that Vertex AI and AI Studio had behaved differently. That is a community observation, not something Google documents.

Google’s Imagen page now says Imagen models are shut down in the Gemini API and points to Nano Banana instead. If you still see this message from an Imagen call, the model name is the bigger problem.

How to confirm it’s this

  • The response is HTTP 400 with status INVALID_ARGUMENT, and the message names allow_all.
  • Log the outgoing request and check which mode it is. If it carries an image, lastFrame or referenceImages, the Veo table only lists allow_adult for it.
  • If it is plain text-to-video or an extension, check where the calling server runs as well as where you are. If either is in the EU, UK, Switzerland or the MENA region, the regional rule is the likely cause. The docs say “locations” without defining how the location is determined.
  • If allow_all is hardcoded in a library or tool you use, as it was in SillyTavern, the error appears for every affected user regardless of the prompt.

Fix

  1. Stop hardcoding allow_all. Make personGeneration a setting, or choose it per request. SillyTavern closed issue #4824 by adding a config setting that overrides the value it used to hardcode.
  2. For image-to-video, interpolation and reference images, send allow_adult. That is the only value the Veo table lists for these modes.
  3. For text-to-video from a restricted location, the docs do not spell out what to send. In Google AI Developers Forum thread 181139, about the opposite error, a forum moderator said text-to-video requests can set allow_all or omit the parameter. The docs do not say which default applies when the parameter is omitted in a restricted location, so test that on your own account before you rely on it.
  4. Respect the regional rule. It is a policy decision by Google about where adult-only person generation applies. Do not route traffic through another location to get allow_all back.

Retry or not

No. The same parameters from the same location get the same 400. Google’s docs describe both rules as fixed limitations, with no mention of them being temporary. An agent should treat this as a configuration error: change personGeneration or remove it, then send a new request. Better still, pick the value before sending, from the request mode and the table above, so the 400 never happens. No backoff helps here, because nothing about the request is transient.

When it’s not this

  • allow_adult for personGeneration is currently not supported. This is the mirror image. It usually means the request was treated as text-to-video, often because the input image was not sent.
  • User location is not supported for the API use. That is a 400 FAILED_PRECONDITION for the whole API, not one parameter value.
  • A safety block after generation. If the job ran and returned no video, you are looking at a filter result, not a parameter check.

Error text last verified against the sources below on .

Where these facts come from