Authentication

The Frame.io V4 API uses Adobe Identity Management Service (IMS), Adobe’s OAuth 2.0 identity platform. There are two categories of authentication:

Server-to-Server Authentication

Lets technical or service account users take action without user interaction. Only available to Frame.io V4 accounts administered via the Adobe Admin Console.

User Authentication

Acts as the user whose token it is. Available to all Frame.io V4 accounts administered via the Adobe Admin Console, as well as Frame-managed accounts that have switched to Adobe Authentication.


SDK Authentication Guides

The Frame.io SDKs handle the full OAuth lifecycle for you — authorization URLs, token exchange, automatic refresh, and revocation. Choose your language to get started:

If you’re building a backend service or automation, start with Server-to-Server. If your app has users who sign in, choose Web App (if you can store a client secret) or SPA (if you can’t).


User Authentication

User authentication credentials are created in the Adobe Developer Console. Adobe supports three credential types — choose the one that matches your application architecture:

The Frame.io Python SDK does not include a Native App credential class, since Python has no standard way to register custom URI scheme handlers. Use Web App with a local callback server instead. The TypeScript SDK supports all three credential types.


Server-to-Server Authentication

Server-to-server authentication lets your application act as a service account user — no human in the loop. Your app authenticates with client credentials and receives an access token directly. Service account actions are visible in Frame.io under the service account’s name.

Service account access is managed through the Adobe Admin Console and Developer Console. The service account name is currently not able to be adjusted. See the SDK-specific guides above for implementation details.


How Adobe IMS Authentication Works

Adobe Identity Management Service (IMS) is Adobe’s OAuth 2.0-based identity management feature that supports authentication. There are two steps required for generating the access token:

1

User Authorization

First, the user authorizes the application before a token is generated. Details are here.

2

Token Exchange

Next, fetch the access token. The above step returns a code in the response body needed in this step. See the exact endpoints to access, and the parameters to use, here.

The above steps are required for all three types of app credentials. There are differences in the way the IMS endpoints /authorize/v2 and /token/v3 are accessed to get the token. After you have the access token, you can use it to interact with the Frame.io V4 API.

For Server-to-Server authentication, there is no user authorization step — the application uses client credentials directly to obtain an access token via the client_credentials grant.

Using the Access Token

Once you have an access token, include it in the Authorization header of every API request:

Authorization: Bearer <ACCESS_TOKEN>

The Frame.io SDKs handle this for you — just pass the token (or a token-supplying callable) when creating the client.

Token TTL

Access tokens are short-lived — they typically expire in 1 hour. For user authentication flows (Web App, SPA, Native App), Adobe IMS also returns a refresh token that can be used to obtain a new access token without requiring the user to sign in again. Refresh tokens are longer-lived but will eventually expire as well.

For Server-to-Server authentication, there are no refresh tokens. The client credentials themselves never expire (unless manually rotated), so the application can always request a new access token.

The Frame.io SDKs handle token refresh automatically — see the SDK-specific guides for details.

Scopes

When creating credentials in the Adobe Developer Console, you’ll configure OAuth scopes that determine what your application can access. The Frame.io SDKs use the following default scopes:

FlowDefault Scopes
Server-to-Serveropenid AdobeID frame.s2s.all
User Authentication (Web App, SPA, Native App)openid email profile offline_access additional_info.roles

The offline_access scope is required for user authentication flows to receive a refresh token. Without it, you’ll only get an access token and users will need to re-authenticate when it expires.


Legacy Developer Tokens

For V4-migrated accounts that are not yet administered via the Adobe Admin Console, you can continue to use Legacy Developer Tokens managed in the Frame.io developer site. Pass the token directly to the SDK:

1from frameio import Frameio
2
3client = Frameio(
4 token="YOUR_LEGACY_DEVELOPER_TOKEN",
5 headers={"x-frameio-legacy-token-auth": "true"},
6)

When using a legacy developer token with the V4 API, you must add the x-frameio-legacy-token-auth header with a value of true to all API requests. If you’re using the SDK, set it via the client’s request options.

Legacy developer tokens do not expire, but they are a transitional mechanism. For new integrations and production workloads, we recommend using one of the OAuth 2.0 flows below. See the Migration Guide for details.

If you are an Enterprise customer migrating from Frame.io Legacy to V4, please reach out to your CSM for help in getting set up with the legecy developer token & V4

See the Migration Guide for details on transitioning from legacy tokens to Adobe IMS authentication.