From d61930119b9079235ff6ecc20510be7b6efb141f Mon Sep 17 00:00:00 2001 From: ch-z-hc <45302000+ch-z-hc@users.noreply.github.com> Date: Thu, 15 Oct 2026 00:56:42 +0800 Subject: [PATCH] fix: preserve custom image dimensions in the SDK --- src/sdk/image/index.ts | 6 ++++-- test/sdk/image.test.ts | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/sdk/image/index.ts b/src/sdk/image/index.ts index 92998642..050bcc7b 100644 --- a/src/sdk/image/index.ts +++ b/src/sdk/image/index.ts @@ -116,8 +116,10 @@ export class ImageSDK extends Client { return toMerged({ model: "image-01", - aspect_ratio: (width !== undefined && height !== undefined) ? undefined : aspect_ratio, n: 1, - }, params) as ImageRequest; + }, { + ...params, + aspect_ratio: (width !== undefined && height !== undefined) ? undefined : aspect_ratio, + }) as ImageRequest; } } diff --git a/test/sdk/image.test.ts b/test/sdk/image.test.ts index 0ed039bc..9e3a84c7 100644 --- a/test/sdk/image.test.ts +++ b/test/sdk/image.test.ts @@ -38,6 +38,32 @@ describe('MiniMaxSDK.image', () => { server?.close(); }); + it.each([ + { width: 1920, height: 1080, aspect_ratio: '1:1' }, + { width: 1024, height: 1024 }, + { aspect_ratio: '16:9' }, + ])('should preserve image sizing precedence for %j', async (sizing) => { + let body: Record = {}; + server = createMockServer({ + routes: { + '/v1/image_generation': async (req) => { + body = await req.json() as Record; + return jsonResponse(makeBase64Response(['aW1hZ2U='])); + }, + }, + }); + const sdk = new MiniMaxSDK({ apiKey: 'test-key', region: 'global', baseUrl: server.url }); + const request = { prompt: 'A landscape', seed: 42, n: 2, ...sizing }; + + await sdk.image.generate(request); + + expect(body.width).toBe(sizing.width); + expect(body.height).toBe(sizing.height); + expect(body.aspect_ratio).toBe(sizing.width !== undefined ? undefined : sizing.aspect_ratio); + expect(body).toMatchObject({ model: 'image-01', prompt: 'A landscape', seed: 42, n: 2 }); + expect(request).toEqual({ prompt: 'A landscape', seed: 42, n: 2, ...sizing }); + }); + it('should generate image successfully', async () => { server = createMockServer({ routes: {