kie-ruby 0.1.0 → 0.2.0

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.claude/commands/add-model.md +155 -0
  3. data/.claude/commands/release.md +118 -0
  4. data/.claude/commands/update-model.md +177 -0
  5. data/CLAUDE.md +1 -0
  6. data/README.md +137 -2
  7. data/docs/api/INDEX.md +12 -0
  8. data/docs/api/general/INDEX.md +59 -0
  9. data/docs/api/general/flux-2-flex-image-to-image.md +257 -0
  10. data/docs/api/general/flux-2-flex-text-to-image.md +237 -0
  11. data/docs/api/general/flux-2-pro-image-to-image.md +257 -0
  12. data/docs/api/general/grok-imagine-image-to-image.md +232 -0
  13. data/docs/api/general/grok-imagine-image-to-video.md +257 -0
  14. data/docs/api/general/grok-imagine-text-to-image.md +237 -0
  15. data/docs/api/general/grok-imagine-text-to-video.md +245 -0
  16. data/docs/api/general/grok-imagine-upscale.md +217 -0
  17. data/docs/api/general/nano-banana-pro.md +275 -0
  18. data/docs/api/general/seedream-4-5-edit.md +252 -0
  19. data/docs/api/general/seedream-4-5-text-to-image.md +245 -0
  20. data/docs/api/overview.md +92 -0
  21. data/docs/api/suno/INDEX.md +44 -0
  22. data/docs/api/suno/generate.md +154 -0
  23. data/docs/api/suno/models.md +95 -0
  24. data/docs/api/suno/task-status.md +150 -0
  25. data/docs/development/INDEX.md +1 -0
  26. data/docs/development/adding-new-model.md +195 -0
  27. data/docs/development/technical-design.md +2 -8
  28. data/lib/kie/models/flux_2_flex_image_to_image.rb +16 -0
  29. data/lib/kie/models/flux_2_flex_text_to_image.rb +15 -0
  30. data/lib/kie/models/flux_2_pro_image_to_image.rb +16 -0
  31. data/lib/kie/models/grok_imagine_image_to_image.rb +15 -0
  32. data/lib/kie/models/grok_imagine_image_to_video.rb +19 -0
  33. data/lib/kie/models/grok_imagine_text_to_image.rb +14 -0
  34. data/lib/kie/models/grok_imagine_text_to_video.rb +15 -0
  35. data/lib/kie/models/grok_imagine_upscale.rb +12 -0
  36. data/lib/kie/models/seedream_4_5_edit.rb +16 -0
  37. data/lib/kie/models/seedream_4_5_text_to_image.rb +15 -0
  38. data/lib/kie/version.rb +1 -1
  39. data/lib/kie.rb +10 -0
  40. metadata +33 -1
