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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb1d39da83ff94f5550000829f06ae725ac8bd8a641b3c4afc831df6041cd0ef
4
- data.tar.gz: a47fa9e700d0b2298b44e07d821a50ace64307561d0d39b0f321053fdc8e4497
3
+ metadata.gz: 19fc812c328aa39916a08ed301d4baf382dcfa480d93f278f73e43a2f46ba379
4
+ data.tar.gz: bee0b1e06373bebd8431b8252007656afed60fc74c74290a3e14d091a1699f25
5
5
  SHA512:
6
- metadata.gz: 50467ef727c7e057619cb1c52cd777a311f5f08327ad63b041e394e688712f5d162c632487da05c10aae206172ac8849a09bfe736fc387b67e3a37bdfdf9adbb
7
- data.tar.gz: e222b6ac2a427bc2e2c2927450e72fedc71e27346f7c8a2e0916c66091cbfa72546c747b84de2d90d29fe1cf775bd36c1e5c6ac299256afc5f8c5ff5d8251c8e
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#seedance; for SDK docs, use https://runapi.ai/docs#sdk-seedance.
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#seedance.
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#sdk-seedance
37
- - Product docs: https://runapi.ai/docs#seedance
38
- - Pricing and rate limits: https://runapi.ai/models/seedance/v1-lite
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-v1-lite", "seedance-v1-pro", "seedance-v1-pro-fast"],
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-v1-lite" => {
97
+ "seedance-2.5" => {
98
98
  "aspect_ratio" => {
99
- "enum" => ["1:1", "4:3", "3:4", "16:9", "9:16", "9:21"]
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", "1080p"]
112
+ "enum" => ["480p", "720p"]
108
113
  },
109
- "seed" => {
110
- "type" => "integer"
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-v1-lite"
204
+ "model" => "seedance-2.5"
171
205
  },
172
- "forbidden" => ["source_image_urls", "reference_image_urls", "reference_video_urls", "reference_audio_urls", "web_search", "generate_audio"]
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
- max_prompt = case model
57
- when "seedance-1.5-pro" then Types::PROMPT_MAX_LENGTH_1_5
58
- when *Types::V1_MODELS then Types::PROMPT_MAX_LENGTH_V1
59
- else Types::PROMPT_MAX_LENGTH_2
60
- end
61
- unless prompt.length.between?(Types::PROMPT_MIN_LENGTH, max_prompt)
62
- raise Core::ValidationError, "prompt length must be between #{Types::PROMPT_MIN_LENGTH} and #{max_prompt} characters"
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) && !(model == "seedance-v1-lite" && has_image)
81
- raise Core::ValidationError, "last_frame_image_url is only supported by seedance-v1-lite in image-to-video mode"
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: lite (low-cost), pro (high-quality), and pro-fast (speed-optimized).
12
- V1_MODELS = %w[seedance-v1-lite seedance-v1-pro seedance-v1-pro-fast].freeze
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.12
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.0
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.0
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