Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "4.10.0"
".": "4.11.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 36
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runwayml%2Frunwayml-8efb262fec205b8ab10f02929369aa1eb1ae72fba3cc8037552f439ab63c1f2d.yml
openapi_spec_hash: 265ec44f88060288ab3dc2142eb29585
config_hash: 8e05a8613b4c0e602d485566da4e5264
configured_endpoints: 37
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runwayml%2Frunwayml-ee023fb84f0e74914e23b019b4c0951108b7ff83b983563c91ae07986524b674.yml
openapi_spec_hash: 2472895eb74737ecef2cbee707e50cac
config_hash: 3063a17ad98d447287f6f7eab9d6d1d6
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
# Changelog

## 4.11.0 (2026-04-10)

Full Changelog: [v4.10.0...v4.11.0](https://github.com/runwayml/sdk-python/compare/v4.10.0...v4.11.0)

### Features

* **api:** add avatar_videos resource ([75b6ded](https://github.com/runwayml/sdk-python/commit/75b6deda8c5733115af29c9374ae10f3d4f4716a))
* **polling:** add wait_for_task_output to avatar_videos.create ([e8fe41b](https://github.com/runwayml/sdk-python/commit/e8fe41ba8c95f2263a08faefe2d791374b1db5d0))


### Bug Fixes

* **client:** preserve hardcoded query params when merging with user params ([839c38b](https://github.com/runwayml/sdk-python/commit/839c38bc95d9147b140481907621942c5c503ead))


### Chores

* pin GitHub Actions to full commit SHAs ([8f7689b](https://github.com/runwayml/sdk-python/commit/8f7689bac99f57930dd88a9ab3d4c9a279a13888))

## 4.10.0 (2026-04-01)

Full Changelog: [v4.9.0...v4.10.0](https://github.com/runwayml/sdk-python/compare/v4.9.0...v4.10.0)
Expand Down
12 changes: 12 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,18 @@ Methods:
- <code title="get /v1/avatars">client.avatars.<a href="./src/runwayml/resources/avatars.py">list</a>(\*\*<a href="src/runwayml/types/avatar_list_params.py">params</a>) -> <a href="./src/runwayml/types/avatar_list_response.py">SyncCursorPage[AvatarListResponse]</a></code>
- <code title="delete /v1/avatars/{id}">client.avatars.<a href="./src/runwayml/resources/avatars.py">delete</a>(id) -> None</code>

# AvatarVideos

Types:

```python
from runwayml.types import AvatarVideoCreateResponse
```

Methods:

- <code title="post /v1/avatar_videos">client.avatar_videos.<a href="./src/runwayml/resources/avatar_videos.py">create</a>(\*\*<a href="src/runwayml/types/avatar_video_create_params.py">params</a>) -> <a href="./src/runwayml/types/avatar_video_create_response.py">AvatarVideoCreateResponse</a></code>

# Documents

Types:
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "runwayml"
version = "4.10.0"
version = "4.11.0"
description = "The official Python library for the runwayml API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
4 changes: 4 additions & 0 deletions src/runwayml/_base_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -540,6 +540,10 @@ def _build_request(
files = cast(HttpxRequestFiles, ForceMultipartDict())

prepared_url = self._prepare_url(options.url)
# preserve hard-coded query params from the url
if params and prepared_url.query:
params = {**dict(prepared_url.params.items()), **params}
prepared_url = prepared_url.copy_with(raw_path=prepared_url.raw_path.split(b"?", 1)[0])
if "_" in prepared_url.host:
# work around https://github.com/encode/httpx/discussions/2880
kwargs["extensions"] = {"sni_hostname": prepared_url.host.replace("_", "-")}
Expand Down
38 changes: 38 additions & 0 deletions src/runwayml/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
workflows,
organization,
sound_effect,
avatar_videos,
text_to_image,
text_to_video,
voice_dubbing,
Expand All @@ -60,6 +61,7 @@
from .resources.workflows import WorkflowsResource, AsyncWorkflowsResource
from .resources.organization import OrganizationResource, AsyncOrganizationResource
from .resources.sound_effect import SoundEffectResource, AsyncSoundEffectResource
from .resources.avatar_videos import AvatarVideosResource, AsyncAvatarVideosResource
from .resources.text_to_image import TextToImageResource, AsyncTextToImageResource
from .resources.text_to_video import TextToVideoResource, AsyncTextToVideoResource
from .resources.voice_dubbing import VoiceDubbingResource, AsyncVoiceDubbingResource
Expand Down Expand Up @@ -240,6 +242,12 @@ def avatars(self) -> AvatarsResource:

return AvatarsResource(self)

@cached_property
def avatar_videos(self) -> AvatarVideosResource:
from .resources.avatar_videos import AvatarVideosResource

return AvatarVideosResource(self)

@cached_property
def documents(self) -> DocumentsResource:
from .resources.documents import DocumentsResource
Expand Down Expand Up @@ -542,6 +550,12 @@ def avatars(self) -> AsyncAvatarsResource:

return AsyncAvatarsResource(self)

@cached_property
def avatar_videos(self) -> AsyncAvatarVideosResource:
from .resources.avatar_videos import AsyncAvatarVideosResource

return AsyncAvatarVideosResource(self)

@cached_property
def documents(self) -> AsyncDocumentsResource:
from .resources.documents import AsyncDocumentsResource
Expand Down Expand Up @@ -789,6 +803,12 @@ def avatars(self) -> avatars.AvatarsResourceWithRawResponse:

return AvatarsResourceWithRawResponse(self._client.avatars)

@cached_property
def avatar_videos(self) -> avatar_videos.AvatarVideosResourceWithRawResponse:
from .resources.avatar_videos import AvatarVideosResourceWithRawResponse

return AvatarVideosResourceWithRawResponse(self._client.avatar_videos)

@cached_property
def documents(self) -> documents.DocumentsResourceWithRawResponse:
from .resources.documents import DocumentsResourceWithRawResponse
Expand Down Expand Up @@ -921,6 +941,12 @@ def avatars(self) -> avatars.AsyncAvatarsResourceWithRawResponse:

return AsyncAvatarsResourceWithRawResponse(self._client.avatars)

@cached_property
def avatar_videos(self) -> avatar_videos.AsyncAvatarVideosResourceWithRawResponse:
from .resources.avatar_videos import AsyncAvatarVideosResourceWithRawResponse

return AsyncAvatarVideosResourceWithRawResponse(self._client.avatar_videos)

@cached_property
def documents(self) -> documents.AsyncDocumentsResourceWithRawResponse:
from .resources.documents import AsyncDocumentsResourceWithRawResponse
Expand Down Expand Up @@ -1053,6 +1079,12 @@ def avatars(self) -> avatars.AvatarsResourceWithStreamingResponse:

return AvatarsResourceWithStreamingResponse(self._client.avatars)

@cached_property
def avatar_videos(self) -> avatar_videos.AvatarVideosResourceWithStreamingResponse:
from .resources.avatar_videos import AvatarVideosResourceWithStreamingResponse

return AvatarVideosResourceWithStreamingResponse(self._client.avatar_videos)

@cached_property
def documents(self) -> documents.DocumentsResourceWithStreamingResponse:
from .resources.documents import DocumentsResourceWithStreamingResponse
Expand Down Expand Up @@ -1185,6 +1217,12 @@ def avatars(self) -> avatars.AsyncAvatarsResourceWithStreamingResponse:

return AsyncAvatarsResourceWithStreamingResponse(self._client.avatars)

@cached_property
def avatar_videos(self) -> avatar_videos.AsyncAvatarVideosResourceWithStreamingResponse:
from .resources.avatar_videos import AsyncAvatarVideosResourceWithStreamingResponse

return AsyncAvatarVideosResourceWithStreamingResponse(self._client.avatar_videos)

@cached_property
def documents(self) -> documents.AsyncDocumentsResourceWithStreamingResponse:
from .resources.documents import AsyncDocumentsResourceWithStreamingResponse
Expand Down
2 changes: 1 addition & 1 deletion src/runwayml/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "runwayml"
__version__ = "4.10.0" # x-release-please-version
__version__ = "4.11.0" # x-release-please-version
42 changes: 42 additions & 0 deletions src/runwayml/resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@
VoicesResourceWithStreamingResponse,
AsyncVoicesResourceWithStreamingResponse,
)
from .avatars import (
AvatarsResource,
AsyncAvatarsResource,
AvatarsResourceWithRawResponse,
AsyncAvatarsResourceWithRawResponse,
AvatarsResourceWithStreamingResponse,
AsyncAvatarsResourceWithStreamingResponse,
)
from .uploads import (
UploadsResource,
AsyncUploadsResource,
Expand All @@ -24,6 +32,14 @@
UploadsResourceWithStreamingResponse,
AsyncUploadsResourceWithStreamingResponse,
)
from .documents import (
DocumentsResource,
AsyncDocumentsResource,
DocumentsResourceWithRawResponse,
AsyncDocumentsResourceWithRawResponse,
DocumentsResourceWithStreamingResponse,
AsyncDocumentsResourceWithStreamingResponse,
)
from .workflows import (
WorkflowsResource,
AsyncWorkflowsResource,
Expand All @@ -48,6 +64,14 @@
SoundEffectResourceWithStreamingResponse,
AsyncSoundEffectResourceWithStreamingResponse,
)
from .avatar_videos import (
AvatarVideosResource,
AsyncAvatarVideosResource,
AvatarVideosResourceWithRawResponse,
AsyncAvatarVideosResourceWithRawResponse,
AvatarVideosResourceWithStreamingResponse,
AsyncAvatarVideosResourceWithStreamingResponse,
)
from .text_to_image import (
TextToImageResource,
AsyncTextToImageResource,
Expand Down Expand Up @@ -216,6 +240,24 @@
"AsyncUploadsResourceWithRawResponse",
"UploadsResourceWithStreamingResponse",
"AsyncUploadsResourceWithStreamingResponse",
"AvatarsResource",
"AsyncAvatarsResource",
"AvatarsResourceWithRawResponse",
"AsyncAvatarsResourceWithRawResponse",
"AvatarsResourceWithStreamingResponse",
"AsyncAvatarsResourceWithStreamingResponse",
"AvatarVideosResource",
"AsyncAvatarVideosResource",
"AvatarVideosResourceWithRawResponse",
"AsyncAvatarVideosResourceWithRawResponse",
"AvatarVideosResourceWithStreamingResponse",
"AsyncAvatarVideosResourceWithStreamingResponse",
"DocumentsResource",
"AsyncDocumentsResource",
"DocumentsResourceWithRawResponse",
"AsyncDocumentsResourceWithRawResponse",
"DocumentsResourceWithStreamingResponse",
"AsyncDocumentsResourceWithStreamingResponse",
"RealtimeSessionsResource",
"AsyncRealtimeSessionsResource",
"RealtimeSessionsResourceWithRawResponse",
Expand Down
Loading