Back

Frame.io API Essential Guide

Aug 16, 20246 minute read

What type of API does Frame.io provide?

Based on the search results provided, Frame.io appears to have a REST API. The documentation refers to common REST concepts like rate limiting, pagination, versioning, and HTTP methods.

API Type

Frame.io has a REST API.

Key Features

  • The API allows developers to handle common tasks like adding files/folders, uploading content, and managing teams.
  • It supports rate limiting, pagination for resource collections, versioning, and error handling.
  • The API uses JSON or XML as the data format.

Authentication

  • Authentication is done using API tokens.
  • Developers can generate an API token through the Frame.io Developer Portal.

SDKs and Tools

  • Frame.io offers official SDKs, including a Python SDK available on PyPI.
  • There's also a Python CLI tool called FIOCTL.
  • The API can be easily explored using Postman.

Best Practices

  1. Use the provided SDKs when available to simplify API usage.
  2. Be aware of rate limits to avoid exceeding them.
  3. Handle pagination properly when working with resource collections.
  4. Use appropriate error handling, as the API returns standard HTTP error codes.

Summary

Frame.io provides a REST API that follows common REST principles. It offers authentication via tokens, supports multiple data formats, and provides SDKs to simplify integration. Developers should be mindful of rate limits and pagination when working with the API.

Does the Frame.io API have webhooks?

Yes, the official Frame.io API does have webhooks. Here are the key points about Frame.io's webhook functionality:

Webhook Support

Frame.io provides webhooks that allow you to receive notifications about events occurring within the Frame.io platform.

Supported Events

You can subscribe to various types of events using Frame.io webhooks. Some of the supported event types include:

  • Projects:

    • project.created
    • project.updated
    • project.deleted
  • Assets:

    • asset.created
    • asset.updated
    • asset.deleted
    • asset.copied
    • asset.moved
    • asset.label.updated
    • asset.versioned
  • Comments:

    • comment.created
    • comment.updated
    • comment.deleted
  • Review Links:

    • review_link.created
    • review_link.updated
    • review_link.deleted
  • Collaborators:

    • collaborator.created
    • collaborator.updated
    • collaborator.deleted
  • Team Members:

    • team_member.created
    • team_member.updated
    • team_member.deleted

Webhook Setup

To set up a webhook, you need to provide the following information:

  • Name - A descriptive name for the webhook (shown only on the developer site)
  • URL - The endpoint where events will be delivered
  • Team - The team for which this webhook will be added
  • Events - The specific event(s) that should trigger the webhook

Webhook Payload

When an event occurs, Frame.io sends a JSON payload to the specified webhook endpoint. The payload includes information such as:

  • Event type
  • Resource type and ID
  • User ID who triggered the event
  • Team ID context for the resource

Security

Frame.io provides a signing key for each webhook to verify that the request originates from Frame.io. This helps protect against man-in-the-middle and replay attacks.

Best Practices

  • Verify webhook signatures to ensure the authenticity of the payload.
  • Use the provided timestamp to prevent replay attacks by verifying it's within an acceptable time range.
  • Make follow-up API requests if you need additional information beyond what's provided in the webhook payload.

By utilizing webhooks, you can build automated workflows and integrations that react to events occurring within the Frame.io platform.

Rate Limits and other limitations

Here are the key points about the API Rate Limits of the Frame.io API:

General Rate Limiting

  • All API calls to Frame.io are rate limited, regardless of authentication method (Developer Token, OAuth, etc.) [1][2][3]
  • Rate limits apply across all API requests from an individual user [2][3]
  • Limits are depleted and refilled progressively using a "leaky bucket" strategy [2][3]
  • Rate limit information is reflected in response headers for every API request [2][3]

Specific Limits

  • The default limit for a token is 50 calls per second [1]
  • Limits vary by endpoint, ranging from 10 requests/minute to 100 requests/second [2][3]
  • Examples of specific limits:
    • Asset creation: 5 requests per second [2]
    • Asset updates: 10 requests per second [2]
    • Team member creation: 100 requests per minute [2]
    • Search: 200 requests per minute [2]

Rate Limit Headers

Responses include these headers [2][3]:

  • x-ratelimit-limit: The rate limit for the resource path
  • x-ratelimit-remaining: Number of requests remaining in the current window
  • x-ratelimit-window: Time window for the limits in milliseconds

