> This page is for Platform, version V4 (default).
> For other versions, use one of these documentation indexes:
> - V4 (default): https://developer.frame.io/platform/v4/llms.txt
> - V4 Experimental: https://developer.frame.io/platform/v4-experimental/llms.txt
> - Legacy: https://developer.frame.io/platform/v2/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.frame.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.frame.io/_mcp/server.

# TypeScript SDK Reference

---

### Installation

```curl
npm i -s frameio
```

---

### Usage

Instantiate and use the client with the following:

```ts
import { FrameioClient } from "frameio";

const client = new FrameioClient({ token: "YOUR_TOKEN" });
await client.metadataFields.metadataFieldDefinitionsCreate("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        field_type: "select",
        field_configuration: {
            enable_add_new: false,
            options: [
                {
                    display_name: "Option 1",
                },
                {
                    display_name: "Option 2",
                },
            ],
        },
        name: "Fields definition name",
    },
});
```

---

### Request And Response Types

The SDK exports all request and response types as TypeScript interfaces. Simply import them with the following namespace:

```ts
import { Frameio } from "frameio";

const request: Frameio.UpdateFieldDefinitionParams = {
    ...
};
```

---

### Exception Handling

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

```ts
import { FrameioError } from "frameio";

try {
    await client.metadataFields.metadataFieldDefinitionsCreate(...);
} catch (err) {
    if (err instanceof FrameioError) {
        console.log(err.statusCode);
        console.log(err.message);
        console.log(err.body);
        console.log(err.rawResponse);
    }
}
```

---

### Advanced

#### Additional Headers

If you would like to send additional headers as part of the request, use the headers request option.

```ts
const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., {
    headers: {
        'X-Custom-Header': 'custom value'
    }
});
```

#### Additional Query String Parameters

If you would like to send additional query string parameters as part of the request, use the queryParams request option.

```ts
const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., {
    queryParams: {
        'customQueryParamKey': 'custom query param value'
    }
});
```

---

#### 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 `maxRetries` request option to configure this behavior.

```ts
const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., {
    maxRetries: 0 // override maxRetries at the request level
});
```

---

#### Timeouts

The SDK defaults to a 60 second timeout. Use the timeoutInSeconds option to configure this behavior.

```ts
const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., {
    timeoutInSeconds: 30 // override timeout to 30s
});
```

#### Aborting Requests

The SDK allows users to abort requests at any point by passing in an abort signal.

```ts
const controller = new AbortController();
const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., {
    abortSignal: controller.signal
});
controller.abort(); // aborts the request
```

---

#### Access Raw Response Data

The SDK provides access to raw response data, including headers, through the `.withRawResponse()` method. The `.withRawResponse()` method returns a promise that results to an object with a `data` and a `rawResponse` property.

```ts
const { data, rawResponse } = await client.metadataFields.metadataFieldDefinitionsCreate(...).withRawResponse();

console.log(data);
console.log(rawResponse.headers['X-My-Header']);
```

#### Runtime Compatibility

The SDK works in the following runtimes:

* Node.js 18+
* Vercel
* Cloudflare Workers
* Deno v1.25+
* Bun 1.0+
* React Native

---

#### Customizing Fetch Client

The SDK provides a way for you to customize the underlying HTTP client / Fetch function. If you're running in an unsupported environment, this provides a way for you to break glass and ensure the SDK works.

```ts
import { FrameioClient } from "frameio";

const client = new FrameioClient({
    ...
    fetcher: // provide your implementation here
});
```

---

### Reference

#### Account Permissions

#### client.accountPermissions.index(accountId, \{ ...params }) -> core.Page\<Frameio.AccountUserRole>

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

**`usage`**

