Python SDK Reference

Installation

1pip install frameio

Usage

Instantiate and use the client with the following:

1from frameio import (
2 Frameio,
3 SelectDefinitionParamsFieldConfiguration,
4 SelectDefinitionParamsFieldConfigurationOptionsItem,
5)
6from frameio.metadata_fields import CreateFieldDefinitionParamsData_Select
7
8client = Frameio(
9 token="YOUR_TOKEN",
10)
11client.metadata_fields.metadata_field_definitions_create(
12 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
13 data=CreateFieldDefinitionParamsData_Select(
14 field_configuration=SelectDefinitionParamsFieldConfiguration(
15 enable_add_new=False,
16 options=[
17 SelectDefinitionParamsFieldConfigurationOptionsItem(
18 display_name="Option 1",
19 ),
20 SelectDefinitionParamsFieldConfigurationOptionsItem(
21 display_name="Option 2",
22 ),
23 ],
24 ),
25 name="Fields definition name",
26 ),
27)

Async Client

The SDK also exports an async client so that you can make non-blocking calls to our API. Note that if you are constructing an Async httpx client class to pass into this client, use httpx.AsyncClient() instead of httpx.Client() (e.g. for the httpx_client parameter of this client).

1import asyncio
2
3from frameio import (
4 AsyncFrameio,
5 SelectDefinitionParamsFieldConfiguration,
6 SelectDefinitionParamsFieldConfigurationOptionsItem,
7)
8from frameio.metadata_fields import CreateFieldDefinitionParamsData_Select
9
10client = AsyncFrameio(
11 token="YOUR_TOKEN",
12)
13
14
15async def main() -> None:
16 await client.metadata_fields.metadata_field_definitions_create(
17 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
18 data=CreateFieldDefinitionParamsData_Select(
19 field_configuration=SelectDefinitionParamsFieldConfiguration(
20 enable_add_new=False,
21 options=[
22 SelectDefinitionParamsFieldConfigurationOptionsItem(
23 display_name="Option 1",
24 ),
25 SelectDefinitionParamsFieldConfigurationOptionsItem(
26 display_name="Option 2",
27 ),
28 ],
29 ),
30 name="Fields definition name",
31 ),
32 )
33
34
35asyncio.run(main())

Exception Handling

When the API returns a non-success status code (4xx or 5xx response), a subclass of the following error will be thrown.

1from frameio.core.api_error import ApiError
2
3try:
4 client.metadata_fields.metadata_field_definitions_create(...)
5except ApiError as e:
6 print(e.status_code)
7 print(e.body)

Pagination

Paginated requests will return a SyncPager or AsyncPager, which can be used as generators for the underlying object.

1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6response = client.project_permissions.index(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 page_size=10,
10 include_total_count=False,
11)
12for item in response:
13 yield item
14# alternatively, you can paginate page-by-page
15for page in response.iter_pages():
16 yield page

Advanced

Access Raw Response Data

The SDK provides access to raw response data, including headers, through the .with_raw_response property. The .with_raw_response property returns a “raw” client that can be used to access the .headers and .data attributes.

1from frameio import Frameio
2
3client = Frameio(
4 ...,
5)
6response = (
7 client.metadata_fields.with_raw_response.metadata_field_definitions_create(
8 ...
9 )
10)
11print(response.headers) # access the response headers
12print(response.data) # access the underlying object
13pager = client.project_permissions.index(...)
14print(pager.response.headers) # access the response headers for the first page
15for item in pager:
16 print(item) # access the underlying object(s)
17for page in pager.iter_pages():
18 print(page.response.headers) # access the response headers for each page
19 for item in page:
20 print(item) # access the underlying object(s)

Retries

The SDK is instrumented with automatic retries with exponential backoff. A request will be retried as long as the request is deemed retryable and the number of retry attempts has not grown larger than the configured retry limit (default: 2).
A request is deemed retryable when any of the following HTTP status codes is returned:

  • 408 (Timeout)
  • 429 (Too Many Requests)
  • 5XX (Internal Server Errors)

Use the max_retries request option to configure this behavior.

1client.metadata_fields.metadata_field_definitions_create(..., request_options={
2 "max_retries": 1
3})

Timeouts

The SDK defaults to a 60 second timeout. You can configure this with a timeout option at the client or request level.

1from frameio import Frameio
2
3client = Frameio(
4 ...,
5 timeout=20.0,
6)
7
8
9# Override timeout for a specific method
10client.metadata_fields.metadata_field_definitions_create(..., request_options={
11 "timeout_in_seconds": 1
12})