Handling Rate Limits

  • Requests exceeding the rate limit receive a 429 HTTP error [1][2][3]
  • Recommended strategy is exponential backoff:
    1. Pause for a period (e.g. 1 second) on receiving a 429
    2. If another 429 is received, exponentially increase the wait period [3]

Best Practices

  • Monitor the rate limit headers to stay within limits
  • Implement exponential backoff for handling 429 errors
  • Consider using the official Python SDK which handles rate limiting [3]

The Frame.io API uses a sophisticated rate limiting system that varies by endpoint. Developers should monitor the provided headers and implement proper error handling to work within these limits.

Latest API Version

Based on the search results provided, here are the key points about the most recent version of the Frame.io API:

Current API Version

The most recent version of the Frame.io API is version 2.0.0.

Key Points

  • The current API endpoint is https://api.frame.io/v2/.
  • Frame.io offers official SDKs, including a Python SDK available on PyPI (pip install frameioclient).
  • There's also a Python CLI tool called FIOCTL available on PyPI.

API Features and Functionality

  • The API allows developers to handle common tasks like adding existing files or folders to Frame.io, uploading new content, and managing teams.
  • It supports Camera to Cloud (C2C) integrations for devices generating data.
  • The API uses rate limiting, with limits varying across different resource paths.

Best Practices

  1. Use Bearer Token authentication for API requests.
  2. Pay attention to rate limits, which are reflected in response headers.
  3. Handle common error codes (401, 403, 404, 429, 500) appropriately.
  4. Use the provided SDKs or CLI tools for easier integration.

Important Note

It's worth noting that there is currently no developer API support for V4 Beta accounts. Users who have upgraded to V4 Beta will need to downgrade back to V3 to continue using any automations they've set up.

In summary, the most recent stable version of the Frame.io API is 2.0.0, with the endpoint https://api.frame.io/v2/. Developers should be aware of the rate limits, authentication requirements, and the lack of support for V4 Beta accounts when working with the API.

How to get a Frame.io developer account and API Keys?

To get a developer account for Frame.io to create an API integration, you need to follow these steps:

1. Create a Frame.io Account

If you don't already have one, you'll need to sign up for a Frame.io account:

  • Go to Frame.io and click "Sign Up Free".

2. Access the Developer Portal

Once you have a Frame.io account:

  • Sign into the Frame.io Developer Portal using your Frame.io credentials.

3. Create a Developer Token

To start using the API:

  1. On the Welcome screen, click the "Create a Token" button.
  2. Provide a description for your token to help you remember its purpose.
  3. Select the scopes (permissions) for your token. For initial testing, you can select all scopes.
  4. Click the "Create" button.
  5. Copy and securely store the token string presented. This is your new token, and it won't be shown again.

4. Test Your Token

To ensure your token is working:

  • Make a test API call using cURL or a programming language of your choice.

Example using cURL:

curl -H "Authorization: Bearer <YOUR_TOKEN>" https://api.frame.io/v2/me

What can you do with the Frame.io API?

Based on the search results provided, here is a list of data models that can be interacted with using the Frame.io API, along with what is possible for each:

Projects

  • View and manage projects
  • Organize media within projects
  • Connect devices to specific projects

Assets

  • Upload new media (video, audio, data)
  • Traverse directories to view and download media
  • Retrieve and manage comments on assets
  • Organize assets using tokenized filepaths based on metadata

Users and Teams

  • Manage team members and permissions
  • Add or remove members or admins

Devices

  • Register and manage C2C (Camera to Cloud) hardware devices
  • Update device firmware versions
  • Configure device models and supported features
  • Manage device authorization and connection to Frame.io

Comments

  • Retrieve comments on assets
  • Add new comments

Webhooks

  • Create event triggers for actions like new file uploads or asset approvals

Custom Actions

  • Set up custom workflow automations

Uploads

  • Pause and resume uploads from the Frame.io UI
  • Manage upload controls for C2C devices

Metadata

  • Add and retrieve metadata for assets

Folders

  • Create and manage folder structures

Accounts

  • Manage account settings and information
  • Create and manage review links for sharing

It's worth noting that the specific capabilities and endpoints available may vary depending on the type of integration (general API vs. C2C API) and the permissions granted to the API token or application. The Frame.io API documentation would provide more detailed information on the exact operations possible for each data model.