```ts usage 

const response = await client.accountPermissions.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include_deactivated: true,
    sort: "role_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.accountPermissions.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include_deactivated: true,
    sort: "role_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`request`: `Frameio.AccountPermissionsIndexRequest`

`requestOptions`: `AccountPermissions.RequestOptions`

#### Accounts

#### client.accounts.index(\{ ...params }) -> core.Page\<Frameio.Account>

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

**`usage`**

```ts usage 
const response = await client.accounts.index({
    sort: "display_name_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.accounts.index({
    sort: "display_name_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**Parameters**

`request`: `Frameio.AccountsIndexRequest`

`requestOptions`: `Accounts.RequestOptions`

#### client.accounts.auditlogIndex(accountId, \{ ...params }) -> Frameio.AuditLogsWithIncludesResponse

List audit logs with filtering capabilities via query params.\
Rate Limits: 100 calls per 1.00 minute(s) per account_user

**`usage`**

```ts usage 
await client.accounts.auditlogIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "user",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**Parameters**

`accountId`: `Frameio.FrameOrAdobeId` —

`request`: `Frameio.AuditlogIndexRequest`

`requestOptions`: `Accounts.RequestOptions`

#### Auth

#### new ServerToServerAuth(\{ clientId, clientSecret, ... })

Authenticate using the OAuth 2.0 `client_credentials` grant. This flow does not involve a user and does not return a refresh token. When the access token expires the SDK automatically requests a new one using the client credentials.

**`usage`**

```ts usage 
import { FrameioClient, ServerToServerAuth } from "frameio";

const auth = new ServerToServerAuth({
    clientId: "YOUR_CLIENT_ID",
    clientSecret: "YOUR_CLIENT_SECRET",
});
const client = new FrameioClient({ token: () => auth.getToken() });
```

**Parameters**

`clientId`: `string` — Adobe IMS OAuth client ID.

`clientSecret`: `string` — Adobe IMS OAuth client secret.

`scopes`: `string` — Space-separated scopes (OAuth 2.0 RFC 6749). Defaults to the server-to-server scopes.

`imsBaseUrl`: `string` — IMS base URL for staging/alternative environments. Defaults to production.

`fetch`: `typeof fetch` — Custom fetch implementation (for proxy, TLS, etc.).

`onTokenRefreshed`: `OnTokenRefreshed` — Optional callback fired after every token fetch.

`timeout`: `number` — HTTP request timeout in milliseconds. Defaults to 30000.

`maxRetries`: `number` — Maximum retries for transient failures. Defaults to 2.

`refreshBuffer`: `number` — Seconds before expiry to trigger proactive refresh. Defaults to 60.

`logger`: `Logger` — Logger instance for diagnostic output.

**Methods**

`getToken(): Promise<string>` — Return a valid access token, refreshing if necessary. Pass it to the client: `new FrameioClient({ token: () => auth.getToken() })`.

`authenticate(): Promise<TokenResponse>` — Explicitly fetch a new access token.

`revoke(): Promise<void>` — Revoke tokens server-side and clear local state.

`exportTokens(): ExportedTokens` — Export current token state for persistence.

`importTokens(data: ExportedTokens): void` — Restore token state from a previously exported object.

#### new WebAppAuth(\{ clientId, clientSecret, redirectUri, ... })

Authenticate using the OAuth 2.0 `authorization_code` grant. Use this for server-side applications that can securely store a client secret.

**`usage`**

```ts usage 
import { randomBytes } from "crypto";
import { FrameioClient, WebAppAuth } from "frameio";

const auth = new WebAppAuth({
    clientId: "YOUR_CLIENT_ID",
    clientSecret: "YOUR_CLIENT_SECRET",
    redirectUri: "https://myapp.com/callback",
});
const url = auth.getAuthorizationUrl({ state: randomBytes(24).toString("hex") });
// redirect the user to url ...
await auth.exchangeCode("CODE_FROM_CALLBACK");
const client = new FrameioClient({ token: () => auth.getToken() });
```

**Parameters**

`clientId`: `string` — Adobe IMS OAuth client ID.

`clientSecret`: `string` — Adobe IMS OAuth client secret.

`redirectUri`: `string` — Registered redirect URI.

`scopes`: `string` — Space-separated scopes (OAuth 2.0 RFC 6749).

`imsBaseUrl`: `string` — IMS base URL for staging/alternative environments. Defaults to production.

`fetch`: `typeof fetch` — Custom fetch implementation (for proxy, TLS, etc.).

`onTokenRefreshed`: `OnTokenRefreshed` — Optional callback fired after every token refresh.

`timeout`: `number` — HTTP request timeout in milliseconds. Defaults to 30000.

`maxRetries`: `number` — Maximum retries for transient failures. Defaults to 2.

`refreshBuffer`: `number` — Seconds before expiry to trigger proactive refresh. Defaults to 60.

`logger`: `Logger` — Logger instance for diagnostic output.

**Methods**

`getToken(): Promise<string>` — Return a valid access token, refreshing if necessary.

`getAuthorizationUrl({ state }): string` — Build the Adobe IMS authorization URL. Pass an opaque CSRF/state value that will be echoed back.

`exchangeCode(code: string): Promise<TokenResponse>` — Exchange an authorization code for access and refresh tokens.

`refresh(): Promise<TokenResponse>` — Manually trigger a token refresh.

`revoke(): Promise<void>` — Revoke tokens server-side and clear local state.

`exportTokens(): ExportedTokens` — Export current token state for persistence.

`importTokens(data: ExportedTokens): void` — Restore token state from a previously exported object.

#### new SPAAuth(\{ clientId, redirectUri, ... })

Authenticate using `authorization_code` + PKCE (no client secret). Use this for browser-based single-page apps that cannot securely store a client secret.

**`usage`**

```ts usage 
import { randomBytes } from "crypto";
import { FrameioClient, SPAAuth } from "frameio";

const auth = new SPAAuth({
    clientId: "YOUR_CLIENT_ID",
    redirectUri: "https://myapp.com/cb",
});
const result = await auth.getAuthorizationUrl({ state: randomBytes(24).toString("hex") });
// redirect the user to result.url, store result.codeVerifier ...
await auth.exchangeCode({ code: "CODE_FROM_CALLBACK", codeVerifier: result.codeVerifier });
const client = new FrameioClient({ token: () => auth.getToken() });
```

**Parameters**

`clientId`: `string` — Adobe IMS OAuth client ID.

`redirectUri`: `string` — Registered redirect URI.

`scopes`: `string` — Space-separated scopes (OAuth 2.0 RFC 6749).

`imsBaseUrl`: `string` — IMS base URL for staging/alternative environments. Defaults to production.

`fetch`: `typeof fetch` — Custom fetch implementation (for proxy, TLS, etc.).

`onTokenRefreshed`: `OnTokenRefreshed` — Optional callback fired after every token refresh.

`timeout`: `number` — HTTP request timeout in milliseconds. Defaults to 30000.

`maxRetries`: `number` — Maximum retries for transient failures. Defaults to 2.

`refreshBuffer`: `number` — Seconds before expiry to trigger proactive refresh. Defaults to 60.

`logger`: `Logger` — Logger instance for diagnostic output.

**Methods**

`getToken(): Promise<string>` — Return a valid access token, refreshing if necessary.

`getAuthorizationUrl({ state }): Promise<AuthorizationUrlResult>` — Build the Adobe IMS authorization URL with a PKCE challenge. Returns an `AuthorizationUrlResult` with `url` and `codeVerifier`.

`exchangeCode({ code, codeVerifier }): Promise<TokenResponse>` — Exchange an authorization code + PKCE verifier for tokens.

`refresh(): Promise<TokenResponse>` — Manually trigger a token refresh.

`revoke(): Promise<void>` — Revoke tokens server-side and clear local state.

`exportTokens(): ExportedTokens` — Export current token state for persistence.

`importTokens(data: ExportedTokens): void` — Restore token state from a previously exported object.

#### new NativeAppAuth(\{ clientId, redirectUri, ... })

Authenticate using `authorization_code` + PKCE for desktop and mobile applications. Shares the same API as `SPAAuth`; use a custom-scheme redirect URI (e.g. `myapp://callback`).

**`usage`**

```ts usage 
import { randomBytes } from "crypto";
import { FrameioClient, NativeAppAuth } from "frameio";

const auth = new NativeAppAuth({
    clientId: "YOUR_CLIENT_ID",
    redirectUri: "myapp://callback",
});
const result = await auth.getAuthorizationUrl({ state: randomBytes(24).toString("hex") });
// open result.url in the system browser, store result.codeVerifier ...
await auth.exchangeCode({ code: "CODE_FROM_CALLBACK", codeVerifier: result.codeVerifier });
const client = new FrameioClient({ token: () => auth.getToken() });
```

**Parameters**

`clientId`: `string` — Adobe IMS OAuth client ID.

`redirectUri`: `string` — Registered redirect URI (custom scheme supported).

`scopes`: `string` — Space-separated scopes (OAuth 2.0 RFC 6749).

`imsBaseUrl`: `string` — IMS base URL for staging/alternative environments. Defaults to production.

`fetch`: `typeof fetch` — Custom fetch implementation (for proxy, TLS, etc.).

`onTokenRefreshed`: `OnTokenRefreshed` — Optional callback fired after every token refresh.

`timeout`: `number` — HTTP request timeout in milliseconds. Defaults to 30000.

`maxRetries`: `number` — Maximum retries for transient failures. Defaults to 2.

`refreshBuffer`: `number` — Seconds before expiry to trigger proactive refresh. Defaults to 60.

`logger`: `Logger` — Logger instance for diagnostic output.

**Methods**

Same as `SPAAuth`: `getToken()`, `getAuthorizationUrl({ state })`, `exchangeCode({ code, codeVerifier })`, `refresh()`, `revoke()`, `exportTokens()`, `importTokens(data)`.

#### AuthorizationUrlResult

Object returned by `SPAAuth.getAuthorizationUrl()` and `NativeAppAuth.getAuthorizationUrl()`. Holds the authorization URL and the PKCE code verifier.

**Properties**

`url`: `string` — The full authorization URL to redirect the user to.

`codeVerifier`: `string` — The PKCE code verifier to store and pass to `exchangeCode()`.

#### Auth Exceptions

All auth errors extend `FrameioAuthError` and are importable from `frameio`.

| Exception             | Description                                                                          |
| --------------------- | ------------------------------------------------------------------------------------ |
| `FrameioAuthError`    | Base error for all auth-SDK errors.                                                  |
| `AuthenticationError` | Token exchange or refresh failed. Has `errorCode` and `errorDescription` properties. |
| `TokenExpiredError`   | Refresh token is expired; re-authentication is required.                             |
| `NetworkError`        | A network request failed (timeout, connection error, etc.).                          |
| `RateLimitError`      | Adobe IMS returned 429 and retries are exhausted. Has a `retryAfter` property.       |
| `PKCEError`           | PKCE verification failed.                                                            |
| `ConfigurationError`  | Required configuration is missing or invalid.                                        |

#### Collections

#### client.collections.index(accountId, projectId, \{ ...params }) -> Frameio.CollectionsResponse

List collections for a project.\
Rate Limits: 100 calls per 1.00 minute(s) per account_user

**`usage`**

```ts usage 
await client.collections.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator,project",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**Parameters**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.CollectionsIndexRequest`

`requestOptions`: `Collections.RequestOptions`

#### client.collections.show(accountId, collectionId, \{ ...params }) -> Frameio.CollectionResponse

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

**`usage`**

```ts usage 
await client.collections.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator,project",
});
```

**Parameters**

`accountId`: `Frameio.Uuid` —

`collectionId`: `Frameio.Uuid` —

`request`: `Frameio.CollectionsShowRequest`

`requestOptions`: `Collections.RequestOptions`

#### Comments

#### client.comments.show(accountId, commentId, \{ ...params }) -> Frameio.CommentWithIncludesResponse

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

**`usage`**

```ts usage 
await client.comments.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    timestamp_as_timecode: true,
    include: "owner",
});

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`commentId`: `Frameio.Uuid` —

`request`: `Frameio.CommentsShowRequest`

`requestOptions`: `Comments.RequestOptions`

#### client.comments.delete(accountId, commentId) -> void

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

**`usage`**

```ts usage 
await client.comments.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`commentId`: `Frameio.Uuid` —

`requestOptions`: `Comments.RequestOptions`

#### client.comments.update(accountId, commentId, \{ ...params }) -> Frameio.CommentResponse

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

**`usage`**

```ts usage 
await client.comments.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    timestamp_as_timecode: true,
    data: {
        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}]',
        completed: false,
        page: 4,
        text: "This is great!",
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`commentId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateCommentParams`

`requestOptions`: `Comments.RequestOptions`

#### client.comments.index(accountId, fileId, \{ ...params }) -> core.Page\<Frameio.CommentWithIncludes>

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

**`usage`**

```ts usage 
const response = await client.comments.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        timestamp_as_timecode: true,
        include: "owner",
        sort: "owner_asc",
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.comments.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    timestamp_as_timecode: true,
    include: "owner",
    sort: "owner_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`request`: `Frameio.CommentsIndexRequest`

`requestOptions`: `Comments.RequestOptions`

#### client.comments.create(accountId, fileId, \{ ...params }) -> Frameio.CommentResponse

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

**`usage`**

```ts usage 
await client.comments.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    timestamp_as_timecode: true,
    data: {
        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}]',
        completed: false,
        page: 4,
        text: "This is great!",
        timestamp: "00:00:02:12",
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`request`: `Frameio.CreateCommentParams`

`requestOptions`: `Comments.RequestOptions`

#### client.comments.createAttachment(accountId, commentId, \{ ...params }) -> Frameio.CommentAttachmentResponse

Create an attachment for an existing comment.\
Rate Limits: 60 calls per 1.00 minute(s) per account_user

**`usage`**

```ts usage 
await client.comments.createAttachment("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        file_size: 1024000,
        media_type: "image/png",
        name: "screenshot.png",
    },
});
```

**Parameters**
`accountId`: `Frameio.FrameOrAdobeId` —

`commentId`: `Frameio.Uuid` —

`request`: `Frameio.CreateAttachmentParams`

`requestOptions`: `Comments.RequestOptions`

#### client.comments.deleteAttachment(accountId, commentId, attachmentId) -> void

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

**`usage`**

```ts usage 
await client.comments.deleteAttachment("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**Parameters**
`accountId`: `Frameio.FrameOrAdobeId` —

`commentId`: `Frameio.Uuid` —

`attachmentId`: `Frameio.Uuid` —

`requestOptions`: `Comments.RequestOptions`

#### Custom Actions

#### client.customActions.actionsIndex(accountId, workspaceId, \{ ...params }) -> Frameio.ActionsWithIncludesResponse

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

**`usage`**

```ts usage 
await client.customActions.actionsIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**Parameters**

`accountId`: `Frameio.FrameOrAdobeId` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.ActionsIndexRequest`

`requestOptions`: `CustomActions.RequestOptions`

#### client.customActions.actionsShow(accountId, actionId, \{ ...params }) -> Frameio.ActionWithIncludesResponse

Show custom action details.\
Rate Limits: 100 calls per 1.00 minute(s) per account_user

**`usage`**

```ts usage 
await client.customActions.actionsShow("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
});
```

**Parameters**

`accountId`: `Frameio.FrameOrAdobeId` —

`actionId`: `Frameio.Uuid` —

`request`: `Frameio.ActionsShowRequest`

`requestOptions`: `CustomActions.RequestOptions`

#### client.customActions.actionsCreate(accountId, workspaceId, \{ ...params }) -> Frameio.ActionCreateResponse

Create a custom action in a workspace.\
Rate Limits: 10 calls per 1.00 minute(s) per account_user

**`usage`**

```ts usage 
await client.customActions.actionsCreate("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        description: "customizing our workflow",
        event: "my.event",
        name: "First Custom Action",
        timeout: 7,
        url: "https://example.com/custom-action",
    },
});
```

**Parameters**

`accountId`: `Frameio.FrameOrAdobeId` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.ActionCreateParams`

`requestOptions`: `CustomActions.RequestOptions`

#### client.customActions.actionsUpdate(accountId, actionId, \{ ...params }) -> Frameio.ActionResponse

Update custom action details.\
Rate Limits: 10 calls per 1.00 minute(s) per account_user

**`usage`**

```ts usage 
await client.customActions.actionsUpdate("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        active: true,
        description: "customizing our workflow",
        event: "my.event",
        multi_asset: true,
        name: "First Custom Action",
        timeout: 7,
        url: "https://example.com/custom-action",
    },
});
```

**Parameters**

`accountId`: `Frameio.FrameOrAdobeId` —

`actionId`: `Frameio.Uuid` —

`request`: `Frameio.ActionUpdateParams`

`requestOptions`: `CustomActions.RequestOptions`

#### client.customActions.actionsDelete(accountId, actionId) -> void

Delete a custom action.\
Rate Limits: 60 calls per 1.00 minute(s) per account_user

**`usage`**

```ts usage 
await client.customActions.actionsDelete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**Parameters**

