JS SDK
Call the Hunyuan image generation model directly via @cloudbase/js-sdk, without going through a cloud function as a proxy.
Image generation requires @cloudbase/js-sdk v3.17.0 or higher and is only supported in server-side (Node.js) environments. Browser-side environments do not support direct image generation calls. To generate images from a web page, use the Node SDK to create a cloud function as a server-side endpoint, then call it from the web page.
Prerequisites
- A CloudBase environment set up
@cloudbase/js-sdkv3.17.0 or higher- Image generation resources granted by the Mini Program Growth Plan
Installation
npm install @cloudbase/js-sdk
For tree-shaking imports, register the AI module separately:
import cloudbase from "@cloudbase/js-sdk/app";
import { registerAi } from "@cloudbase/js-sdk/ai";
registerAi(cloudbase);
Usage Example
Basic Image Generation
import cloudbase from "@cloudbase/js-sdk";
const app = cloudbase.init({
env: "your-env-id",
});
const ai = app.ai();
const imageModel = ai.createImageModel("hunyuan-image");
imageModel.generateImageSubUrlConfig["hunyuan-image"]["HY-Image-3.0-Plus-4090-Tob-v1.0"] =
"images/ar/generations";
const res = await imageModel.generateImage({
model: "HY-Image-3.0-Plus-4090-Tob-v1.0",
prompt: "A chubby orange cat napping on a windowsill, watercolor style, warm tones",
size: "1024x1024",
revise: { value: true },
});
console.log(res.data[0].url); // Image URL, valid for 24 hours
console.log(res.data[0].revised_prompt); // Revised prompt
Custom Parameters
Customize image size, prompt revision, and thinking mode:
const app = cloudbase.init({ env: "your-env-id" });
const ai = app.ai();
const imageModel = ai.createImageModel("hunyuan-image");
imageModel.generateImageSubUrlConfig["hunyuan-image"]["HY-Image-3.0-Plus-4090-Tob-v1.0"] =
"images/ar/generations";
const res = await imageModel.generateImage({
model: "HY-Image-3.0-Plus-4090-Tob-v1.0",
prompt: "Cyberpunk style future city nightscape, neon lights, rainy night",
size: "768x1024", // Portrait orientation
seed: 42, // Fixed seed for reproducibility
footnote: "Generated by Cloudbase", // Custom watermark
revise: { value: true }, // Enable prompt revision
});
Parameter Reference
ImageModel.generateImage
generateImageSubUrlConfig
The sub-path mapping must be configured before calling generateImage:
imageModel.generateImageSubUrlConfig["hunyuan-image"]["HY-Image-3.0-Plus-4090-Tob-v1.0"] =
"images/ar/generations";
Input Parameters
interface HunyuanARGenerateImageInput {
model: "HY-Image-3.0-Plus-4090-Tob-v1.0";
prompt: string; // Text prompt, up to 8192 characters
size?: string; // Image size, format "${width}x${height}", default "1024x1024"
seed?: number; // Generation seed, range [1, 4294967295]
footnote?: string; // Custom watermark, up to 16 characters
revise?: { value: boolean }; // Enable prompt revision, enabled by default
}
Return Value
interface HunyuanARGenerateImageOutput {
id: string;
created: number;
data: Array<{
url: string; // Image URL, valid for 24 hours
revised_prompt?: string; // Revised prompt text
}>;
}
Full Example
import cloudbase from "@cloudbase/js-sdk";
const app = cloudbase.init({
env: process.env.ENV_ID,
});
const ai = app.ai();
async function generateImage(prompt, options = {}) {
const imageModel = ai.createImageModel("hunyuan-image");
imageModel.generateImageSubUrlConfig["hunyuan-image"]["HY-Image-3.0-Plus-4090-Tob-v1.0"] =
"images/ar/generations";
const res = await imageModel.generateImage({
model: "HY-Image-3.0-Plus-4090-Tob-v1.0",
prompt,
size: options.size || "1024x1024",
seed: options.seed,
footnote: options.footnote,
revise: { value: options.revise !== false },
});
return {
url: res.data[0].url,
revisedPrompt: res.data[0].revised_prompt,
};
}
// Usage
const { url, revisedPrompt } = await generateImage(
"A traditional Chinese ink wash landscape painting, distant mountains and near water, serene atmosphere",
{ size: "1024x768" }
);
console.log("Image URL:", url);
console.log("Revised prompt:", revisedPrompt);
Save to Cloud Storage
Generated image URLs expire after 24 hours. Save the image to cloud storage for permanent storage:
import https from "https";
import cloudbase from "@cloudbase/js-sdk";
const app = cloudbase.init({ env: process.env.ENV_ID });
const ai = app.ai();
async function generateAndSave(prompt) {
// 1. Generate image
const imageModel = ai.createImageModel("hunyuan-image");
imageModel.generateImageSubUrlConfig["hunyuan-image"]["HY-Image-3.0-Plus-4090-Tob-v1.0"] =
"images/ar/generations";
const res = await imageModel.generateImage({
model: "HY-Image-3.0-Plus-4090-Tob-v1.0",
prompt,
revise: { value: true },
});
// 2. Download image
const imageBuffer = await downloadImage(res.data[0].url);
// 3. Upload to cloud storage
const uploadRes = await app.uploadFile({
cloudPath: `ai-images/${Date.now()}.jpg`,
fileContent: imageBuffer,
});
return {
fileID: uploadRes.fileID,
revisedPrompt: res.data[0].revised_prompt,
};
}
function downloadImage(url) {
return new Promise((resolve, reject) => {
https.get(url, (response) => {
const chunks = [];
response.on("data", (chunk) => chunks.push(chunk));
response.on("end", () => resolve(Buffer.concat(chunks)));
response.on("error", reject);
});
});
}
Image generation is time-consuming (revise mode adds ~30 seconds, thinking mode adds up to 60 seconds). When calling in a cloud function, set the timeout to 900 seconds.
Related Docs
- Image Generation Overview — Model parameters and sizes
- Node SDK — Using Node SDK for image generation in cloud functions
- JS SDK AI Reference → ImageModel — Complete ImageModel API docs
- JS SDK Initialization — Initialization and authentication
- Hunyuan Image Generation Model Upgrade Guide