Custom Client

You can override the httpx client to customize it for your use-case. Some common use-cases include support for proxies and transports.

1import httpx
2from frameio import Frameio
3
4client = Frameio(
5 ...,
6 httpx_client=httpx.Client(
7 proxy="http://my.test.proxy.example.com",
8 transport=httpx.HTTPTransport(local_address="0.0.0.0"),
9 ),
10)

Reference

Metadata

client.metadata.bulk_update(...) -> AsyncHttpResponse[None]

Update metadata values across multiple files.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.metadata import (
3 BulkUpdateMetadataParamsData,
4 BulkUpdateMetadataParamsDataValuesItem,
5)
6
7client = Frameio(
8 token="YOUR_TOKEN",
9)
10client.metadata.bulk_update(
11 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
12 project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
13 data=BulkUpdateMetadataParamsData(
14 file_ids=[
15 "09b31c2a-04de-464a-a593-643a36ef0d98",
16 "b967fc36-4e18-4b48-a3ab-c790100e2baa",
17 ],
18 values=[
19 BulkUpdateMetadataParamsDataValuesItem(
20 field_definition_id="ff41ce50-269b-4624-8306-aac10e28ab94",
21 value=[
22 {
23 "id": "e60f47b4-cf8e-4273-96d5-3258a830a0aa",
24 "type": "user",
25 },
26 {
27 "id": "24eeaf7e-ce27-4555-bc77-cce39900626d",
28 "type": "account_user_group",
29 },
30 ],
31 )
32 ],
33 ),
34)

Parameters

account_id: Uuid

project_id: Uuid

data: BulkUpdateMetadataParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Show the metadata of a file.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.metadata.show(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 show_null=True,
10)

Parameters

account_id: Uuid

file_id: Uuid

show_null: typing.Optional[bool]

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Metadata Fields

Delete account level custom field definitions.
Rate Limits: 60 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.metadata_fields.metadata_field_definitions_delete(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 field_definition_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9)

Parameters

account_id: Uuid —

field_definition_id: Uuid —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Update account level custom field definitions.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import (
2 Frameio,
3 UpdateSelectDefinitionParamsFieldConfiguration,
4 UpdateSelectDefinitionParamsFieldConfigurationOptionsItem,
5)
6from frameio.metadata_fields import UpdateFieldDefinitionParamsData_Select
7
8client = Frameio(
9 token="YOUR_TOKEN",
10)
11client.metadata_fields.metadata_field_definitions_update(
12 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
13 field_definition_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
14 data=UpdateFieldDefinitionParamsData_Select(
15 field_configuration=UpdateSelectDefinitionParamsFieldConfiguration(
16 enable_add_new=False,
17 options=[
18 UpdateSelectDefinitionParamsFieldConfigurationOptionsItem(
19 display_name="Option 1",
20 ),
21 UpdateSelectDefinitionParamsFieldConfigurationOptionsItem(
22 display_name="Option 2",
23 ),
24 ],
25 ),
26 name="Updated-Field-Name",
27 ),
28)

Parameters

account_id: Uuid —

field_definition_id: Uuid —

data: typing.Optional[UpdateFieldDefinitionParamsData]

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

List account level field definitions.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.metadata_fields.metadata_field_definitions_index(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 after="<opaque_cursor>",
9 page_size=10,
10 include_total_count=False,
11)

Parameters

account_id: Uuid —

include: typing.Optional[typing.Literal[“creator”]] —

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize] —

include_total_count: typing.Optional[IncludeTotalCount] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Create account level field definitions.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import (
2 Frameio,
3 SelectDefinitionParamsFieldConfiguration,
4 SelectDefinitionParamsFieldConfigurationOptionsItem,
5)
6from frameio.metadata_fields import CreateFieldDefinitionParamsData_Select
7
8client = Frameio(
9 token="YOUR_TOKEN",
10)
11client.metadata_fields.metadata_field_definitions_create(
12 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
13 data=CreateFieldDefinitionParamsData_Select(
14 field_configuration=SelectDefinitionParamsFieldConfiguration(
15 enable_add_new=False,
16 options=[
17 SelectDefinitionParamsFieldConfigurationOptionsItem(
18 display_name="Option 1",
19 ),
20 SelectDefinitionParamsFieldConfigurationOptionsItem(
21 display_name="Option 2",
22 ),
23 ],
24 ),
25 name="Fields definition name",
26 ),
27)

Parameters

account_id: Uuid —

data: typing.Optional[CreateFieldDefinitionParamsData]

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Project Permissions