`accountId`: `Frameio.FrameOrAdobeId` —

`actionId`: `Frameio.Uuid` —

`requestOptions`: `CustomActions.RequestOptions`

#### Files

#### client.files.list(accountId, folderId, \{ ...params }) -> Frameio.FileAssetsWithIncludesResponse

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

**`usage`**

```ts usage 
await client.files.list("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "media_links.original",
    sort: "name_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FilesListRequest`

`requestOptions`: `Files.RequestOptions`

#### client.files.create(accountId, folderId, \{ ...params }) -> Frameio.FileWithUploadUrlsResponse

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`**

```ts usage 
await client.files.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        file_size: 1137444,
        media_type: "image/png",
        name: "asset.png",
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FileCreateParams`

`requestOptions`: `Files.RequestOptions`

#### client.files.show(accountId, fileId, \{ ...params }) -> Frameio.FileWithIncludesResponse

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

> **Note**
>
> 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: 10 calls per 1 second(s) per account_user

**`usage`**

```ts usage 
await client.files.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "media_links",
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FilesShowRequest`

`requestOptions`: `Files.RequestOptions`

#### client.files.delete(accountId, fileId) -> void

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

**`usage`**

```ts usage 
await client.files.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`requestOptions`: `Files.RequestOptions`

#### client.files.update(accountId, fileId, \{ ...params }) -> Frameio.FileResponse

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

