runapi-seedance 0.2.12 → 0.2.14
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.
- checksums.yaml +4 -4
- data/README.md +5 -5
- data/lib/runapi/seedance/contract_gen.rb +50 -16
- data/lib/runapi/seedance/resources/text_to_video.rb +11 -9
- data/lib/runapi/seedance/types.rb +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 19fc812c328aa39916a08ed301d4baf382dcfa480d93f278f73e43a2f46ba379
|
|
4
|
+
data.tar.gz: bee0b1e06373bebd8431b8252007656afed60fc74c74290a3e14d091a1699f25
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f926bfc7eeea79a896963e4f7e7bf99e6b1b3ef519c6bf5c5d0a94363198f1a8b7d55d1778329e7589861f37b26deee343275b84083d5c17a9469bb21e7e0a4f
|
|
7
|
+
data.tar.gz: ce37731e9edf9f1d3456b5b3fa0e4a485bad10d624422a551e354d05893a53e4db331ed91ac4f2aa31b34b50eb337564faa75b29b8151f40ac394627801faa4d
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
The Seedance Ruby SDK is the language-specific package for Seedance on RunAPI. Use this package for video generation, animation, and video editing workflows when your application needs request bodies, task status lookup, and consistent RunAPI errors in Ruby.
|
|
4
4
|
|
|
5
|
-
This README is the Ruby package guide inside the public `seedance-sdk` repository. For the repository overview, start at `../README.md`; for model details, use https://runapi.ai/models/seedance; for API reference, use https://runapi.ai/docs
|
|
5
|
+
This README is the Ruby package guide inside the public `seedance-sdk` repository. For the repository overview, start at `../README.md`; for model details, use https://runapi.ai/models/seedance; for API reference, use https://runapi.ai/docs/api/seedance/text-to-video; for SDK docs, use https://runapi.ai/docs/resources/sdks.
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
@@ -17,7 +17,7 @@ require "runapi/seedance"
|
|
|
17
17
|
|
|
18
18
|
client = RunApi::Seedance::Client.new
|
|
19
19
|
task = client.text_to_video.create(
|
|
20
|
-
# Pass the Seedance JSON request body from https://runapi.ai/docs
|
|
20
|
+
# Pass the Seedance JSON request body from https://runapi.ai/docs/api/seedance/text-to-video.
|
|
21
21
|
)
|
|
22
22
|
status = client.text_to_video.get(task.id)
|
|
23
23
|
```
|
|
@@ -33,9 +33,9 @@ Use Ruby keyword arguments and the `RunApi::Seedance` error classes when buildin
|
|
|
33
33
|
## Links
|
|
34
34
|
|
|
35
35
|
- Model page: https://runapi.ai/models/seedance
|
|
36
|
-
- SDK docs: https://runapi.ai/docs
|
|
37
|
-
- Product docs: https://runapi.ai/docs
|
|
38
|
-
- Pricing and rate limits: https://runapi.ai/models/seedance/v1-
|
|
36
|
+
- SDK docs: https://runapi.ai/docs/resources/sdks
|
|
37
|
+
- Product docs: https://runapi.ai/docs/api/seedance/text-to-video
|
|
38
|
+
- Pricing and rate limits: https://runapi.ai/models/seedance/v1-pro
|
|
39
39
|
- Provider comparison: https://runapi.ai/providers/bytedance
|
|
40
40
|
- Full catalog: https://runapi.ai/models
|
|
41
41
|
- Repository: https://github.com/runapi-ai/seedance-sdk
|
|
@@ -4,7 +4,7 @@ module RunApi
|
|
|
4
4
|
module Seedance
|
|
5
5
|
CONTRACT = {
|
|
6
6
|
"text-to-video" => {
|
|
7
|
-
"models" => ["seedance-1.5-pro", "seedance-2-mini", "seedance-2.0", "seedance-2.0-fast", "seedance-
|
|
7
|
+
"models" => ["seedance-1.5-pro", "seedance-2-mini", "seedance-2.0", "seedance-2.0-fast", "seedance-2.5", "seedance-v1-pro", "seedance-v1-pro-fast"],
|
|
8
8
|
"fields_by_model" => {
|
|
9
9
|
"seedance-1.5-pro" => {
|
|
10
10
|
"aspect_ratio" => {
|
|
@@ -94,20 +94,37 @@ module RunApi
|
|
|
94
94
|
"max_items" => 3
|
|
95
95
|
}
|
|
96
96
|
},
|
|
97
|
-
"seedance-
|
|
97
|
+
"seedance-2.5" => {
|
|
98
98
|
"aspect_ratio" => {
|
|
99
|
-
"enum" => ["1:1", "4:3", "3:4", "16:9", "9:16", "9
|
|
99
|
+
"enum" => ["1:1", "4:3", "3:4", "16:9", "9:16", "21:9", "auto"]
|
|
100
100
|
},
|
|
101
101
|
"duration_seconds" => {
|
|
102
|
-
"enum" => [5, 10],
|
|
103
|
-
"required" => true,
|
|
102
|
+
"enum" => [-1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
|
|
104
103
|
"type" => "integer"
|
|
105
104
|
},
|
|
105
|
+
"model" => {
|
|
106
|
+
"required" => true
|
|
107
|
+
},
|
|
108
|
+
"output_format" => {
|
|
109
|
+
"enum" => ["mp4", "mov"]
|
|
110
|
+
},
|
|
106
111
|
"output_resolution" => {
|
|
107
|
-
"enum" => ["480p", "720p"
|
|
112
|
+
"enum" => ["480p", "720p"]
|
|
108
113
|
},
|
|
109
|
-
"
|
|
110
|
-
"
|
|
114
|
+
"prompt" => {
|
|
115
|
+
"required" => true,
|
|
116
|
+
"min" => 3,
|
|
117
|
+
"max" => 30000,
|
|
118
|
+
"length" => true
|
|
119
|
+
},
|
|
120
|
+
"reference_audio_urls" => {
|
|
121
|
+
"max_items" => 10
|
|
122
|
+
},
|
|
123
|
+
"reference_image_urls" => {
|
|
124
|
+
"max_items" => 30
|
|
125
|
+
},
|
|
126
|
+
"reference_video_urls" => {
|
|
127
|
+
"max_items" => 10
|
|
111
128
|
}
|
|
112
129
|
},
|
|
113
130
|
"seedance-v1-pro" => {
|
|
@@ -146,40 +163,57 @@ module RunApi
|
|
|
146
163
|
}
|
|
147
164
|
},
|
|
148
165
|
"rules" => [{
|
|
166
|
+
"when" => {
|
|
167
|
+
"model" => "seedance-2.5",
|
|
168
|
+
"first_frame_image_url" => {
|
|
169
|
+
"present" => true
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
"forbidden" => ["reference_image_urls", "reference_video_urls", "reference_audio_urls"]
|
|
173
|
+
}, {
|
|
174
|
+
"when" => {
|
|
175
|
+
"model" => "seedance-2.5",
|
|
176
|
+
"last_frame_image_url" => {
|
|
177
|
+
"present" => true
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"required" => ["first_frame_image_url"],
|
|
181
|
+
"forbidden" => ["reference_image_urls", "reference_video_urls", "reference_audio_urls"]
|
|
182
|
+
}, {
|
|
149
183
|
"when" => {
|
|
150
184
|
"model" => "seedance-1.5-pro"
|
|
151
185
|
},
|
|
152
|
-
"forbidden" => ["first_frame_image_url", "last_frame_image_url", "reference_image_urls", "reference_video_urls", "reference_audio_urls", "web_search"]
|
|
186
|
+
"forbidden" => ["first_frame_image_url", "last_frame_image_url", "reference_image_urls", "reference_video_urls", "reference_audio_urls", "web_search", "return_last_frame", "output_format"]
|
|
153
187
|
}, {
|
|
154
188
|
"when" => {
|
|
155
189
|
"model" => "seedance-2-mini"
|
|
156
190
|
},
|
|
157
|
-
"forbidden" => ["source_image_urls", "lock_camera", "seed", "enable_safety_checker"]
|
|
191
|
+
"forbidden" => ["source_image_urls", "lock_camera", "seed", "enable_safety_checker", "return_last_frame", "output_format"]
|
|
158
192
|
}, {
|
|
159
193
|
"when" => {
|
|
160
194
|
"model" => "seedance-2.0"
|
|
161
195
|
},
|
|
162
|
-
"forbidden" => ["source_image_urls", "lock_camera", "seed"]
|
|
196
|
+
"forbidden" => ["source_image_urls", "lock_camera", "seed", "return_last_frame", "output_format"]
|
|
163
197
|
}, {
|
|
164
198
|
"when" => {
|
|
165
199
|
"model" => "seedance-2.0-fast"
|
|
166
200
|
},
|
|
167
|
-
"forbidden" => ["source_image_urls", "lock_camera", "seed"]
|
|
201
|
+
"forbidden" => ["source_image_urls", "lock_camera", "seed", "return_last_frame", "output_format"]
|
|
168
202
|
}, {
|
|
169
203
|
"when" => {
|
|
170
|
-
"model" => "seedance-
|
|
204
|
+
"model" => "seedance-2.5"
|
|
171
205
|
},
|
|
172
|
-
"forbidden" => ["source_image_urls", "
|
|
206
|
+
"forbidden" => ["source_image_urls", "lock_camera", "seed"]
|
|
173
207
|
}, {
|
|
174
208
|
"when" => {
|
|
175
209
|
"model" => "seedance-v1-pro"
|
|
176
210
|
},
|
|
177
|
-
"forbidden" => ["source_image_urls", "last_frame_image_url", "reference_image_urls", "reference_video_urls", "reference_audio_urls", "web_search", "generate_audio"]
|
|
211
|
+
"forbidden" => ["source_image_urls", "last_frame_image_url", "reference_image_urls", "reference_video_urls", "reference_audio_urls", "web_search", "generate_audio", "return_last_frame", "output_format"]
|
|
178
212
|
}, {
|
|
179
213
|
"when" => {
|
|
180
214
|
"model" => "seedance-v1-pro-fast"
|
|
181
215
|
},
|
|
182
|
-
"forbidden" => ["aspect_ratio", "source_image_urls", "lock_camera", "last_frame_image_url", "reference_image_urls", "reference_video_urls", "reference_audio_urls", "web_search", "generate_audio"]
|
|
216
|
+
"forbidden" => ["aspect_ratio", "source_image_urls", "lock_camera", "last_frame_image_url", "reference_image_urls", "reference_video_urls", "reference_audio_urls", "web_search", "generate_audio", "return_last_frame", "output_format"]
|
|
183
217
|
}]
|
|
184
218
|
}
|
|
185
219
|
}.freeze
|
|
@@ -53,13 +53,15 @@ module RunApi
|
|
|
53
53
|
validate_contract!(CONTRACT["text-to-video"], params)
|
|
54
54
|
|
|
55
55
|
model = param(params, :model)
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
unless model == "seedance-2.5"
|
|
57
|
+
max_prompt = case model
|
|
58
|
+
when "seedance-1.5-pro" then Types::PROMPT_MAX_LENGTH_1_5
|
|
59
|
+
when *Types::V1_MODELS then Types::PROMPT_MAX_LENGTH_V1
|
|
60
|
+
else Types::PROMPT_MAX_LENGTH_2
|
|
61
|
+
end
|
|
62
|
+
unless prompt.length.between?(Types::PROMPT_MIN_LENGTH, max_prompt)
|
|
63
|
+
raise Core::ValidationError, "prompt length must be between #{Types::PROMPT_MIN_LENGTH} and #{max_prompt} characters"
|
|
64
|
+
end
|
|
63
65
|
end
|
|
64
66
|
|
|
65
67
|
case model
|
|
@@ -77,8 +79,8 @@ module RunApi
|
|
|
77
79
|
raise Core::ValidationError, "aspect_ratio is not accepted in image-to-video mode; it is derived from the image"
|
|
78
80
|
end
|
|
79
81
|
|
|
80
|
-
if field_present?(params, :last_frame_image_url)
|
|
81
|
-
raise Core::ValidationError, "last_frame_image_url is
|
|
82
|
+
if field_present?(params, :last_frame_image_url)
|
|
83
|
+
raise Core::ValidationError, "last_frame_image_url is not supported by #{model}"
|
|
82
84
|
end
|
|
83
85
|
|
|
84
86
|
unsupported = %i[source_image_urls reference_image_urls reference_video_urls reference_audio_urls web_search generate_audio]
|
|
@@ -8,8 +8,8 @@ module RunApi
|
|
|
8
8
|
# contract; the constants here back the bespoke checks the contract cannot
|
|
9
9
|
# express (per-model prompt length and seed range).
|
|
10
10
|
module Types
|
|
11
|
-
# V1-generation model identifiers:
|
|
12
|
-
V1_MODELS = %w[seedance-v1-
|
|
11
|
+
# V1-generation model identifiers: pro (high-quality) and pro-fast (speed-optimized).
|
|
12
|
+
V1_MODELS = %w[seedance-v1-pro seedance-v1-pro-fast].freeze
|
|
13
13
|
|
|
14
14
|
# Valid seed range; -1 requests a random seed.
|
|
15
15
|
SEED_RANGE = (-1..2_147_483_647)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: runapi-seedance
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.14
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- RunAPI
|
|
@@ -15,14 +15,14 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - "~>"
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 0.3.
|
|
18
|
+
version: 0.3.5
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - "~>"
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: 0.3.
|
|
25
|
+
version: 0.3.5
|
|
26
26
|
description: The Seedance Ruby SDK is the language-specific package for Seedance on
|
|
27
27
|
RunAPI. Use this package for video generation, animation, and video editing workflows
|
|
28
28
|
when your application needs request bodies, task status lookup, and consistent RunAPI
|