Skip to main content
n8n has no Deepshi-specific node, but its HTTP Request node calls any endpoint, so you can generate images, video, and music from a workflow. This is also the cleanest way to drive the asynchronous video and music job APIs.

Set up the credential

Create a Header Auth credential once and reuse it on every node:
  • Name: Authorization
  • Value: Bearer YOUR_DEEPSHI_API_KEY

Image generation (synchronous)

Add an HTTP Request node:
  • Method: POST
  • URL: https://api.deepshi.ai/v1/images/generations
  • Authentication: your Header Auth credential
  • Body: JSON, for example { "model": "deepshi-banana-pro", "prompt": "a red fox in a snowy forest", "width": 1024, "height": 1024 }
The response returns the image in data[0] as a URL or base64, plus usage.cost. Sizing parameters differ by model: some take width and height (like deepshi-banana-pro), others take image_size or aspect_ratio and resolution. Call GET /v1/models (or see the image models page) for the exact parameters each model accepts, and send those in the body.

Video and music (asynchronous)

Video (/v1/videos) and music (/v1/audio/generations) are job APIs: you create a job, then poll it until it finishes. Model it as a small loop of three nodes.
1

Create the job

An HTTP Request node: POST https://api.deepshi.ai/v1/videos (or /v1/audio/generations) with the JSON body. Keep the returned id.
2

Wait

A Wait node set to a few seconds. Jobs take from seconds to a few minutes.
3

Poll, then branch

An HTTP Request node: GET https://api.deepshi.ai/v1/videos/{{ $json.id }}. Feed it into an IF node: if status is completed or failed, continue; otherwise loop back to the Wait node.
On completion the result URL is in videos[0].url (video) or audio[0].url (music). A job that fails or is cancelled is never charged.
For a heavier workload, replace the poll loop with a scheduled workflow that checks pending job ids, so one long render does not hold a workflow open.