**`usage`**

```ts usage 
await client.files.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "asset.png",
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`request`: `Frameio.FileUpdateParams`

`requestOptions`: `Files.RequestOptions`

#### client.files.copy(accountId, fileId, \{ ...params }) -> Frameio.FileCopyResponse

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

**`usage`**

```ts usage 
await client.files.copy("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    copy_metadata: true,
    copy_comments: "none",
    data: {
        parent_id: "2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`request`: `Frameio.FileCopyParams`

`requestOptions`: `Files.RequestOptions`

#### client.files.createRemoteUpload(accountId, folderId, \{ ...params }) -> Frameio.FileRemoteUploadResponse

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

**`usage`**

```ts usage 
await client.files.createRemoteUpload("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "asset.png",
        source_url: "https://upload.wikimedia.org/wikipedia/commons/e/e1/White_Pixel_1x1.png",
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FileCreateRemoteUploadParams`

`requestOptions`: `Files.RequestOptions`

#### client.files.move(accountId, fileId, \{ ...params }) -> Frameio.FileResponse

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

**`usage`**

```ts usage 
await client.files.move("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        parent_id: "2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`request`: `Frameio.FileMoveParams`

`requestOptions`: `Files.RequestOptions`

#### client.files.createLocalUpload(accountId, folderId, \{ ...params }) -> Frameio.FileWithUploadUrlsResponse

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

**`usage`**

```ts usage 
await client.files.createLocalUpload("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        file_size: 1137444,
        name: "asset.png",
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FileCreateLocalUploadParams`

`requestOptions`: `Files.RequestOptions`

#### client.files.showFileUploadStatus(accountId, fileId) -> Frameio.FileUploadStatusResponse

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

**`usage`**

```ts usage 
await client.files.showFileUploadStatus("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`requestOptions`: `Files.RequestOptions`

#### client.files.importFile(accountId, folderId, \{ ...params }) -> Frameio.FileResponse

Import a file from a storage location configured on the account.\
Rate Limits: 5 calls per 1 second(s) per account_user

**`usage`**

```ts usage 
await client.files.importFile("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        key: "uploads/08091b0f-a541-42f5-a059-5e8c4afecc12/original.png",
        name: "asset.png",
        storage_location: "123e4567-e89b-12d3-a456-426614174000",
    },
});
```

**Parameters**
`accountId`: `Frameio.FrameOrAdobeId` —

`folderId`: `Frameio.FrameOrAdobeId` —

`request`: `Frameio.FileImportParams`

`requestOptions`: `Files.RequestOptions`

#### Folder Permissions

#### client.folderPermissions.folderUserRolesIndex(accountId, folderId, \{ ...params }) -> Frameio.UserRolesResponse

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

**`usage`**

```ts usage 
await client.folderPermissions.folderUserRolesIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include_deactivated: true,
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**Parameters**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FolderUserRolesIndexRequest`

`requestOptions`: `FolderPermissions.RequestOptions`

#### client.folderPermissions.folderUserRolesUpdate(accountId, folderId, userId, \{ ...params }) -> Frameio.UpdateUserRolesResponse

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

**`usage`**

```ts usage 
await client.folderPermissions.folderUserRolesUpdate("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        role: "editor",
    },
});
```

**Parameters**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`userId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateUserRolesParams`

`requestOptions`: `FolderPermissions.RequestOptions`

#### client.folderPermissions.delete(accountId, folderId, userId) -> void

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

**`usage`**

```ts usage 
await client.folderPermissions.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**Parameters**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`userId`: `Frameio.Uuid` —

`requestOptions`: `FolderPermissions.RequestOptions`

#### Folders

#### client.folders.show(accountId, folderId, \{ ...params }) -> Frameio.FolderWithIncludesResponse

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

**`usage`**

```ts usage 

await client.folders.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
});

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.FoldersShowRequest`

`requestOptions`: `Folders.RequestOptions`

#### client.folders.delete(accountId, folderId) -> void

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

**`usage`**

```ts usage 

await client.folders.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**Parameters**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`requestOptions`: `Folders.RequestOptions`

#### client.folders.update(accountId, folderId, \{ ...params }) -> Frameio.FolderResponse

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

**`usage`**

```ts usage 

await client.folders.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "Folder name",
    },
});

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FolderUpdateParams`

`requestOptions`: `Folders.RequestOptions`

#### client.folders.index(accountId, folderId, \{ ...params }) -> Frameio.AssetsWithIncludesResponse

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

> **Note**
>
> 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`**

```ts usage 

await client.folders.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "media_links",
    type: "file,folder,version_stack",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FolderIndexRequest`

`requestOptions`: `Folders.RequestOptions`

#### client.folders.copy(accountId, folderId, \{ ...params }) -> Frameio.FolderCopyResponse

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

**`usage`**

```ts usage 

await client.folders.copy("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    copy_metadata: true,
    data: {
        parent_id: "2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    },
});

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FolderCopyParams`

`requestOptions`: `Folders.RequestOptions`

#### client.folders.list(accountId, folderId, \{ ...params }) -> Frameio.FoldersWithIncludesResponse

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

**`usage`**

```ts usage 

await client.folders.list("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FoldersListRequest`

`requestOptions`: `Folders.RequestOptions`

#### client.folders.create(accountId, folderId, \{ ...params }) -> Frameio.FolderResponse

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

**`usage`**

```ts usage 

await client.folders.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "Folder name",
    },
});

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FolderCreateParams`

`requestOptions`: `Folders.RequestOptions`

#### client.folders.move(accountId, folderId, \{ ...params }) -> Frameio.FolderResponse

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

**`usage`**

```ts usage 

await client.folders.move("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        parent_id: "2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    },
});

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FolderMoveParams`

`requestOptions`: `Folders.RequestOptions`

#### Groups

#### client.groups.index(accountId, \{ ...params }) -> Frameio.GroupsWithIncludesResponse

List groups in account.\
Rate Limits: 100 calls per 1.00 minute(s) per account_user

**`usage`**

```ts usage 
await client.groups.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    sort: "creator_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**Parameters**

`accountId`: `Frameio.FrameOrAdobeId` —

`request`: `Frameio.GroupsIndexRequest`

`requestOptions`: `Groups.RequestOptions`

#### client.groups.show(accountId, groupId, \{ ...params }) -> Frameio.GroupWithIncludesResponse

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

**`usage`**

```ts usage 
await client.groups.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
});
```

**Parameters**

`accountId`: `Frameio.FrameOrAdobeId` —

`groupId`: `Frameio.Uuid` —

`request`: `Frameio.GroupsShowRequest`

`requestOptions`: `Groups.RequestOptions`

#### client.groups.create(accountId, \{ ...params }) -> Frameio.GroupResponse

Create group for the current account.\
Rate Limits: 10 calls per 1.00 minute(s) per account_user

**`usage`**

```ts usage 
await client.groups.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        emoji: "smile",
        name: "group-1",
    },
});
```

**Parameters**

`accountId`: `Frameio.FrameOrAdobeId` —

`request`: `Frameio.CreateGroupParams`

`requestOptions`: `Groups.RequestOptions`

#### client.groups.update(accountId, groupId, \{ ...params }) -> Frameio.GroupResponse

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

**`usage`**

```ts usage 
await client.groups.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        emoji: "smile",
        name: "group-1",
    },
});
```

**Parameters**

`accountId`: `Frameio.FrameOrAdobeId` —

`groupId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateGroupParams`

`requestOptions`: `Groups.RequestOptions`

#### Metadata

#### client.metadata.bulkUpdate(accountId, projectId, \{ ...params }) -> void

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

**`usage`**

```ts usage 
await client.metadata.bulkUpdate("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        file_ids: ["09b31c2a-04de-464a-a593-643a36ef0d98", "b967fc36-4e18-4b48-a3ab-c790100e2baa"],
        values: [
            {
                field_definition_id: "ff41ce50-269b-4624-8306-aac10e28ab94",
                value: [
                    {
                        id: "e60f47b4-cf8e-4273-96d5-3258a830a0aa",
                        type: "user",
                    },
                    {
                        id: "24eeaf7e-ce27-4555-bc77-cce39900626d",
                        type: "account_user_group",
                    },
                ],
            },
        ],
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.BulkUpdateMetadataParams`

`requestOptions`: `Metadata.RequestOptions`

#### client.metadata.show(accountId, fileId, \{ ...params }) -> Frameio.MetadataResponse

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

**`usage`**

```ts usage 
await client.metadata.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    show_null: true,
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`request`: `Frameio.MetadataShowRequest`

`requestOptions`: `Metadata.RequestOptions`

#### Metadata Fields

#### client.metadataFields.metadataFieldDefinitionsDelete(accountId, fieldDefinitionId) -> void

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

**`usage`**

```ts usage 

await client.metadataFields.metadataFieldDefinitionsDelete(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
);

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`fieldDefinitionId`: `Frameio.Uuid` —

`requestOptions`: `MetadataFields.RequestOptions`

#### client.metadataFields.metadataFieldDefinitionsUpdate(accountId, fieldDefinitionId, \{ ...params }) -> Frameio.FieldDefinitionResponse

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

**`usage`**

```ts usage 

await client.metadataFields.metadataFieldDefinitionsUpdate(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        data: {
            field_type: "select",
            field_configuration: {
                enable_add_new: false,
                options: [
                    {
                        display_name: "Option 1",
                    },
                    {
                        display_name: "Option 2",
                    },
                ],
            },
            name: "Updated-Field-Name",
        },
    },
);
```

**Parameters**

`accountId`: `Frameio.Uui`d\` —

`fieldDefinitionId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateFieldDefinitionParams`

requestOptions: MetadataFields.RequestOptions

#### client.metadataFields.metadataFieldDefinitionsIndex(accountId, \{ ...params }) -> Frameio.FieldDefinitionsWithIncludesResponse

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

**`usage`**

```ts usage 