@@ -0,0 +1,245 @@
1
+ # Grok Imagine Text-to-Video API
2
+
3
+ Grok Imagine Text-to-Video 動画生成 API。
4
+
5
+ ## 概要
6
+
7
+ Grok Imagine Text-to-Video はテキストプロンプトから直接動画を生成するモデル。入力画像なしでテキスト指示のみから動画を作成する。
8
+
9
+ ## タスク作成
10
+
11
+ ### エンドポイント
12
+
13
+ ```
14
+ POST /api/v1/jobs/createTask
15
+ ```
16
+
17
+ ### リクエストパラメータ
18
+
19
+ #### トップレベル
20
+
21
+ | パラメータ | 型 | 必須 | 説明 |
22
+ |-----------|-----|------|------|
23
+ | `model` | string | Yes | `"grok-imagine/text-to-video"` 固定 |
24
+ | `input` | object | Yes | 入力パラメータ |
25
+ | `callBackUrl` | string | No | タスク完了時の Webhook URL |
26
+
27
+ #### input オブジェクト
28
+
29
+ | パラメータ | 型 | 必須 | デフォルト | 説明 |
30
+ |-----------|-----|------|-----------|------|
31
+ | `prompt` | string | Yes | - | 動画の説明(最大 5,000 文字) |
32
+
33
+ #### パラメータ
34
+
35
+ | パラメータ | 型 | 必須 | デフォルト | 説明 |
36
+ |-----------|-----|------|-----------|------|
37
+ | `aspect_ratio` | string | No | `"2:3"` | アスペクト比 |
38
+ | `mode` | string | No | `"normal"` | 生成モード |
39
+
40
+ #### aspect_ratio の値
41
+
42
+ | 値 | 説明 |
43
+ |----|------|
44
+ | `2:3` | 縦長(デフォルト) |
45
+ | `3:2` | 横長 |
46
+ | `1:1` | 正方形 |
47
+ | `9:16` | 縦長(スマートフォン向け) |
48
+ | `16:9` | 横長(ワイドスクリーン) |
49
+
50
+ #### mode の値
51
+
52
+ | 値 | 説明 |
53
+ |----|------|
54
+ | `fun` | 楽しい・カジュアルなスタイル |
55
+ | `normal` | 標準的なスタイル |
56
+ | `spicy` | より大胆なスタイル |
57
+
58
+ ### リクエスト例
59
+
60
+ #### 基本的な使用
61
+
62
+ ```json
63
+ {
64
+ "model": "grok-imagine/text-to-video",
65
+ "input": {
66
+ "prompt": "A cat playing piano in a jazz club"
67
+ }
68
+ }
69
+ ```
70
+
71
+ #### すべてのパラメータを指定
72
+
73
+ ```json
74
+ {
75
+ "model": "grok-imagine/text-to-video",
76
+ "input": {
77
+ "prompt": "A beautiful sunset over the ocean with waves gently crashing on the shore"
78
+ },
79
+ "aspect_ratio": "16:9",
80
+ "mode": "normal",
81
+ "callBackUrl": "https://example.com/webhook"
82
+ }
83
+ ```
84
+
85
+ ### レスポンス
86
+
87
+ #### 成功時
88
+
89
+ ```json
90
+ {
91
+ "code": 200,
92
+ "msg": "success",
93
+ "data": {
94
+ "taskId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
95
+ }
96
+ }
97
+ ```
98
+
99
+ #### エラー時
100
+
101
+ ```json
102
+ {
103
+ "code": 400,
104
+ "msg": "Invalid parameters"
105
+ }
106
+ ```
107
+
108
+ ## タスクステータス取得
109
+
110
+ ### エンドポイント
111
+
112
+ ```
113
+ GET /api/v1/jobs/queryTask?taskId={taskId}
114
+ ```
115
+
116
+ ### クエリパラメータ
117
+
118
+ | パラメータ | 型 | 説明 |
119
+ |-----------|-----|------|
120
+ | `taskId` | string | タスク ID |
121
+
122
+ ### レスポンス
123
+
124
+ #### 成功時
125
+
126
+ ```json
127
+ {
128
+ "code": 200,
129
+ "msg": "success",
130
+ "data": {
131
+ "taskId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
132
+ "model": "grok-imagine/text-to-video",
133
+ "state": "success",
134
+ "param": "{\"prompt\":\"...\"}",
135
+ "resultJson": "{\"resultUrls\":[\"https://...\"]}",
136
+ "costTime": 30000,
137
+ "createTime": 1704067200000,
138
+ "completeTime": 1704067230000
139
+ }
140
+ }
141
+ ```
142
+
143
+ #### 処理中
144
+
145
+ ```json
146
+ {
147
+ "code": 200,
148
+ "msg": "success",
149
+ "data": {
150
+ "taskId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
151
+ "model": "grok-imagine/text-to-video",
152
+ "state": "waiting"
153
+ }
154
+ }
155
+ ```
156
+
157
+ #### 失敗時
158
+
159
+ ```json
160
+ {
161
+ "code": 200,
162
+ "msg": "success",
163
+ "data": {
164
+ "taskId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
165
+ "model": "grok-imagine/text-to-video",
166
+ "state": "fail",
167
+ "failCode": "CONTENT_POLICY_VIOLATION",
168
+ "failMsg": "The prompt violates content policy"
169
+ }
170
+ }
171
+ ```
172
+
173
+ ### タスクステータス
174
+
175
+ | ステータス | 説明 | 終了状態 |
176
+ |-----------|------|----------|
177
+ | `waiting` | 処理待ち | No |
178
+ | `success` | 完了 | Yes (成功) |
179
+ | `fail` | 失敗 | Yes (失敗) |
180
+
181
+ ### レスポンスフィールド
182
+
183
+ | フィールド | 型 | 説明 |
184
+ |-----------|-----|------|
185
+ | `taskId` | string | タスク ID |
186
+ | `model` | string | モデル名 |
187
+ | `state` | string | タスクステータス |
188
+ | `param` | string | リクエストパラメータ(JSON 文字列) |
189
+ | `resultJson` | string | 結果(JSON 文字列、成功時のみ) |
190
+ | `failCode` | string | エラーコード(失敗時) |
191
+ | `failMsg` | string | エラーメッセージ(失敗時) |
192
+ | `costTime` | integer | 処理時間(ミリ秒) |
193
+ | `createTime` | integer | 作成日時(Unix ミリ秒) |
194
+ | `completeTime` | integer | 完了日時(Unix ミリ秒) |
195
+
196
+ ## Ruby クライアントでの使用
197
+
198
+ ```ruby
199
+ client = Kie::Client.new(api_key: "your-api-key")
200
+
201
+ # 基本的な動画生成
202
+ task = client.general.generate(
203
+ model: "grok-imagine/text-to-video",
204
+ input: {
205
+ prompt: "A peaceful forest with sunlight filtering through the trees"
206
+ }
207
+ )
208
+
209
+ # パラメータを指定した動画生成
210
+ task = client.general.generate(
211
+ model: "grok-imagine/text-to-video",
212
+ input: {
213
+ prompt: "A futuristic city at night with neon lights and flying cars"
214
+ },
215
+ aspect_ratio: "16:9",
216
+ mode: "fun"
217
+ )
218
+
219
+ # 結果を取得
220
+ task.wait
221
+
222
+ if task.success?
223
+ video_url = task.urls.first
224
+ puts "Generated: #{video_url}"
225
+ else
226
+ puts "Failed: #{task.error_message}"
227
+ end
228
+ ```
229
+
230
+ ## 注意事項
231
+
232
+ 1. **プロンプト必須**: image-to-video とは異なり、prompt は必須パラメータ
233
+ 2. **動画出力**: 結果 URL は動画ファイル(MP4 等)を指す
234
+ 3. **アスペクト比**: image-to-video とは異なり、aspect_ratio パラメータをサポート
235
+
236
+ ## コード参照
237
+
238
+ モデル定義は以下のファイルで管理されている:
239
+
240
+ - `lib/kie/models/grok_imagine_text_to_video.rb`
241
+
242
+ ## 関連ドキュメント
243
+
244
+ - [API 共通仕様](../overview.md)
245
+ - [Grok Imagine Image-to-Video API](grok-imagine-image-to-video.md)
@@ -0,0 +1,217 @@
1
+ # Grok Imagine Upscale API
2
+
3
+ Grok Imagine Upscale 画像アップスケーリング API。
4
+
5
+ ## 概要
6
+
7
+ Grok Imagine Upscale は、Kie AI で生成された画像の解像度を向上させるモデル。外部画像の処理はサポートされておらず、Kie AI タスクの出力のみをアップスケールできる。
8
+
9
+ ### 特徴
10
+
11
+ - **Kie AI タスク限定**: 外部画像 URL は使用不可。既存の Kie AI タスク ID を参照する必要がある
12
+ - **シンプルな操作**: パラメータなし。入力は `task_id` のみ
13
+ - **アスペクト比維持**: 元画像のアスペクト比を保持してアップスケール
14
+
15
+ ## タスク作成
16
+
17
+ ### エンドポイント
18
+
19
+ ```
20
+ POST /api/v1/jobs/createTask
21
+ ```
22
+
23
+ ### リクエストパラメータ
24
+
25
+ #### トップレベル
26
+
27
+ | パラメータ | 型 | 必須 | 説明 |
28
+ |-----------|-----|------|------|
29
+ | `model` | string | Yes | `"grok-imagine/upscale"` 固定 |
30
+ | `input` | object | Yes | 入力パラメータ |
31
+ | `callBackUrl` | string | No | タスク完了時の Webhook URL |
32
+
33
+ #### input オブジェクト
34
+
35
+ | パラメータ | 型 | 必須 | 説明 |
36
+ |-----------|-----|------|------|
37
+ | `task_id` | string | Yes | 参照する Kie AI タスク ID(最大 100 文字) |
38
+
39
+ ### リクエスト例
40
+
41
+ ```json
42
+ {
43
+ "model": "grok-imagine/upscale",
44
+ "input": {
45
+ "task_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
46
+ }
47
+ }
48
+ ```
49
+
50
+ #### Webhook 付き
51
+
52
+ ```json
53
+ {
54
+ "model": "grok-imagine/upscale",
55
+ "input": {
56
+ "task_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
57
+ },
58
+ "callBackUrl": "https://example.com/webhook"
59
+ }
60
+ ```
61
+
62
+ ### レスポンス
63
+
64
+ #### 成功時
65
+
66
+ ```json
67
+ {
68
+ "code": 200,
69
+ "msg": "success",
70
+ "data": {
71
+ "taskId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
72
+ }
73
+ }
74
+ ```
75
+
76
+ #### エラー時
77
+
78
+ ```json
79
+ {
80
+ "code": 400,
81
+ "msg": "Invalid parameters"
82
+ }
83
+ ```
84
+
85
+ ## タスクステータス取得
86
+
87
+ ### エンドポイント
88
+
89
+ ```
90
+ GET /api/v1/jobs/queryTask?taskId={taskId}
91
+ ```
92
+
93
+ ### クエリパラメータ
94
+
95
+ | パラメータ | 型 | 説明 |
96
+ |-----------|-----|------|
97
+ | `taskId` | string | タスク ID |
98
+
99
+ ### レスポンス
100
+
101
+ #### 成功時
102
+
103
+ ```json
104
+ {
105
+ "code": 200,
106
+ "msg": "success",
107
+ "data": {
108
+ "taskId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
109
+ "model": "grok-imagine/upscale",
110
+ "state": "success",
111
+ "param": "{\"task_id\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"}",
112
+ "resultJson": "{\"resultUrls\":[\"https://...\"]}",
113
+ "costTime": 15000,
114
+ "createTime": 1704067200000,
115
+ "completeTime": 1704067215000
116
+ }
117
+ }
118
+ ```
119
+
120
+ #### 処理中
121
+
122
+ ```json
123
+ {
124
+ "code": 200,
125
+ "msg": "success",
126
+ "data": {
127
+ "taskId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
128
+ "model": "grok-imagine/upscale",
129
+ "state": "waiting"
130
+ }
131
+ }
132
+ ```
133
+
134
+ #### 失敗時
135
+
136
+ ```json
137
+ {
138
+ "code": 200,
139
+ "msg": "success",
140
+ "data": {
141
+ "taskId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
142
+ "model": "grok-imagine/upscale",
143
+ "state": "fail",
144
+ "failCode": "INVALID_TASK_ID",
145
+ "failMsg": "The referenced task does not exist"
146
+ }
147
+ }
148
+ ```
149
+
150
+ ### タスクステータス
151
+
152
+ | ステータス | 説明 | 終了状態 |
153
+ |-----------|------|----------|
154
+ | `waiting` | 処理待ち | No |
155
+ | `success` | 完了 | Yes (成功) |
156
+ | `fail` | 失敗 | Yes (失敗) |
157
+
158
+ ### レスポンスフィールド
159
+
160
+ | フィールド | 型 | 説明 |
161
+ |-----------|-----|------|
162
+ | `taskId` | string | タスク ID |
163
+ | `model` | string | モデル名 |
164
+ | `state` | string | タスクステータス |
165
+ | `param` | string | リクエストパラメータ(JSON 文字列) |
166
+ | `resultJson` | string | 結果(JSON 文字列、成功時のみ) |
167
+ | `failCode` | string | エラーコード(失敗時) |
168
+ | `failMsg` | string | エラーメッセージ(失敗時) |
169
+ | `costTime` | integer | 処理時間(ミリ秒) |
170
+ | `createTime` | integer | 作成日時(Unix ミリ秒) |
171
+ | `completeTime` | integer | 完了日時(Unix ミリ秒) |
172
+
173
+ ## Ruby クライアントでの使用
174
+
175
+ ```ruby
176
+ client = Kie::Client.new(api_key: "your-api-key")
177
+
178
+ # 1. まず画像を生成
179
+ image_task = client.general.generate(
180
+ model: "grok-imagine/text-to-image",
181
+ input: { prompt: "A beautiful sunset over the ocean" }
182
+ )
183
+ image_task.wait
184
+
185
+ # 2. 生成された画像をアップスケール
186
+ upscale_task = client.general.generate(
187
+ model: "grok-imagine/upscale",
188
+ input: { task_id: image_task.task_id }
189
+ )
190
+ upscale_task.wait
191
+
192
+ # 結果を取得
193
+ if upscale_task.success?
194
+ upscaled_url = upscale_task.urls.first
195
+ puts "Upscaled: #{upscaled_url}"
196
+ else
197
+ puts "Failed: #{upscale_task.error_message}"
198
+ end
199
+ ```
200
+
201
+ ## 注意事項
202
+
203
+ 1. **Kie AI タスク限定**: 外部画像 URL は使用不可。`task_id` で既存のタスク出力を参照する必要がある
204
+ 2. **ワークフロー依存**: アップスケール前に参照タスクが成功している必要がある
205
+ 3. **パラメータなし**: アスペクト比や解像度の指定は不可。元画像の特性を維持してアップスケールされる
206
+
207
+ ## コード参照
208
+
209
+ モデル定義は以下のファイルで管理されている:
210
+
211
+ - `lib/kie/models/grok_imagine_upscale.rb`
212
+
213
+ ## 関連ドキュメント
214
+
215
+ - [API 共通仕様](../overview.md)
216
+ - [Grok Imagine Text-to-Image API](grok-imagine-text-to-image.md)
217
+ - [Grok Imagine Image-to-Image API](grok-imagine-image-to-image.md)