Skip to main content
This quick start shows how to call skills.video with a minimal fetch request: create a google-veo-3.1 generation with a prompt, receive an id, and poll until it finishes.

Send your first request

Use any runtime that supports fetch. Replace placeholders before running.

Upload files with multipart/form-data

Use file upload when a model needs local image, video, or audio input. JSON requests are enough for text and URLs, but they cannot carry raw file bytes directly. For file inputs, switch to multipart/form-data and send files in the exact field names defined by that model’s OpenAPI schema. For example, POST /v1/generation/google/nano-banana-pro accepts image_urls[], and each item can be either a public URL or a binary file.
If you use fetch in Node.js, send a FormData body and append files with the same field key.
If a model schema defines a direct file field, the upload shape is:
Use the same pattern for other models: check that model’s OpenAPI schema for the exact file-capable fields, accepted MIME types, and limits.

Poll for the result

Poll the generation by id until it completes or fails.

Use SSE instead of polling (optional)

Use SSE when you need near real-time status updates in one long-lived response, and want to avoid repeated polling calls. For full request and response details, see SSE Streaming. If a model uses POST /v1/generation/{provider}/{model}, its SSE form is:
For example:
Typical stream output: