Skip to content

Commit edac743

Browse files
uzunenescursoragent
andcommitted
feat: skip_gcs_upload for faster video response (avoids 502 proxy timeout)
- videos.generate(skip_gcs_upload=True): return provider URL directly - Examples 04, 12: use skip_gcs_upload to stay under Cloudflare 100s limit Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 56a4390 commit edac743

3 files changed

Lines changed: 18 additions & 4 deletions

File tree

examples/04_videos_all_providers.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,23 @@ def main() -> None:
1111

1212
with create_client() as client:
1313
set_provider_headers(client)
14+
# Veo 3 via Visgate API → Fal
1415
managed = client.videos.generate(
15-
model="fal-ai/flux-pro",
16+
model="fal-ai/veo3",
1617
prompt=prompt,
17-
duration_seconds=5.0,
18+
duration_seconds=6.0,
19+
skip_gcs_upload=True,
1820
)
1921
print(f"managed_video_id={managed.id}")
2022

2123
fal = provider_key("fal")
2224
if fal:
2325
set_provider_headers(client, fal_key=fal)
2426
result = client.videos.generate(
25-
model="fal-ai/flux-pro",
27+
model="fal-ai/veo3",
2628
prompt=prompt,
27-
duration_seconds=5.0,
29+
duration_seconds=6.0,
30+
skip_gcs_upload=True,
2831
)
2932
print(f"fal_video_id={result.id}")
3033
else:
@@ -37,6 +40,7 @@ def main() -> None:
3740
model="replicate/lucataco/cogvideox-5b",
3841
prompt=prompt,
3942
duration_seconds=5.0,
43+
skip_gcs_upload=True,
4044
)
4145
print(f"replicate_video_id={result.id}")
4246
else:
@@ -49,6 +53,7 @@ def main() -> None:
4953
model="runway/gen4_turbo",
5054
prompt=prompt,
5155
duration_seconds=5.0,
56+
skip_gcs_upload=True,
5257
)
5358
print(f"runway_video_id={result.id}")
5459
else:

examples/12_veo_from_catalog.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,12 @@ def main() -> None:
6969
print(f" Generating video (prompt={PROMPT[:50]}...) ...")
7070
# Note: Veo expects duration as "4s"/"6s"/"8s". Visgate API should convert
7171
# duration_seconds to that format. If validation fails, try another provider.
72+
# skip_gcs_upload=True: faster response, avoids Cloudflare 100s proxy timeout
7273
result = client.videos.generate(
7374
model=model_id,
7475
prompt=PROMPT,
7576
duration_seconds=6.0,
77+
skip_gcs_upload=True,
7678
)
7779
if not result.video_url:
7880
print(" No video_url in response.")

src/visgate_sdk/resources/videos.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ def generate(
7272
*,
7373
image_url: Optional[str] = None,
7474
duration_seconds: float = 5.0,
75+
skip_gcs_upload: bool = False,
7576
params: Optional[Dict[str, Any]] = None,
7677
) -> VideoResult:
7778
"""Generate a video.
@@ -81,6 +82,7 @@ def generate(
8182
prompt: Text description of the desired video.
8283
image_url: Optional image URL to animate (image-to-video).
8384
duration_seconds: Video duration in seconds. Defaults to 5.0.
85+
skip_gcs_upload: If True, return provider URL directly (faster; avoids proxy timeout).
8486
params: Additional model-specific parameters.
8587
8688
Returns:
@@ -93,6 +95,8 @@ def generate(
9395
}
9496
if image_url:
9597
payload["image_url"] = image_url
98+
if skip_gcs_upload:
99+
payload["skip_gcs_upload"] = True
96100
if params:
97101
payload.update(params)
98102

@@ -113,6 +117,7 @@ async def generate(
113117
*,
114118
image_url: Optional[str] = None,
115119
duration_seconds: float = 5.0,
120+
skip_gcs_upload: bool = False,
116121
params: Optional[Dict[str, Any]] = None,
117122
) -> VideoResult:
118123
"""Generate a video (async). See :meth:`Videos.generate` for details."""
@@ -123,6 +128,8 @@ async def generate(
123128
}
124129
if image_url:
125130
payload["image_url"] = image_url
131+
if skip_gcs_upload:
132+
payload["skip_gcs_upload"] = True
126133
if params:
127134
payload.update(params)
128135

0 commit comments

Comments
 (0)