List user roles for a given project.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6response = client.project_permissions.index(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 include_deactivated=True,
10 after="<opaque_cursor>",
11 page_size=10,
12 include_total_count=False,
13)
14for item in response:
15 yield item
16# alternatively, you can paginate page-by-page
17for page in response.iter_pages():
18 yield page

Parameters

account_id: Uuid —

project_id: Uuid —

include_deactivated: typing.Optional[bool] — Supports including deactivated users in the response. Default is false.

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

NOTE: this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize] —

include_total_count: typing.Optional[IncludeTotalCount] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Remove a user from a given project.
Rate Limits: 60 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.project_permissions.delete(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 user_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10)

Parameters

account_id: Uuid —

project_id: Uuid —

user_id: Uuid —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Update user roles for the given project if the user is already added to the project. If the user is not added to the project, the user will be added with the given role.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio, UpdateUserRolesParamsData
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.project_permissions.project_user_roles_update(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 user_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=UpdateUserRolesParamsData(
11 role="editor",
12 ),
13)

Parameters

account_id: Uuid —

project_id: Uuid —

user_id: Uuid —

data: UpdateUserRolesParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Projects

Show project details.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.projects.show(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9)

Parameters account_id: Uuid

project_id: Uuid

include: typing.Optional[typing.Literal["owner"]]

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Delete a project.
Rate Limits: 60 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.projects.delete(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9)

Parameters account_id: Uuid

project_id: Uuid

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Update project details.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.projects import ProjectUpdateParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.projects.update(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=ProjectUpdateParamsData(
11 name="Project Name",
12 restricted=True,
13 status="active",
14 ),
15)

Parameters account_id: Uuid

project_id: Uuid

data: ProjectUpdateParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

List projects in a given workspace.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6response = client.projects.index(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 after="<opaque_cursor>",
10 page_size=10,
11 include_total_count=False,
12)
13for item in response:
14 yield item
15# alternatively, you can paginate page-by-page
16for page in response.iter_pages():
17 yield page

Parameters account_id: Uuid

workspace_id: Uuid

include: typing.Optional[typing.Literal["owner"]]

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