await client.metadataFields.metadataFieldDefinitionsIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    sort: "name_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`request`: `Frameio.MetadataFieldDefinitionsIndexRequest`

`requestOptions`: `MetadataFields.RequestOptions`

#### client.metadataFields.metadataFieldDefinitionsCreate(accountId, \{ ...params }) -> Frameio.FieldDefinitionResponse

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

**`usage`**

```ts usage 

await client.metadataFields.metadataFieldDefinitionsCreate("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        field_type: "select",
        field_configuration: {
            enable_add_new: false,
            options: [
                {
                    display_name: "Option 1",
                },
                {
                    display_name: "Option 2",
                },
            ],
        },
        name: "Fields definition name",
    },
});

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`request`: `Frameio.CreateFieldDefinitionParams`

`requestOptions`: `MetadataFields.RequestOptions`

#### Project Permissions

#### client.projectPermissions.index(accountId, projectId, \{ ...params }) -> core.Page\<Frameio.UserRole>

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

**`usage`**

```ts usage 

const response = await client.projectPermissions.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        include_deactivated: true,
        sort: "role_asc",
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.projectPermissions.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        include_deactivated: true,
        sort: "role_asc",
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.ProjectPermissionsIndexRequest`

`requestOptions`: `ProjectPermissions.RequestOptions`

#### client.projectPermissions.delete(accountId, projectId, userId) -> void

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

**`usage`**

```ts usage 

