diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-06 15:48:51 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-06 15:48:51 +0300 |
| commit | 7cd85138c30654d93d679306ed5a9fe4b455d672 (patch) | |
| tree | eba0505f6651fb28d012b4be0d68009c1e8cf4a4 /internal | |
| parent | cdb5951fa25cc9352128ee8c0d76027cf2f6aa92 (diff) | |
fix: surface Veo API error field (content policy / geographic restriction) with clear message
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/video/veo.go | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/internal/video/veo.go b/internal/video/veo.go index c3be521..018c06a 100644 --- a/internal/video/veo.go +++ b/internal/video/veo.go @@ -258,6 +258,15 @@ func (g *VeoGenerator) pollUntilDone(ctx context.Context, op *genai.GenerateVide // downloadVideo extracts the video from a completed operation, downloading bytes // via the Files API when the response contains only a URI reference. func (g *VeoGenerator) downloadVideo(ctx context.Context, op *genai.GenerateVideosOperation) ([]byte, error) { + // Surface any API-level error (e.g. content policy or geographic restriction) + // before checking for videos, so the caller gets a meaningful message. + if len(op.Error) > 0 { + msg, _ := op.Error["message"].(string) + if msg == "" { + msg = fmt.Sprintf("%v", op.Error) + } + return nil, fmt.Errorf("veo: %s", msg) + } if op.Response == nil || len(op.Response.GeneratedVideos) == 0 { return nil, fmt.Errorf("veo: operation completed but no videos in response") } |