This value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize] include_total_count: typing.Optional[IncludeTotalCount]` —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Create project in a given workspace.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.projects import ProjectParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.projects.create(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=ProjectParamsData(
11 name="Project Name",
12 restricted=True,
13 ),
14)

Parameters account_id: Uuid

workspace_id: Uuid

data: ProjectParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Folders

Show folder details.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.folders.show(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 include="creator",
10)

Parameters

account_id: Uuid —

folder_id: Uuid —

include: typing.Optional[AssetInclude] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Delete folder by id.
Rate Limits: 60 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.folders.delete(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9)

Parameters

account_id: Uuid —

folder_id: Uuid —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Update folder details.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.folders import FolderUpdateParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.folders.update(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=FolderUpdateParamsData(
11 name="Folder name",
12 ),
13)

Parameters

account_id: Uuid —

folder_id: Uuid —

data: FolderUpdateParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

List the children in the given folder. Use the include query parameter to selectively include additional properties in the response.

if you include media_links.original and the user does not have permission to download files in the corresponding project, then this endpoint will respond with a 403 Forbidden error. If the content is inaccessible because watermarking is required for this user and isn’t supported by the requested media_links, then the request will succeed but the unsupported media links will be set to null. Similarly, if a requested transcode link does not exist for a particular file (e.g. including media_links.video_h264_180 on a static image file) or transoding process hasn’t finished (i.e. the file’s status is “uploaded” rather than “transcoded”), then the a media link will also be set to null in the response payload. In short, the client must handle null media links gracefully.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.folders.index(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 include="media_links",
10 type="file,folder,version_stack",
11 after="<opaque_cursor>",
12 page_size=10,
13 include_total_count=False,
14)

Parameters

account_id: Uuid —

folder_id: Uuid —

include: typing.Optional[FileWithMediaLinksInclude] —

type: typing.Optional[ChildrenType] —

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize] —

include_total_count: typing.Optional[IncludeTotalCount] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Copy folder.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.folders import FolderCopyParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.folders.copy(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 copy_metadata=True,
11 data=FolderCopyParamsData(
12 parent_id="2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
13 ),
14)

Parameters

account_id: Uuid —

folder_id: Uuid —

copy_metadata: typing.Optional[bool] — Whether to copy metadata values along with the folder

data: typing.Optional[FolderCopyParamsData]

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

List folders in a given folder.
Rate Limits: 5 calls per 1 second(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.folders.list(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 include="creator",
10 after="<opaque_cursor>",
11 page_size=10,
12 include_total_count=False,
13)

Parameters

account_id: Uuid —

folder_id: Uuid —

include: typing.Optional[AssetInclude] —

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize] —

include_total_count: typing.Optional[IncludeTotalCount] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Create a new folder inside the given folder_id path param.
Rate Limits: 3 calls per 1 second(s) per account_user

usage
1from frameio import Frameio
2from frameio.folders import FolderCreateParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.folders.create(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=FolderCreateParamsData(
11 name="Folder name",
12 ),
13)

Parameters

account_id: Uuid —

folder_id: Uuid —

data: FolderCreateParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Move folder to a folder.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.folders import FolderMoveParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.folders.move(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=FolderMoveParamsData(
11 parent_id="2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
12 ),
13)

Parameters

account_id: Uuid —

folder_id: Uuid —

data: FolderMoveParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Version Stacks

List the children (files) in a given version stack. Use the include query parameter to selectively include additional properties in the response.

If you include media_links.original and the user does not have permission to download files in the corresponding project, then this endpoint will respond with a 403 Forbidden error. If the content is inaccessible because watermarking is required for this user and isn’t supported by the requested media_links, then the request will succeed but the unsupported media links will be set to null. Similarly, if a requested transcode link does not exist for a particular file (e.g. including media_links.video_h264_180 on a static image file) or transoding process hasn’t finished (i.e. the file’s status is “uploaded” rather than “transcoded”), then the a media link will also be set to null in the response payload. In short, the client must handle null media links gracefully.
. Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.version_stacks.index(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 version_stack_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 include="media_links",
10 after="<opaque_cursor>",
11 page_size=10,
12 include_total_count=False,
13)

Parameters

account_id: Uuid —

version_stack_id: Uuid —

include: typing.Optional[FileWithMediaLinksInclude] —

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

This value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize] —

include_total_count: typing.Optional[IncludeTotalCount] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Show version stack details.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.version_stacks.show(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 version_stack_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 include="media_links",
10)

Parameters

account_id: Uuid —

version_stack_id: Uuid —

include: typing.Optional[VersionStacksShowRequestInclude] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Copy version stack.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.version_stacks import VersionStackCopyParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.version_stacks.copy(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 version_stack_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 copy_metadata=True,
11 data=VersionStackCopyParamsData(
12 parent_id="2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
13 ),
14)

Parameters

account_id: Uuid —

version_stack_id: Uuid —

copy_metadata: typing.Optional[bool] — Whether to copy metadata values along with the version stack

data: typing.Optional[VersionStackCopyParamsData]

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

List version stacks in a given folder.
Rate Limits: 5 calls per 1 second(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.version_stacks.list(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 include="media_links",
10 after="<opaque_cursor>",
11 page_size=10,
12 include_total_count=False,
13)

Parameters

account_id: Uuid —

folder_id: Uuid —

include: typing.Optional[FileWithMediaLinksInclude] —

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

This value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize] —

include_total_count: typing.Optional[IncludeTotalCount] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Create a new Version Stack under the parent folder.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.version_stacks import VersionStackCreateParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.version_stacks.create(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=VersionStackCreateParamsData(
11 file_ids=[
12 "dd2a3cdd-fc90-41bd-a7b8-8a0447aec6d4",
13 "79fed48a-8372-496e-8dcb-5e959b9b9fcf",
14 ],
15 ),
16)

Parameters

account_id: Uuid —

folder_id: Uuid —

data: VersionStackCreateParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Move version stack to a folder.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.version_stacks import VersionStackMoveParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.version_stacks.move(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 version_stack_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=VersionStackMoveParamsData(
11 parent_id="2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
12 ),
13)

Parameters

account_id: Uuid —

version_stack_id: Uuid —

data: VersionStackMoveParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Account Permissions

List user roles for a given account.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6response = client.account_permissions.index(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 include_deactivated=True,
9 after="<opaque_cursor>",
10 page_size=10,
11 include_total_count=False,
12)
13for item in response:
14 yield item
15# alternatively, you can paginate page-by-page
16for page in response.iter_pages():
17 yield page

Parameters

account_id: Uuid —

include_deactivated: typing.Optional[bool] — Supports including deactivated users in the response. Default is false.

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

This value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize] —

include_total_count: typing.Optional[IncludeTotalCount] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Accounts

List accounts for the current user.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6response = client.accounts.index(
7 after="<opaque_cursor>",
8 page_size=10,
9 include_total_count=False,
10)
11for item in response:
12 yield item
13# alternatively, you can paginate page-by-page
14for page in response.iter_pages():
15 yield page

Parameters

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

This value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize] —

include_total_count: typing.Optional[IncludeTotalCount] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Comments

Show a single comment on a file.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.comments.show(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 comment_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 include="owner",
10)

Parameters

account_id: Uuid —

comment_id: Uuid —

include: typing.Optional[CommentsShowRequestInclude] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Delete comment from an asset.
Rate Limits: 60 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.comments.delete(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 comment_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9)

Parameters

account_id: Uuid —

comment_id: Uuid —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Update comment on given asset.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.comments import UpdateCommentParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.comments.update(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 comment_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 timestamp_as_timecode=True,
11 data=UpdateCommentParamsData(
12 annotation='[{"tool":"rect","color":"#F22237","size":8,"x":0.277726001863933,"y":0.12909555568499534,"w":0.3153168321877913,"h":0.5308131407269339,"ix":0.277726001863933,"iy":0.12909555568499534,"radius":8}]',
13 completed=False,
14 page=4,
15 text="This is great!",
16 ),
17)

Parameters

account_id: Uuid —

comment_id: Uuid —

data: UpdateCommentParamsData

timestamp_as_timecode: typing.Optional[bool] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

List comments on a given asset.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6response = client.comments.index(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 include="owner",
10 after="<opaque_cursor>",
11 page_size=10,
12 include_total_count=False,
13)
14for item in response:
15 yield item
16# alternatively, you can paginate page-by-page
17for page in response.iter_pages():
18 yield page

Parameters

account_id: Uuid —

file_id: Uuid —

include: typing.Optional[CommentInclude] —

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

This value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize] —

include_total_count: typing.Optional[IncludeTotalCount] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Create a comment on a file.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.comments import CreateCommentParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.comments.create(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 timestamp_as_timecode=True,
11 data=CreateCommentParamsData(
12 annotation='[{"tool":"rect","color":"#F22237","size":8,"x":0.277726001863933,"y":0.12909555568499534,"w":0.3153168321877913,"h":0.5308131407269339,"ix":0.277726001863933,"iy":0.12909555568499534,"radius":8}]',
13 completed=False,
14 page=4,
15 text="This is great!",
16 timestamp="00:00:02:12",
17 ),
18)

Parameters

account_id: Uuid —

file_id: Uuid —

data: CreateCommentParamsData

timestamp_as_timecode: typing.Optional[bool] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Webhooks

List webhooks for the given workspace.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6response = client.webhooks.index(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 after="<opaque_cursor>",
10 page_size=10,
11 include_total_count=False,
12)
13for item in response:
14 yield item
15# alternatively, you can paginate page-by-page
16for page in response.iter_pages():
17 yield page

Parameters

account_id: Uuid —

workspace_id: Uuid —

include: typing.Optional[typing.Literal[“creator”]] —

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

This value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize] —

include_total_count: typing.Optional[IncludeTotalCount] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Creates a single webhook with secret.

Valid events:

file.created,
file.deleted,
file.ready, file.updated, file.upload.completed, file.versioned, file.copied, folder.created, folder.deleted, folder.updated, folder.copied, comment.completed, comment.created, comment.deleted, comment.uncompleted, comment.updated, customfield.created, customfield.updated, customfield.deleted, metadata.value.updated, project.created, project.deleted, project.updated, collection.created, collection.updated, collection.deleted, share.created, share.updated, share.deleted, share.viewed. Rate Limits: 10 calls per 1.00 minute(s) per account

usage
1from frameio import Frameio
2from frameio.webhooks import WebhookCreateParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.webhooks.create(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=WebhookCreateParamsData(
11 events=[
12 "file.created",
13 "file.deleted",
14 "file.ready",
15 "file.updated",
16 "file.upload.completed",
17 "file.versioned",
18 "file.copied",
19 "folder.created",
20 "folder.deleted",
21 "folder.updated",
22 "folder.copied",
23 "comment.completed",
24 "comment.created",
25 "comment.deleted",
26 "comment.uncompleted",
27 "comment.updated",
28 "customfield.created",
29 "customfield.updated",
30 "customfield.deleted",
31 "metadata.value.updated",
32 "project.created",
33 "project.deleted",
34 "project.updated",
35 "collection.created",
36 "collection.updated",
37 "collection.deleted",
38 "share.created",
39 "share.updated",
40 "share.deleted",
41 "share.viewed",
42 ],
43 name="New Webhook",
44 url="https://url.example.com",
45 ),
46)

Parameters

account_id: Uuid —

workspace_id: Uuid —

data: WebhookCreateParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Show webhook details.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.webhooks.show(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 webhook_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9)

Parameters

account_id: Uuid —

webhook_id: Uuid —

include: typing.Optional[typing.Literal[“creator”]] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Delete a webhook.
Rate Limits: 60 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.webhooks.delete(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 webhook_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9)

Parameters

account_id: Uuid —

webhook_id: Uuid —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Update webhook details.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.webhooks import WebhookUpdateParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.webhooks.update(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 webhook_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=WebhookUpdateParamsData(
11 active=True,
12 events=[
13 "file.created",
14 "file.deleted",
15 "file.ready",
16 "file.updated",
17 "file.upload.completed",
18 "file.versioned",
19 "file.copied",
20 "folder.created",
21 "folder.deleted",
22 "folder.updated",
23 "folder.copied",
24 "comment.completed",
25 "comment.created",
26 "comment.deleted",
27 "comment.uncompleted",
28 "comment.updated",
29 "customfield.created",
30 "customfield.updated",
31 "customfield.deleted",
32 "metadata.value.updated",
33 "project.created",
34 "project.deleted",
35 "project.updated",
36 "collection.created",
37 "collection.updated",
38 "collection.deleted",
39 "share.created",
40 "share.updated",
41 "share.deleted",
42 "share.viewed",
43 ],
44 name="Updated Webhook",
45 url="https://url.example.com",
46 ),
47)

Parameters

account_id: Uuid —

webhook_id: Uuid —

data: WebhookUpdateParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Workspace Permissions

List user roles for a given workspace.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6response = client.workspace_permissions.index(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 include_deactivated=True,
10 after="<opaque_cursor>",
11 page_size=10,
12 include_total_count=False,
13)
14for item in response:
15 yield item
16# alternatively, you can paginate page-by-page
17for page in response.iter_pages():
18 yield page

Parameters

account_id: Uuid

workspace_id: Uuid

includ_deactivated: typing.Optional[bool] — Supports including deactivated users in the response. Default is false.

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

This value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize]

include_total_count: typing.Optional[IncludeTotalCount]

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Remove a user from a given workspace.
Rate Limits: 60 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.workspace_permissions.workspace_user_roles_delete(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 user_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10)

Parameters

account_id: Uuid

workspace_id: Uuid

user_id: Uuid

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Update user roles for the given workspace if the user is already added to the workspace. If the user is not added to the workspace, the user will be added with the given role.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio, UpdateUserRolesParamsData
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.workspace_permissions.workspace_user_roles_update(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 user_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=UpdateUserRolesParamsData(
11 role="editor",
12 ),
13)

Parameters

account_id: Uuid

workspace_id: Uuid

user_id: Uuid

data: UpdateUserRolesParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Workspaces

Show workspace details.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.workspaces.show(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9)

Parameters

account_id: Uuid —

workspace_id: Uuid —

include: typing.Optional[typing.Literal[“creator”]] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Delete workspace from account.
Rate Limits: 60 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.workspaces.delete(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9)

Parameters

account_id: Uuid —

workspace_id: Uuid —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Update a workspace.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio, WorkspaceParamsData
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.workspaces.update(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 data=WorkspaceParamsData(
10 name="My Workspace",
11 ),
12)

Parameters

account_id: Uuid —

workspace_id: Uuid —

data: WorkspaceParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

List workspaces for a given account.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6response = client.workspaces.index(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 after="<opaque_cursor>",
9 page_size=10,
10 include_total_count=False,
11)
12for item in response:
13 yield item
14# alternatively, you can paginate page-by-page
15for page in response.iter_pages():
16 yield page

Parameters

account_id: Uuid —

workspace_id: Uuid —

include: typing.Optional[typing.Literal[“owner”]] —

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

This value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

`page_size“: typing.Optional[RequestPageSize] —

include_total_count: typing.Optional[IncludeTotalCount] —

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Create workspace from an account.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio, WorkspaceParamsData
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.workspaces.create(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 data=WorkspaceParamsData(
9 name="My Workspace",
10 ),
11)

Parameters

account_id: Uuid —

data: WorkspaceParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Shares

Show a single Share.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.shares.show(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9)

Parameters

account_id: Uuid

share_id: Uuid

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Delete a share.
Rate Limits: 60 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.shares.delete(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9)

Parameters

account_id: Uuid

share_id: Uuid

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Update share.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1import datetime
2
3from frameio import Frameio
4from frameio.shares import UpdateShareParamsData
5
6client = Frameio(
7 token="YOUR_TOKEN",
8)
9client.shares.update(
10 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
11 share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
12 data=UpdateShareParamsData(
13 access="public",
14 description="A descriptive summary of the share",
15 downloading_enabled=True,
16 expiration=datetime.datetime.fromisoformat(
17 "2026-01-22 17:04:53+00:00",
18 ),
19 name="Share Name",
20 passphrase="as!dfj39sd(*",
21 ),
22)

Parameters

account_id: Uuid

share_id: Uuid

data: UpdateShareParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

List share reviewers.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6response = client.shares.list_reviewers(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 after="<opaque_cursor>",
10 page_size=10,
11 include_total_count=False,
12)
13for item in response:
14 yield item
15# alternatively, you can paginate page-by-page
16for page in response.iter_pages():
17 yield page