await client.projectPermissions.delete(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
);
```

**Parameters**

`accountId`: `Frameio.Uui`d\` —

`projectId`: `Frameio.Uuid` —

`userId`: `Frameio.Uuid` —

`requestOptions`: `ProjectPermissions.RequestOptions`

#### client.projectPermissions.projectUserRolesUpdate(accountId, projectId, userId, \{ ...params }) -> Frameio.UpdateUserRolesResponse

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`**

```ts usage 

await client.projectPermissions.projectUserRolesUpdate(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        data: {
            role: "editor",
        },
    },
);

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`UserId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateUserRolesParams`

`requestOptions`: `ProjectPermissions.RequestOptions`

#### Projects

#### client.projects.show(accountId, projectId, \{ ...params }) -> Frameio.ProjectWithIncludesResponse

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

**`usage`**

```ts usage 

await client.projects.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "owner",
});

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.ProjectsShowRequest`

`requestOptions`: `Projects.RequestOptions`

#### client.projects.delete(accountId, projectId) -> void

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

**`usage`**

```ts usage 

await client.projects.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**Parameters**

`accountId`: `Frameio.Uui`d\` —

`projectId`: `Frameio.Uuid` —

`requestOptions`: `Projects.RequestOptions`

#### client.projects.update(accountId, projectId, \{ ...params }) -> Frameio.ProjectResponse

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

**`usage`**

```ts usage 

await client.projects.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "Project Name",
        restricted: true,
        status: "active",
    },
});

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.ProjectUpdateParams`

`requestOptions`: `Projects.RequestOptions`

#### client.projects.index(accountId, workspaceId, \{ ...params }) -> core.Page\<Frameio.ProjectWithIncludes>

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

**`usage`**

```ts usage 

const response = await client.projects.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        include: "owner",
        sort: "name_asc",
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.projects.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "owner",
    sort: "name_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.ProjectsIndexRequest`

`requestOptions`: `Projects.RequestOptions`

#### client.projects.create(accountId, workspaceId, \{ ...params }) -> Frameio.ProjectResponse

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

**`usage`**

```ts usage 

await client.projects.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "Project Name",
        restricted: true,
    },
});

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.ProjectsParams`

`requestOptions`: `Projects.RequestOptions`

#### client.projects.accountProjectsIndex(accountId, \{ ...params }) -> Frameio.ProjectsWithIncludesResponse

List all projects the authenticated user has access to within the specified account.\
Rate Limits: 100 calls per 1.00 minute(s) per account_user

**`usage`**

```ts usage 
await client.projects.accountProjectsIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "owner",
    sort: "name_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**Parameters**

`accountId`: `Frameio.FrameOrAdobeId` —

`request`: `Frameio.AccountProjectsIndexRequest`

`requestOptions`: `Projects.RequestOptions`

#### client.projects.invitedProjectsIndex(accountId, \{ ...params }) -> Frameio.ProjectsWithIncludesResponse

List projects that the current user has been invited to within the specified account, but does not have workspace-level access to. These are projects where the user has project-specific collaborator access without broader team/workspace permissions.\
Rate Limits: 100 calls per 1.00 minute(s) per account_user

**`usage`**

```ts usage 
await client.projects.invitedProjectsIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "owner",
    sort: "name_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**Parameters**

