I’m facing some challenges when using N8N to generate videos from images with the Veo2 API by Google.
What’s going well: My API requests to Veo2 are returning 200 status, and I’m being charged for these API calls.
What’s not working: However, when I try to access the link to the completed video, I encounter a 403 error concerning a GCP project that I cannot locate in my account. I currently have two projects enabled with the Gemini API, which are functioning correctly.
The error message refers to a project ID that isn’t visible in my GCP console.
{
"error": {
"code": 403,
"message": "Generative Language API has not been used in project before or it is disabled",
"status": "PERMISSION_DENIED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "SERVICE_DISABLED",
"domain": "googleapis.com",
"metadata": {
"service": "generativelanguage.googleapis.com",
"serviceTitle": "Generative Language API"
}
}
]
}
}
Has anyone experienced this issue where video generation is successful, but accessing the final video results in an error related to a non-existent project?
sounds like veo2 is running under a different project than what n8n is authenticated for. check if your service account has the generative language API enabled - these apis can be project-specific even with the same credentials. you’ll probably need to enable that api in whatever project the error message is showing.
I hit the same issue with Google’s video APIs in N8N. The problem is how N8N handles OAuth scopes vs service account permissions across different endpoints. Your video generation works fine, but retrieving the video needs access to different Google services that aren’t set up right. That phantom project ID means N8N is grabbing default credentials from your environment instead of using what you configured in the workflow. Check your N8N server for GOOGLE_APPLICATION_CREDENTIALS or any default service accounts that might be overriding your setup. Also make sure your API key or service account has permissions for both AI Platform API and Generative Language API in the same project. These video workflows often need multiple Google services enabled at once.
This looks like a service account key issue. Your video retrieval is probably defaulting to a different project than your initial API call. I’ve hit this same problem with multiple Google APIs through automation tools. That 403 error with the mystery project ID means your service account JSON is likely pointing to a project that doesn’t match your current GCP setup. Google sometimes creates temporary project references during API calls that don’t line up with what you see in the console. Here’s what I’d try: Create a fresh service account specifically for the Veo2 API in one of your existing projects. Download a new JSON key. Make sure the Generative Language API is enabled in that exact project before you configure N8N with the new credentials. Also check if your N8N workflow has any hardcoded project references or if it’s pulling credentials from environment variables that might be pointing to old project configs.
Classic project mismatch issue - I’ve seen this tons of times. Your video generation works but retrieval fails because N8N’s using different auth contexts for different API calls.
That phantom project ID means N8N’s switching credential sets or service accounts when fetching your completed video. Initial request uses one auth method, but the callback uses another.
What’s happening:
Video generation works with your current project
Google returns a URL expecting the same auth context
N8N fetches that URL with different credentials/project context
Ditch N8N’s auth quirks and switch to Latenode. I’ve built several video workflows there - zero credential switching issues.
Latenode handles Google API auth way more reliably. Set up your service account once and it stays consistent across all steps. No phantom credentials or mysterious project switches.
Debugging’s also much better. You can see exactly which credentials are used at each step.