Parameters

account_id: Uuid

share_id: Uuid

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

This value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize]

include_total_count: typing.Optional[IncludeTotalCount]

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Add reviewers to secure share by three identifier types: adobe_user_id, email, and user_id. A request can only include one identifier type parameter. email is the only identifier able to add reviewers to a Share who don’t have a Frame account member on the account where the Share belongs.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.shares import (
3 AddReviewersToShareParamsData,
4 AddReviewersToShareParamsDataReviewers,
5)
6
7client = Frameio(
8 token="YOUR_TOKEN",
9)
10client.shares.add_reviewers(
11 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
12 share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
13 data=AddReviewersToShareParamsData(
14 message="Please join my share!",
15 reviewers=AddReviewersToShareParamsDataReviewers(
16 emails=["email1@domain.com", "email2@domain.com"],
17 ),
18 ),
19)

Parameters

account_id: Uuid

share_id: Uuid

data: AddReviewersToShareParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Removes reviewers from secure Share by three identifier types: adobe_user_id, email, and user_id. A request can only include one identifier type parameter.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.shares import (
3 RemoveReviewerParamsData,
4 RemoveReviewerParamsDataReviewers,
5)
6
7client = Frameio(
8 token="YOUR_TOKEN",
9)
10client.shares.remove_reviewers(
11 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
12 share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
13 data=RemoveReviewerParamsData(
14 reviewers=RemoveReviewerParamsDataReviewers(
15 adobe_user_ids=[
16 "2A3C1A3D66C621B20A494021@176719f5667c82b4499999.e"
17 ],
18 ),
19 ),
20)