`accountId`: `Frameio.FrameOrAdobeId` —

`request`: `Frameio.InvitedProjectsIndexRequest`

`requestOptions`: `Projects.RequestOptions`

#### Search

#### client.search.search(accountId, \{ ...params }) -> Frameio.SearchResponse

Search across assets, folders, and projects within an account.\
Rate Limits: 100 calls per 1.00 minute(s) per account_user

**`usage`**

```ts usage 
await client.search.search("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    engine: "nlp",
    query: "red car driving on highway",
    filters: {
        files_and_version_stacks: true,
        folders: false,
        projects: false,
    },
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**Parameters**

`accountId`: `Frameio.Uuid` —

`request`: `Frameio.SearchParams`

`requestOptions`: `Search.RequestOptions`

#### Shares

#### client.shares.show(accountId, shareId) -> Frameio.ShareResponse

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

**`usage`**

```ts usage 
await client.shares.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`requestOptions`: `Shares.RequestOptions`

#### client.shares.delete(accountId, shareId) -> void

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

**`usage`**

```ts usage 
await client.shares.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`requestOptions`: `Shares.RequestOptions`

#### client.shares.update(accountId, shareId, \{ ...params }) -> Frameio.ShareResponse

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

**`usage`**

```ts usage 
await client.shares.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        access: "public",
        description: "A descriptive summary of the share",
        downloading_enabled: true,
        expiration: "2026-01-22T17:04:53Z",
        name: "Share Name",
        passphrase: "as!dfj39sd(*",
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateShareParams`

`requestOptions`: `Shares.RequestOptions`

#### client.shares.listReviewers(accountId, shareId, \{ ...params }) -> core.Page\<Frameio.User>

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

**`usage`**

```ts usage 
const response = await client.shares.listReviewers(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        sort: "name_asc",
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.shares.listReviewers(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        sort: "name_asc",
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
while (page.hasNextPage()) {
    page = page.getNextPage();
}
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`request`: `Frameio.SharesListReviewersRequestreParams`

`requestOptions`: `Shares.RequestOptions`

#### client.shares.addReviewers(accountId, shareId, \{ ...params }) -> void

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`**

```ts usage 
await client.shares.addReviewers("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        message: "Please join my share!",
        reviewers: {
            emails: ["email1@domain.com", "email2@domain.com"],
        },
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`request`: `Frameio.AddReviewersToShareParams`

`requestOptions`: `Shares.RequestOptions`

#### client.shares.removeReviewers(accountId, shareId, \{ ...params }) -> void

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`**

```ts usage 
await client.shares.removeReviewers("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        reviewers: {
            adobe_user_ids: ["2A3C1A3D66C621B20A494021@176719f5667c82b4499999.e"],
        },
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`request`: `Frameio.RemoveReviewerParams`

`requestOptions`: `Shares.RequestOptions`

#### client.shares.removeAsset(accountId, shareId, assetId) -> Frameio.RemoveAssetResponse

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

**`usage`**

```ts usage 
await client.shares.removeAsset(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
);
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`assetId`: `Frameio.Uuid` —

`requestOptions`: `Shares.RequestOptions`

#### client.shares.addAsset(accountId, shareId, \{ ...params }) -> Frameio.AddAssetResponse

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

**`usage`**

```ts usage 
await client.shares.addAsset("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        asset_id: "0cc1cb59-1d7c-4176-8532-afe099897318",
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`request`: `Frameio.AddAssetParams`

`requestOptions`: `Shares.RequestOptions`

#### client.shares.index(accountId, projectId, \{ ...params }) -> core.Page\<Frameio.Share>

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

**`usage`**

```ts usage 
const response = await client.shares.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        sort: "name_asc",
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.shares.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    sort: "name_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`request`: `Frameio.SharesIndexRequest`

`requestOptions`: `Shares.RequestOptions`

#### client.shares.create(accountId, projectId, \{ ...params }) -> Frameio.ShareResponse

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

**`usage`**

```ts usage 
await client.shares.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        type: "asset",
        access: "public",
        asset_ids: ["12eb1446-5736-4f93-85fc-3b636f156211", "f23a3b3e-7b1f-4655-b91a-acf0566e5bb9"],
        downloading_enabled: true,
        expiration: "2026-01-22T17:04:53Z",
        name: "Share Name",
        passphrase: "as!dfj39sd(*",
    },
});
```

**Parameters**
`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.CreateShareParams`

`requestOptions`: `Shares.RequestOptions`

#### Users

#### client.users.show() -> Frameio.ProfileResponse

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

**`usage`**

```ts usage 
await client.users.show();
```

**Parameters**
`requestOptions`: `Users.RequestOptions`

#### Version Stacks

#### client.versionStacks.index(accountId, versionStackId, \{ ...params }) -> Frameio.AssetsWithIncludesResponse

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

> **Note**
>
> 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`**

```ts usage 

await client.versionStacks.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "media_links",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});

```

**Parameters**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.VersionStacksIndexRequest`

`requestOptions`: `VersionStacks.RequestOptions`

#### client.versionStacks.show(accountId, versionStackId, \{ ...params }) -> Frameio.VersionStackWithIncludesResponse

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

**`usage`**

```ts usage 

await client.versionStacks.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "media_links",
});
```

**Parameters**

`accountId`: `Frameio.Uuid` —

`versionStackId`: `Frameio.Uuid` —

`request`: `Frameio.VersionStacksShowRequest`

`requestOptions`: `VersionStacks.RequestOptions`

#### client.versionStacks.copy(accountId, versionStackId, \{ ...params }) -> Frameio.VersionStackCopyResponse

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

Currently, copying version stacks between Adobe storage backed projects is not supported. Copying individual files within a version stack and then restacking them is currently the supported method for copying version stacks for these projects.

**`usage`**

```ts usage 

