@apicity/kie 0.5.4 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,7 +8,7 @@ Kie provider for video and image generation (Kling 3.0, Grok Imagine, Omnihuman
8
8
 
9
9
  Runtime dependencies:
10
10
 
11
- - `zod@^4.0.0` — request schemas attached to every POST endpoint as `.schema`
11
+ - `zod@^4.4.3` — request schemas attached to every POST endpoint as `.schema`
12
12
 
13
13
  ## Installation
14
14
 
@@ -104,6 +104,8 @@ External `image_urls` must point to JPEG, PNG, or WEBP images; KIE's
104
104
  upstream limit is 7 images and 10 MB per image. `mode: "spicy"` is
105
105
  only available when sourcing the image from a previous Grok `task_id`,
106
106
  not from external image URLs.
107
+ Active image-to-video prompts are capped at 4096 characters, and
108
+ `duration` must be a whole number from 6 to 30 seconds.
107
109
 
108
110
  `createTask` returns `{ code, msg, data: { taskId } }`. For production
109
111
  workloads, pass `callBackUrl` so KIE can notify you when the job
@@ -112,6 +114,107 @@ finishes. Without a callback, poll
112
114
  `fail`; successful responses carry generated media URLs in the
113
115
  `resultJson` string.
114
116
 
117
+ ## HappyHorse 1.1 model slugs
118
+
119
+ KIE exposes Alibaba HappyHorse 1.1 through the same shared
120
+ `kie.post.api.v1.jobs.createTask` endpoint. Use the 1.1 model slugs
121
+ `happyhorse-1-1/text-to-video`, `happyhorse-1-1/image-to-video`, and
122
+ `happyhorse-1-1/reference-to-video` with the input shapes shown in
123
+ KIE's docs at https://docs.kie.ai/market/happyhorse-1-1/text-to-video,
124
+ https://docs.kie.ai/market/happyhorse-1-1/image-to-video, and
125
+ https://docs.kie.ai/market/happyhorse-1-1/reference-to-video.
126
+
127
+ ```typescript
128
+ const textTask = await kie.post.api.v1.jobs.createTask({
129
+ model: "happyhorse-1-1/text-to-video",
130
+ input: {
131
+ prompt: "A dog running on the earth",
132
+ resolution: "1080p",
133
+ aspect_ratio: "16:9",
134
+ duration: 5,
135
+ },
136
+ callBackUrl: "https://example.com/api/callback",
137
+ });
138
+
139
+ const imageTask = await kie.post.api.v1.jobs.createTask({
140
+ model: "happyhorse-1-1/image-to-video",
141
+ input: {
142
+ image_urls: ["https://example.com/first-frame.png"],
143
+ prompt: "A cat running on the grass",
144
+ resolution: "1080p",
145
+ duration: 5,
146
+ },
147
+ });
148
+
149
+ const referenceTask = await kie.post.api.v1.jobs.createTask({
150
+ model: "happyhorse-1-1/reference-to-video",
151
+ input: {
152
+ reference_image: ["https://example.com/reference.png"],
153
+ prompt: "A cat running on the grass",
154
+ resolution: "1080p",
155
+ aspect_ratio: "16:9",
156
+ duration: 5,
157
+ },
158
+ });
159
+
160
+ console.log(
161
+ textTask.data?.taskId,
162
+ imageTask.data?.taskId,
163
+ referenceTask.data?.taskId,
164
+ );
165
+ ```
166
+
167
+ For 1.1 image-to-video, `image_urls` is required and accepts exactly
168
+ one first-frame image URL. For 1.1 reference-to-video,
169
+ `reference_image` accepts 1-9 image URLs and prompts can refer to
170
+ the images by position. All three generation modes use `resolution`
171
+ (`"720p"` or `"1080p"`) and integer `duration` from 3 to 15 seconds;
172
+ text-to-video and reference-to-video also expose the wider 1.1
173
+ aspect-ratio set including `"21:9"` and `"9:21"`.
174
+
175
+ ## Seedance 2 Mini createTask flow
176
+
177
+ Seedance 2 Mini also uses the shared KIE jobs endpoints. Submit
178
+ `model: "bytedance/seedance-2-mini"` to
179
+ `kie.post.api.v1.jobs.createTask`, then poll
180
+ `kie.get.api.v1.jobs.recordInfo(taskId)` or pass `callBackUrl` for
181
+ completion notifications.
182
+
183
+ ```typescript
184
+ const miniTask = await kie.post.api.v1.jobs.createTask({
185
+ model: "bytedance/seedance-2-mini",
186
+ input: {
187
+ prompt: "A compact launch video with crisp product details.",
188
+ reference_image_urls: ["https://example.com/product.png"],
189
+ reference_video_urls: ["https://example.com/source.mp4"],
190
+ reference_audio_urls: ["https://example.com/voice.wav"],
191
+ generate_audio: false,
192
+ resolution: "720p",
193
+ aspect_ratio: "16:9",
194
+ duration: 15,
195
+ web_search: false,
196
+ nsfw_checker: true,
197
+ },
198
+ callBackUrl: "https://example.com/api/kie-callback",
199
+ });
200
+
201
+ const miniInfo = await kie.get.api.v1.jobs.recordInfo(
202
+ miniTask.data!.taskId
203
+ );
204
+ const miniResult = miniInfo.data?.resultJson
205
+ ? JSON.parse(miniInfo.data.resultJson)
206
+ : null;
207
+ console.log(miniInfo.data?.state, miniResult?.resultUrls);
208
+ ```
209
+
210
+ `prompt` is optional and capped at 20000 characters. Media references
211
+ default to empty arrays when using the exported Zod schema. `duration`
212
+ is an integer from 4 to 15 seconds, `resolution` is `480p` or `720p`,
213
+ and `aspect_ratio` is one of `16:9`, `4:3`, `1:1`, `3:4`, `9:16`,
214
+ `21:9`, or `adaptive`. The schema defaults are `generate_audio: true`,
215
+ `resolution: "720p"`, `aspect_ratio: "16:9"`, `duration: 15`,
216
+ `web_search: false`, and `nsfw_checker: true`.
217
+
115
218
  ## Real-world example: Kling 3.0 Turbo createTask payloads
116
219
 
117
220
  KIE's Kling 3.0 Turbo Quick Start exposes two createTask slugs:
@@ -282,7 +385,7 @@ console.log(result.resultUrls[0]);
282
385
 
283
386
  ## API Reference
284
387
 
285
- 27 endpoints across 16 groups. Each method mirrors an upstream URL path.
388
+ 30 endpoints across 19 groups. Each method mirrors an upstream URL path.
286
389
 
287
390
  ### chat
288
391
 
@@ -318,6 +421,23 @@ Source: [`packages/provider/kie/src/claude.ts`](src/claude.ts)
318
421
 
319
422
  </details>
320
423
 
424
+ ### codex
425
+
426
+ <details>
427
+ <summary><code>POST</code> <b><code>kie.codex.v1.responses</code></b></summary>
428
+
429
+ <code>POST https://api.kie.ai/codex/v1/responses</code>
430
+
431
+ [Upstream docs ↗](https://docs.kie.ai/market/chat/gpt-5-5)
432
+
433
+ ```typescript
434
+ const res = await kie.codex.v1.responses({ /* ... */ });
435
+ ```
436
+
437
+ Source: [`packages/provider/kie/src/responses.ts`](src/responses.ts)
438
+
439
+ </details>
440
+
321
441
  ### common
322
442
 
323
443
  <details>
@@ -386,6 +506,40 @@ Source: [`packages/provider/kie/src/kie.ts`](src/kie.ts)
386
506
 
387
507
  </details>
388
508
 
509
+ ### gemini
510
+
511
+ <details>
512
+ <summary><code>POST</code> <b><code>kie.gemini.post.v1.models.gemini35Flash.streamGenerateContent</code></b></summary>
513
+
514
+ <code>POST https://api.kie.ai/gemini/v1/models/gemini-3-5-flash:streamGenerateContent</code>
515
+
516
+ [Upstream docs ↗](https://docs.kie.ai/market/gemini/gemini-3-5-flash)
517
+
518
+ ```typescript
519
+ const res = await kie.gemini.post.v1.models.gemini35Flash.streamGenerateContent({ /* ... */ });
520
+ ```
521
+
522
+ Source: [`packages/provider/kie/src/gemini.ts`](src/gemini.ts)
523
+
524
+ </details>
525
+
526
+ ### gemini31Pro
527
+
528
+ <details>
529
+ <summary><code>POST</code> <b><code>kie.gemini31Pro.post.v1.chat.completions</code></b></summary>
530
+
531
+ <code>POST https://api.kie.ai/gemini-3.1-pro/v1/chat/completions</code>
532
+
533
+ [Upstream docs ↗](https://docs.kie.ai/market/gemini/gemini-3-1-pro)
534
+
535
+ ```typescript
536
+ const res = await kie.gemini31Pro.post.v1.chat.completions({ /* ... */ });
537
+ ```
538
+
539
+ Source: [`packages/provider/kie/src/gemini-31-pro.ts`](src/gemini-31-pro.ts)
540
+
541
+ </details>
542
+
389
543
  ### generate
390
544
 
391
545
  <details>
@@ -1,4 +1,4 @@
1
- import type { z } from "zod";
1
+ import type { ApicitySchema } from "./types.js";
2
2
  export interface KieChatContentPart {
3
3
  type: "text" | "image_url";
4
4
  text?: string;
@@ -46,7 +46,7 @@ export interface KieChatResponse {
46
46
  }
47
47
  interface KieChatCompletionsMethod {
48
48
  (req: KieChatRequest, signal?: AbortSignal): Promise<KieChatResponse>;
49
- schema: z.ZodType<KieChatRequest>;
49
+ schema: ApicitySchema<KieChatRequest>;
50
50
  }
51
51
  export interface KieChatProvider {
52
52
  completions: KieChatCompletionsMethod;
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmB7B,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,CAAC;QAC7C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvC,CAAC;CACH;AAGD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,wBAAwB;IAChC,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACtE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,wBAAwB,CAAC;CACvC;AAqED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,KAAK,EACrB,OAAO,EAAE,MAAM,GACd,eAAe,CAYjB"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAmB7C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,CAAC;QAC7C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvC,CAAC;CACH;AAGD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,wBAAwB;IAChC,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACtE,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,wBAAwB,CAAC;CACvC;AAqED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,KAAK,EACrB,OAAO,EAAE,MAAM,GACd,eAAe,CAYjB"}
@@ -1,4 +1,4 @@
1
- import type { z } from "zod";
1
+ import type { ApicitySchema } from "./types.js";
2
2
  export interface KieClaudeToolInputSchema {
3
3
  type: string;
4
4
  properties?: Record<string, unknown>;
@@ -58,7 +58,7 @@ export interface KieClaudeResponse {
58
58
  }
59
59
  interface KieClaudeMessagesMethod {
60
60
  (req: KieClaudeRequest, signal?: AbortSignal): Promise<KieClaudeResponse>;
61
- schema: z.ZodType<KieClaudeRequest>;
61
+ schema: ApicitySchema<KieClaudeRequest>;
62
62
  }
63
63
  interface KieClaudeV1Namespace {
64
64
  messages: KieClaudeMessagesMethod;
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/claude.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAsB7C,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,wBAAwB,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,mBAAmB,GAAG,kBAAkB,CAAC;IAChD,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAMD,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,qBAAqB,GAC7B,oBAAoB,GACpB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAMD,UAAU,uBAAuB;IAC/B,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1E,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;CACzC;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,uBAAuB,CAAC;CACnC;AAED,UAAU,sBAAsB;IAC9B,EAAE,EAAE,oBAAoB,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE;QACN,IAAI,EAAE,sBAAsB,CAAC;KAC9B,CAAC;CACH;AAMD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,KAAK,EACrB,OAAO,EAAE,MAAM,GACd,iBAAiB,CA2EnB"}
@@ -0,0 +1,73 @@
1
+ import type { ApicitySchema } from "./types.js";
2
+ import type { KieGemini31ProChatCompletionsRequest } from "./zod.js";
3
+ export interface KieGemini31ProChatMessage {
4
+ role?: string;
5
+ content?: string | null;
6
+ [key: string]: unknown;
7
+ }
8
+ export interface KieGemini31ProChatDelta {
9
+ role?: string;
10
+ content?: string | null;
11
+ [key: string]: unknown;
12
+ }
13
+ export interface KieGemini31ProChatChoice {
14
+ index?: number;
15
+ message?: KieGemini31ProChatMessage;
16
+ delta?: KieGemini31ProChatDelta;
17
+ finish_reason?: string | null;
18
+ [key: string]: unknown;
19
+ }
20
+ export interface KieGemini31ProCompletionTokensDetails {
21
+ reasoning_tokens?: number;
22
+ audio_tokens?: number;
23
+ text_tokens?: number;
24
+ [key: string]: unknown;
25
+ }
26
+ export interface KieGemini31ProChatUsage {
27
+ prompt_tokens?: number;
28
+ completion_tokens?: number;
29
+ total_tokens?: number;
30
+ completion_tokens_details?: KieGemini31ProCompletionTokensDetails;
31
+ [key: string]: unknown;
32
+ }
33
+ export interface KieGemini31ProChatCompletionResponse {
34
+ id?: string;
35
+ object?: string;
36
+ created?: number;
37
+ model?: string;
38
+ choices?: KieGemini31ProChatChoice[];
39
+ usage?: KieGemini31ProChatUsage;
40
+ credits_consumed?: number;
41
+ [key: string]: unknown;
42
+ }
43
+ export interface KieGemini31ProChatCompletionChunk {
44
+ id?: string;
45
+ object?: string;
46
+ created?: number;
47
+ model?: string;
48
+ choices?: KieGemini31ProChatChoice[];
49
+ usage?: KieGemini31ProChatUsage;
50
+ [key: string]: unknown;
51
+ }
52
+ export type KieGemini31ProChatCompletionsResult = KieGemini31ProChatCompletionResponse | AsyncIterable<KieGemini31ProChatCompletionChunk>;
53
+ interface KieGemini31ProChatCompletionsMethod {
54
+ (req: KieGemini31ProChatCompletionsRequest, signal?: AbortSignal): Promise<KieGemini31ProChatCompletionsResult>;
55
+ schema: ApicitySchema<KieGemini31ProChatCompletionsRequest>;
56
+ }
57
+ interface KieGemini31ProChatNamespace {
58
+ completions: KieGemini31ProChatCompletionsMethod;
59
+ }
60
+ interface KieGemini31ProV1Namespace {
61
+ chat: KieGemini31ProChatNamespace;
62
+ }
63
+ interface KieGemini31ProPostNamespace {
64
+ v1: KieGemini31ProV1Namespace;
65
+ }
66
+ export interface KieGemini31ProProvider {
67
+ gemini31Pro: {
68
+ post: KieGemini31ProPostNamespace;
69
+ };
70
+ }
71
+ export declare function createGemini31ProProvider(baseURL: string, apiKey: string, doFetch: typeof fetch, timeout: number): KieGemini31ProProvider;
72
+ export {};
73
+ //# sourceMappingURL=gemini-31-pro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-31-pro.d.ts","sourceRoot":"","sources":["../../src/gemini-31-pro.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ import { sseToIterable } from "./sse.js";
2
+ import { KieError } from "./types.js";
3
+ import { KieGemini31ProChatCompletionsRequestSchema } from "./zod.js";
4
+ function attachAbortHandler(signal, controller) {
5
+ if (!signal)
6
+ return;
7
+ if (signal.aborted) {
8
+ controller.abort();
9
+ return;
10
+ }
11
+ signal.addEventListener("abort", () => controller.abort(), { once: true });
12
+ }
13
+ function isGemini31ProErrorBody(value) {
14
+ return typeof value === "object" && value !== null;
15
+ }
16
+ function codeToString(code) {
17
+ if (typeof code === "string")
18
+ return code;
19
+ if (typeof code === "number")
20
+ return String(code);
21
+ return undefined;
22
+ }
23
+ function formatGemini31ProError(status, body) {
24
+ if (isGemini31ProErrorBody(body)) {
25
+ if (body.error?.message) {
26
+ return {
27
+ message: `Kie Gemini 3.1 Pro API error ${status}: ${body.error.message}`,
28
+ code: body.error.type,
29
+ };
30
+ }
31
+ if (typeof body.msg === "string") {
32
+ return {
33
+ message: `Kie Gemini 3.1 Pro API error ${status}: ${body.msg}`,
34
+ code: codeToString(body.code),
35
+ };
36
+ }
37
+ if (typeof body.message === "string") {
38
+ return {
39
+ message: `Kie Gemini 3.1 Pro API error ${status}: ${body.message}`,
40
+ code: body.type,
41
+ };
42
+ }
43
+ }
44
+ return { message: `Kie Gemini 3.1 Pro API error: ${status}` };
45
+ }
46
+ async function parseErrorResponse(res) {
47
+ let body = null;
48
+ try {
49
+ body = await res.json();
50
+ }
51
+ catch {
52
+ // ignore parse errors
53
+ }
54
+ const formatted = formatGemini31ProError(res.status, body);
55
+ return new KieError(formatted.message, res.status, body, formatted.code);
56
+ }
57
+ async function* parseChatCompletionsStream(res) {
58
+ for await (const data of sseToIterable(res)) {
59
+ if (data === "[DONE]") {
60
+ break;
61
+ }
62
+ try {
63
+ yield JSON.parse(data);
64
+ }
65
+ catch {
66
+ // Ignore keep-alive or non-JSON stream lines.
67
+ }
68
+ }
69
+ }
70
+ function isEventStream(res) {
71
+ return (res.headers
72
+ .get("content-type")
73
+ ?.toLowerCase()
74
+ .includes("text/event-stream") ?? false);
75
+ }
76
+ export function createGemini31ProProvider(baseURL, apiKey, doFetch, timeout) {
77
+ return {
78
+ gemini31Pro: {
79
+ post: {
80
+ v1: {
81
+ chat: {
82
+ // sig-ok: URL segment has a dot; TS namespace uses a valid identifier.
83
+ // POST https://api.kie.ai/gemini-3.1-pro/v1/chat/completions
84
+ // Docs: https://docs.kie.ai/market/gemini/gemini-3-1-pro
85
+ completions: Object.assign(async function completions(req, signal) {
86
+ const controller = new AbortController();
87
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
88
+ attachAbortHandler(signal, controller);
89
+ try {
90
+ const res = await doFetch(`${baseURL}/gemini-3.1-pro/v1/chat/completions`, {
91
+ method: "POST",
92
+ headers: {
93
+ Authorization: `Bearer ${apiKey}`,
94
+ "Content-Type": "application/json",
95
+ },
96
+ body: JSON.stringify(req),
97
+ signal: controller.signal,
98
+ });
99
+ clearTimeout(timeoutId);
100
+ if (!res.ok) {
101
+ throw await parseErrorResponse(res);
102
+ }
103
+ if (isEventStream(res)) {
104
+ return parseChatCompletionsStream(res);
105
+ }
106
+ return (await res.json());
107
+ }
108
+ catch (error) {
109
+ clearTimeout(timeoutId);
110
+ if (error instanceof KieError)
111
+ throw error;
112
+ if (error instanceof SyntaxError) {
113
+ throw new KieError("Failed to parse Gemini 3.1 Pro chat response", 500);
114
+ }
115
+ throw new KieError(`Gemini 3.1 Pro chat request failed: ${error}`, 500);
116
+ }
117
+ }, {
118
+ schema: KieGemini31ProChatCompletionsRequestSchema,
119
+ }),
120
+ },
121
+ },
122
+ },
123
+ },
124
+ };
125
+ }
126
+ //# sourceMappingURL=gemini-31-pro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-31-pro.js","sourceRoot":"","sources":["../../src/gemini-31-pro.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { ApicitySchema } from "./types.js";
2
+ import type { KieGemini35FlashStreamGenerateContentRequest } from "./zod.js";
3
+ export interface KieGeminiFunctionCall {
4
+ args?: Record<string, unknown>;
5
+ name?: string;
6
+ id?: string;
7
+ }
8
+ export interface KieGeminiResponsePart {
9
+ text?: string;
10
+ functionCall?: KieGeminiFunctionCall;
11
+ thoughtSignature?: string;
12
+ [key: string]: unknown;
13
+ }
14
+ export interface KieGeminiResponseContent {
15
+ role?: "model" | "user" | string;
16
+ parts?: KieGeminiResponsePart[];
17
+ [key: string]: unknown;
18
+ }
19
+ export interface KieGeminiCandidate {
20
+ content?: KieGeminiResponseContent;
21
+ finishReason?: string;
22
+ index?: number;
23
+ safetyRatings?: Array<Record<string, unknown>>;
24
+ groundingMetadata?: Record<string, unknown>;
25
+ [key: string]: unknown;
26
+ }
27
+ export interface KieGeminiUsageMetadata {
28
+ candidatesTokenCount?: number;
29
+ thoughtsTokenCount?: number;
30
+ totalTokenCount?: number;
31
+ promptTokenCount?: number;
32
+ [key: string]: unknown;
33
+ }
34
+ export interface KieGemini35FlashGenerateContentResponse {
35
+ candidates?: KieGeminiCandidate[];
36
+ modelVersion?: string;
37
+ usageMetadata?: KieGeminiUsageMetadata;
38
+ credits_consumed?: number;
39
+ responseId?: string;
40
+ [key: string]: unknown;
41
+ }
42
+ export type KieGemini35FlashStreamGenerateContentChunk = KieGemini35FlashGenerateContentResponse;
43
+ export type KieGemini35FlashStreamGenerateContentResult = KieGemini35FlashGenerateContentResponse | AsyncIterable<KieGemini35FlashStreamGenerateContentChunk>;
44
+ interface KieGemini35FlashStreamGenerateContentMethod {
45
+ (req: KieGemini35FlashStreamGenerateContentRequest, signal?: AbortSignal): Promise<KieGemini35FlashStreamGenerateContentResult>;
46
+ schema: ApicitySchema<KieGemini35FlashStreamGenerateContentRequest>;
47
+ }
48
+ interface KieGeminiModelsNamespace {
49
+ gemini35Flash: {
50
+ streamGenerateContent: KieGemini35FlashStreamGenerateContentMethod;
51
+ };
52
+ }
53
+ interface KieGeminiPostV1Namespace {
54
+ models: KieGeminiModelsNamespace;
55
+ }
56
+ interface KieGeminiPostNamespace {
57
+ v1: KieGeminiPostV1Namespace;
58
+ }
59
+ export interface KieGeminiProvider {
60
+ gemini: {
61
+ post: KieGeminiPostNamespace;
62
+ };
63
+ }
64
+ export declare function createGeminiProvider(baseURL: string, apiKey: string, doFetch: typeof fetch, timeout: number): KieGeminiProvider;
65
+ export {};
66
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/gemini.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,4CAA4C,EAAE,MAAM,OAAO,CAAC;AAgB1E,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,KAAK,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uCAAuC;IACtD,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,0CAA0C,GACpD,uCAAuC,CAAC;AAE1C,MAAM,MAAM,2CAA2C,GACnD,uCAAuC,GACvC,aAAa,CAAC,0CAA0C,CAAC,CAAC;AAE9D,UAAU,2CAA2C;IACnD,CACE,GAAG,EAAE,4CAA4C,EACjD,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,2CAA2C,CAAC,CAAC;IACxD,MAAM,EAAE,aAAa,CAAC,4CAA4C,CAAC,CAAC;CACrE;AAED,UAAU,wBAAwB;IAChC,aAAa,EAAE;QACb,qBAAqB,EAAE,2CAA2C,CAAC;KACpE,CAAC;CACH;AAED,UAAU,wBAAwB;IAChC,MAAM,EAAE,wBAAwB,CAAC;CAClC;AAED,UAAU,sBAAsB;IAC9B,EAAE,EAAE,wBAAwB,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE;QACN,IAAI,EAAE,sBAAsB,CAAC;KAC9B,CAAC;CACH;AA0ED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,KAAK,EACrB,OAAO,EAAE,MAAM,GACd,iBAAiB,CAqEnB"}
@@ -0,0 +1,114 @@
1
+ import { sseToIterable } from "./sse.js";
2
+ import { KieError } from "./types.js";
3
+ import { KieGemini35FlashStreamGenerateContentRequestSchema } from "./zod.js";
4
+ function attachAbortHandler(signal, controller) {
5
+ if (!signal)
6
+ return;
7
+ if (signal.aborted) {
8
+ controller.abort();
9
+ return;
10
+ }
11
+ signal.addEventListener("abort", () => controller.abort(), { once: true });
12
+ }
13
+ function isGeminiErrorBody(value) {
14
+ return typeof value === "object" && value !== null;
15
+ }
16
+ function formatGeminiError(status, body) {
17
+ if (isGeminiErrorBody(body)) {
18
+ if (body.error?.message) {
19
+ return {
20
+ message: `Kie Gemini API error ${status}: ${body.error.message}`,
21
+ code: body.error.type,
22
+ };
23
+ }
24
+ if (typeof body.message === "string") {
25
+ return {
26
+ message: `Kie Gemini API error ${status}: ${body.message}`,
27
+ code: body.type,
28
+ };
29
+ }
30
+ }
31
+ return { message: `Kie Gemini API error: ${status}` };
32
+ }
33
+ async function parseErrorResponse(res) {
34
+ let body = null;
35
+ try {
36
+ body = await res.json();
37
+ }
38
+ catch {
39
+ // ignore parse errors
40
+ }
41
+ const formatted = formatGeminiError(res.status, body);
42
+ return new KieError(formatted.message, res.status, body, formatted.code);
43
+ }
44
+ async function* parseGeminiStream(res) {
45
+ for await (const data of sseToIterable(res)) {
46
+ if (data === "[DONE]") {
47
+ break;
48
+ }
49
+ try {
50
+ yield JSON.parse(data);
51
+ }
52
+ catch {
53
+ // Ignore provider keep-alive or non-JSON stream lines.
54
+ }
55
+ }
56
+ }
57
+ function isEventStream(res) {
58
+ return (res.headers
59
+ .get("content-type")
60
+ ?.toLowerCase()
61
+ .includes("text/event-stream") ?? false);
62
+ }
63
+ export function createGeminiProvider(baseURL, apiKey, doFetch, timeout) {
64
+ return {
65
+ gemini: {
66
+ post: {
67
+ v1: {
68
+ models: {
69
+ gemini35Flash: {
70
+ // POST https://api.kie.ai/gemini/v1/models/gemini-3-5-flash:streamGenerateContent
71
+ // Docs: https://docs.kie.ai/market/gemini/gemini-3-5-flash
72
+ streamGenerateContent: Object.assign(async function streamGenerateContent(req, signal) {
73
+ const controller = new AbortController();
74
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
75
+ attachAbortHandler(signal, controller);
76
+ try {
77
+ const res = await doFetch(`${baseURL}/gemini/v1/models/gemini-3-5-flash:streamGenerateContent`, {
78
+ method: "POST",
79
+ headers: {
80
+ "Content-Type": "application/json",
81
+ "X-Goog-Api-Key": apiKey,
82
+ },
83
+ body: JSON.stringify(req),
84
+ signal: controller.signal,
85
+ });
86
+ clearTimeout(timeoutId);
87
+ if (!res.ok) {
88
+ throw await parseErrorResponse(res);
89
+ }
90
+ if (isEventStream(res)) {
91
+ return parseGeminiStream(res);
92
+ }
93
+ return (await res.json());
94
+ }
95
+ catch (error) {
96
+ clearTimeout(timeoutId);
97
+ if (error instanceof KieError)
98
+ throw error;
99
+ if (error instanceof SyntaxError) {
100
+ throw new KieError("Failed to parse Gemini response", 500);
101
+ }
102
+ throw new KieError(`Gemini request failed: ${error}`, 500);
103
+ }
104
+ }, {
105
+ schema: KieGemini35FlashStreamGenerateContentRequestSchema,
106
+ }),
107
+ },
108
+ },
109
+ },
110
+ },
111
+ },
112
+ };
113
+ }
114
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/gemini.ts"],"names":[],"mappings":"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"}