Parameters

account_id: Uuid

share_id: Uuid

data: RemoveReviewerParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Remove an asset currently in the share from that share.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.shares.remove_asset(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 asset_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10)

Parameters

account_id: Uuid

share_id: Uuid

asset_id: Uuid

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Add new asset share.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.shares import AddAssetParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.shares.add_asset(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=AddAssetParamsData(
11 asset_id="0cc1cb59-1d7c-4176-8532-afe099897318",
12 ),
13)

Parameters

account_id: Uuid

share_id: Uuid

data: AddAssetParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

List shares on a project.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6response = client.shares.index(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 after="<opaque_cursor>",
10 page_size=10,
11 include_total_count=False,
12)
13for item in response:
14 yield item
15# alternatively, you can paginate page-by-page
16for page in response.iter_pages():
17 yield page

Parameters

account_id: Uuid

project_id: Uuid

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

This value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize]

include_total_count: typing.Optional[IncludeTotalCount]

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Create share.
Rate Limits: 10 calls per 1.00 minute(s) per account_user

usage
1import datetime
2
3from frameio import Frameio
4from frameio.shares import CreateShareParamsData_Asset
5
6client = Frameio(
7 token="YOUR_TOKEN",
8)
9client.shares.create(
10 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
11 project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
12 data=CreateShareParamsData_Asset(
13 access="public",
14 asset_ids=[
15 "12eb1446-5736-4f93-85fc-3b636f156211",
16 "f23a3b3e-7b1f-4655-b91a-acf0566e5bb9",
17 ],
18 downloading_enabled=True,
19 expiration=datetime.datetime.fromisoformat(
20 "2026-01-22 17:04:53+00:00",
21 ),
22 name="Share Name",
23 passphrase="as!dfj39sd(*",
24 ),
25)

Parameters

account_id: Uuid

project_id: Uuid

data: CreateShareParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Files