await client.versionStacks.copy("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    copy_metadata: true,
    data: {
        parent_id: "2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    },
});
```

**Parameters**

`accountId`: `Frameio.Uuid` —

`versionStackId`: `Frameio.Uuid` —

`request`: `Frameio.VersionStackCopyParams`

`requestOptions`: `VersionStacks.RequestOptions`

#### client.versionStacks.list(accountId, folderId, \{ ...params }) -> Frameio.VersionStacksWithIncludesResponse

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

**`usage`**

```ts usage 

await client.versionStacks.list("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "media_links",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**Parameters**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.VersionStacksListRequest`

`requestOptions`: `VersionStacks.RequestOptions`

#### client.versionStacks.create(accountId, folderId, \{ ...params }) -> Frameio.VersionStackWithIncludesResponse

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

**`usage`**

```ts usage 

await client.versionStacks.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        file_ids: ["dd2a3cdd-fc90-41bd-a7b8-8a0447aec6d4", "79fed48a-8372-496e-8dcb-5e959b9b9fcf"],
    },
});
```

**Parameters**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.VersionStackCreateParams`

`requestOptions`: `VersionStacks.RequestOptions`

#### client.versionStacks.move(accountId, versionStackId, \{ ...params }) -> Frameio.VersionStackResponse

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

**`usage`**

```ts usage 

await client.versionStacks.move("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        parent_id: "2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    },
});
```

**Parameters**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.VersionStackMoveParams`

`requestOptions`: `VersionStacks.RequestOptions`

#### Webhooks

#### client.webhooks.index(accountId, workspaceId, \{ ...params }) -> core.Page\<Frameio.WebhookWithIncludes>

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

**`usage`**

```ts usage 
const response = await client.webhooks.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        include: "creator",
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.webhooks.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.WebhooksIndexRequest`

`requestOptions`: `Webhooks.RequestOptions`

#### client.webhooks.create(accountId, workspaceId, \{ ...params }) -> Frameio.WebhookCreateResponse

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_user

**`usage`**

```ts usage 
await client.webhooks.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        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",
        ],
        name: "New Webhook",
        url: "https://url.example.com",
    },
});

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.WebhookCreateParams`

`requestOptions`: `Webhooks.RequestOptions`

#### client.webhooks.show(accountId, webhookId, \{ ...params }) -> Frameio.WebhookWithIncludesResponse

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

**`usage`**

```ts usage 
await client.webhooks.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
});

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`webhookId`: `Frameio.Uuid` —

`request`: `Frameio.WebhooksShowRequest`

`requestOptions`: `Webhooks.RequestOptions`

#### client.webhooks.delete(accountId, webhookId) -> void

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

**`usage`**

```ts usage 
await client.webhooks.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`webhookId`: `Frameio.Uuid` —

`requestOptions`: `Webhooks.RequestOptions`

#### client.webhooks.update(accountId, webhookId, \{ ...params }) -> Frameio.WebhookResponse

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

**`usage`**

```ts usage 
await client.webhooks.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        active: true,
        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",
        ],
        name: "Updated Webhook",
        url: "https://url.example.com",
    },
});

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`webhookId`: `Frameio.Uuid` —
`
`request`: `Frameio.WebhookUpdateParams\`

`requestOptions`: `Webhooks.RequestOptions`

#### Workspace Permissions

#### client.workspacePermissions.index(accountId, workspaceId, \{ ...params }) -> core.Page\<Frameio.UserRole>

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

**`usage`**

```ts usage 
const response = await client.workspacePermissions.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        include_deactivated: true,
        sort: "role_asc",
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.workspacePermissions.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        include_deactivated: true,
        sort: "role_asc",
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.WorkspacePermissionsIndexRequest`

`requestOptions`: `WorkspacePermissions.RequestOptions`

#### client.workspacePermissions.workspaceUserRolesDelete(accountId, workspaceId, userId) -> void

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

**`usage`**

```ts usage 
await client.workspacePermissions.workspaceUserRolesDelete(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
);

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`userId`: `Frameio.Uuid` —

`requestOptions`: `WorkspacePermissions.RequestOptions`

#### client.workspacePermissions.workspaceUserRolesUpdate(accountId, workspaceId, userId, \{ ...params }) -> Frameio.UpdateUserRolesResponse

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`**

```ts usage 
await client.workspacePermissions.workspaceUserRolesUpdate(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        data: {
            role: "editor",
        },
    },
);

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`userId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateUserRolesParams`

`requestOptions`: `WorkspacePermissions.RequestOptions`

#### Workspaces

#### client.workspaces.show(accountId, workspaceId, \{ ...params }) -> Frameio.WorkspaceWithIncludesResponse

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

**`usage`**

```ts usage 
await client.workspaces.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
});

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.WorkspacesShowRequest`

`requestOptions`: `Workspaces.RequestOptions`

#### client.workspaces.delete(accountId, workspaceId) -> void

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

**`usage`**

```ts usage 
await client.workspaces.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`requestOptions`: `Workspaces.RequestOptions`

#### client.workspaces.update(accountId, workspaceId, \{ ...params }) -> Frameio.WorkspaceResponse

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

**`usage`**

```ts usage 
await client.workspaces.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "My Workspace",
    },
});

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.WorkspaceParams`

`requestOptions`: `Workspaces.RequestOptions`

#### client.workspaces.index(accountId, \{ ...params }) -> core.Page\<Frameio.WorkspaceWithIncludes>

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

**`usage`**

```ts usage 
const response = await client.workspaces.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    sort: "name_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.workspaces.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    sort: "name_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`request`: `Frameio.WorkspacesIndexRequest`

`requestOptions`: `Workspaces.RequestOptions`

#### client.workspaces.create(accountId, \{ ...params }) -> Frameio.WorkspaceResponse

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

**`usage`**

```ts usage 
await client.workspaces.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "My Workspace",
    },
});

```

**Parameters**
`accountId`: `Frameio.Uuid` —

`request`: `Frameio.WorkspaceParams`

`requestOptions`: `Workspaces.RequestOptions`

---

### npm

> **Launch**
>
> View on [npm](https://www.npmjs.com/package/frameio)

---