List files in a given folder.
Rate Limits: 5 calls per 1 second(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.files.list(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 include="media_links",
10 after="<opaque_cursor>",
11 page_size=10,
12 include_total_count=False,
13)

Parameters

account_id: Uuid

folder_id: Uuid

include: typing.Optional[FileWithMediaLinksInclude]

after: typing.Optional[RequestAfterOpaqueCursor]

Opaque Cursor query param for requests returning paginated results.

This value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.

page_size: typing.Optional[RequestPageSize]

include_total_count: typing.Optional[IncludeTotalCount]

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Create new file under parent folder. Create file (local upload) and Create file (remote upload) have replaced this endpoint.
Rate Limits: 5 calls per 1 second(s) per account_user

usage
1from frameio import Frameio
2from frameio.files import FileCreateParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.files.create(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=FileCreateParamsData(
11 file_size=1137444,
12 media_type="image/png",
13 name="asset.png",
14 ),
15)

Parameters

account_id: Uuid

folder_id: Uuid

data: FileCreateParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Show file details. Use the include query parameter to selectively include additional properties in the response.

If you include media_links.original and the user does not have permission to download the file then this endpoint will respond with a 403 Forbidden error. If the content is inaccessible because watermarking is required for this user and isn’t supported by the requested media_links, then the request will succeed but the unsupported media links will be set to null. Similarly, if a requested transcode link does not exist for a particular file (e.g. including media_links.video_h264_180 on a static image file) or transoding process hasn’t completed (i.e. the file’s status is “uploaded” rather than “transcoded”), then the link will also be set to null in the response payload. In short, the client must handle null media links gracefully.
Rate Limits: 5 calls per 1 second(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.files.show(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 include="media_links",
10)

Parameters

account_id: Uuid

file_id: Uuid

include: typing.Optional[FileWithMediaLinksInclude]

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Delete file by ID.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.files.delete(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9)

Parameters

account_id: Uuid

file_id: Uuid

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Update file details.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.files import FileUpdateParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.files.update(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=FileUpdateParamsData(
11 name="asset.png",
12 ),
13)

Parameters

account_id: Uuid

file_id: Uuid

data: FileUpdateParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Copy file.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.files import FileCopyParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.files.copy(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 copy_metadata=True,
11 copy_comments="none",
12 data=FileCopyParamsData(
13 parent_id="2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
14 ),
15)

Parameters

account_id: Uuid

file_id: Uuid

copy_metadata: typing.Optional[bool] — Whether to copy metadata values along with the file

copy_comments: typing.Optional[FilesCopyRequestCopyComments] — Which comments to copy along with the file

data: typing.Optional[FileCopyParamsData]

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Create new file under parent folder through remote upload.
Rate Limits: 5 calls per 1 second(s) per account_user

usage
1from frameio import Frameio
2from frameio.files import FileCreateRemoteUploadParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.files.create_remote_upload(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=FileCreateRemoteUploadParamsData(
11 name="asset.png",
12 source_url="https://upload.wikimedia.org/wikipedia/commons/e/e1/White_Pixel_1x1.png",
13 ),
14)

Parameters account_id: Uuid

folder_id: Uuid

data: FileCreateRemoteUploadParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Move file to a folder or version_stack.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2from frameio.files import FileMoveParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.files.move(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=FileMoveParamsData(
11 parent_id="2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
12 ),
13)

Parameters account_id: Uuid

file_id: Uuid

data: FileMoveParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Create new file under parent folder through local upload.
Rate Limits: 5 calls per 1 second(s) per account_user

usage
1from frameio import Frameio
2from frameio.files import FileCreateLocalUploadParamsData
3
4client = Frameio(
5 token="YOUR_TOKEN",
6)
7client.files.create_local_upload(
8 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9 folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
10 data=FileCreateLocalUploadParamsData(
11 file_size=1137444,
12 name="asset.png",
13 ),
14)

Parameters account_id: Uuid

file_id: Uuid

data: FileCreateLocalUploadParamsData

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Show file upload status details.
Rate Limits: 5 calls per 1 second(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.files.show_file_upload_status(
7 account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
8 file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
9)

Parameters account_id: Uuid

file_id: Uuid

request_options: typing.Optional[RequestOptions] — Request-specific configuration.

Users

Inspect details of the user associated with the bearer token.
Rate Limits: 100 calls per 1.00 minute(s) per account_user

usage
1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_TOKEN",
5)
6client.users.show()

Parameters

request_options: typing.Optional[RequestOptions] — Request-specific configuration.


PyPI

View on PyPI